diff options
Diffstat (limited to '2021/talks/test.md')
-rw-r--r-- | 2021/talks/test.md | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/2021/talks/test.md b/2021/talks/test.md new file mode 100644 index 00000000..9165e7b6 --- /dev/null +++ b/2021/talks/test.md @@ -0,0 +1,62 @@ +[[!meta title="Test blocks"]] +[[!meta copyright="Copyright © 2021 Eduardo Ochs"]] +[[!inline pages="internal(2021/info/test-nav)" raw="yes"]] + +<!-- You can manually edit this file to update the abstract, add links, etc. ---> + + +# Test blocks +Eduardo Ochs + +[[!inline pages="internal(2021/info/test-schedule)" raw="yes"]] + +In this presentation I will show an idea that feels completely obvious +once we see it, but that only occured to me after after using Emacs +and eev as my main interface to the computer for more than 20 years. +Take any interpreted language that supports multi-line comments, and +whose interpreter can be run in an Emacs buffer - for example Lua, +Haskell, Python, or Julia; let's say just "Lua" from here on for +simplicity. So: suppose that we have a Lua script that we wrote, that +is called "foo.lua" and that defines lots of functions and defines the +classes Bar and Bletch. We can put after the definition of the class +Bar a multi-line comment that contains an eepitch block that when +executed starts a Lua interpreter, loads the script foo.lua (by +running 'dofile "foo.lua"'), and then has several tests for that class +and its methods; and we can put another block with tests like that +after the class Bletch, and other blocks after some functions. Eepitch +allows sending these tests line by line to the Lua interpreter by +typing <f8> on each line that we want to send, and this lets us create +tests that are very easy to understand even without writing comments; +this gives us a very quick way to document code by executable tests, +that is super-great for experimental code that is still going to +change a lot before running the risk of being read by other people. + +These multi-line comments with eepitch blocks that run an interpreter +and make it load the current file are called "test blocks". The +command `M-x eeit' inserts a test block at point, using the major mode +to decide the right syntax to use for the multi-line comments and for +the "dofile". We can configure the syntax of the test blocks for the +current major mode by running `M-x find-eeit-links'; this can also be +used to add support for test blocks to more languages (or, more +precisely: to more major modes). + +Eduardo Ochs <http://angg.twu.net/emacsconf2021.html> + +# Discussion + +IRC nick: edrx + +- I love the slide annotations! They are really nice. :-) +- Love the Racket's (module+ ...) but this test blocks are interesting too... +- looks like eev should be using eieio to me :) +- am I the only person who never heard of eev before this talk and now has a million uses for it? I've wanted this thing for ages + - You're in luck! You can check EmacsConf 2019 and 2020 for more eev goodness. + - that happens every time edrx does a talk on eev! + - <https://emacsconf.org/2019/talks/27/> +- does language support take a lot of work, or did I miss you relying on a different package that handles that? +- Cool! So this is kind of like a generic version of Python's doctests? (https://docs.python.org/3/library/doctest.html) + - edrx: I don't think so... is it possible to run python's doctests line by line? Also, see this: https://www.youtube.com/watch?v=QUMo7vgkHJI#t=6m36s - we can change the tests on the fly... + +[[!inline pages="internal(2021/captions/test)" raw="yes"]] + +[[!inline pages="internal(2021/info/test-nav)" raw="yes"]] |