Fix up wording in README.
catseye
10 years ago
20 | 20 | about what should happen when they are run (possibly including producing |
21 | 21 | an error.) |
22 | 22 | * You want to be able to present those example programs in a nicely readable |
23 | fashion, perhaps interleaved with some descriptive prose, perhaps | |
23 | fashion, interleaved with some descriptive prose, perhaps ultimately | |
24 | 24 | formatted into a document format such as HTML. (This is certainly a |
25 | 25 | reasonable way to document a language; most people are good at learning |
26 | 26 | from examples.) |
27 | 27 | * You want to run those example programs to make sure they do what you |
28 | 28 | expect, to find flaws that may be lurking in either those programs, or in |
29 | 29 | an implementation of the language. |
30 | * You want to be able to embed those example programs and that documentation | |
31 | in another source file, perhaps an implementation of the very language | |
32 | they describe in literate Haskell. | |
30 | * You want the option of embedding those example programs and that | |
31 | documentation in a source code file -- perhaps a literate implementation | |
32 | of the very language they are testing. | |
33 | 33 | |
34 | 34 | If this describes you, then Falderal might help. I wrote it because I was |
35 | designing yet another esoteric programming language, and while working on its | |
36 | test suite I realized I was rebuilding yet another ad-hoc unit test suite, | |
37 | like I had done a half-dozen times before. I didn't want to keep doing this | |
38 | for every language I designed, and I realized that literate test suites could | |
39 | serve as documentation as well; the result was Falderal. | |
35 | designing yet another esoteric programming language, and while working on it | |
36 | I realized I was rebuilding yet another ad-hoc unit test suite, like I had | |
37 | done a half-dozen times before. I didn't want to keep doing this for every | |
38 | language I designed, and I realized that literate test suites could serve as | |
39 | documentation as well; the result was Falderal. | |
40 | 40 | |
41 | 41 | Features |
42 | 42 | -------- |
43 | 43 | |
44 | 44 | The current version of Falderal is described in the Falderal Literate Test |
45 | 45 | Format document. The current version of `Test.Falderal` is 0.5 "The Loop". |
46 | Neither the file format specification, nor the `Test.Falderal` API, | |
47 | should not be expected to be stable through the 0.x series. | |
46 | Neither the file format specification, nor the `Test.Falderal` API, should | |
47 | be expected to be stable through the 0.x series. | |
48 | 48 | |
49 | 49 | Currently supported features of the framework are: |
50 | 50 | |
54 | 54 | * Formatting these test suites (i.e. converting them to other file formats, |
55 | 55 | such as Markdown). |
56 | 56 | * Running these test suites. Running is accomplished by formatting the tests |
57 | to an executable format (such as a Haskell source file) and running that; | |
58 | these two steps can be done automatically with the `falderal test` command. | |
57 | to an executable format (such as a Haskell source file), running that, | |
58 | and collecting the results from it. This sequence of steps is done | |
59 | automatically with the `falderal test` command. | |
59 | 60 | * Producing readable failure reports. Each test or group of test may be |
60 | 61 | preceded by descriptive text, and this will be displayed above every failing |
61 | 62 | test, along with the expected and actual output. |
63 | 64 | the function, and may expect a particular textual output, or that a |
64 | 65 | particular error was encountered. Functionalities are abstract: each |
65 | 66 | functionality defined in a Falderal file can be implemented in multiple |
66 | ways. | |
67 | ways. Thus the same tests can be run multiple times, once for each | |
68 | implementation of the functionality they test. | |
67 | 69 | * Specifying that a functionality is implemented by a Haskell function of |
68 | 70 | type `String -> String`. |
69 | 71 | * Specifying that a functionality is implemented by a shell command. The |