Update README.
catseye
13 years ago
0 | 0 | Falderal |
1 | 1 | ======== |
2 | 2 | |
3 | Falderal is a framework for writing, running, and formatting "doctest"-like | |
4 | literate test suites for Haskell functions. It is particularly suited for | |
5 | testing and documenting functions which interpret or compile programming | |
6 | languages -- especially esoteric ones. | |
3 | Falderal is a file format for literate test suites. It is particularly | |
4 | suited for testing and documenting functions which interpret or compile | |
5 | programming languages. The dumbed-down sound-bite version: "doctests for | |
6 | DSLs". `Test.Falderal` is the reference implementation, in Haskell, of | |
7 | tools for formatting and running tests written in Falderal. | |
7 | 8 | |
8 | Here's the situation: | |
9 | Here's the scenario: | |
9 | 10 | |
10 | * You have a Haskell program, formatted in literate Haskell. | |
11 | * You have some Haskell functions which take Strings to Strings. | |
12 | * You have some unit tests for those functions that you want to present in | |
13 | a nicely readable fashion, possibly included right in the literate Haskell | |
14 | source. | |
11 | * You have a file format, or a language (perhaps a programming language) | |
12 | and some rules for processing it (interpreting it, compiling it, etc.) | |
13 | * You have functions written (currently) in Haskell which implement these | |
14 | rules. | |
15 | * You have some tests for those rules (e.g. program A always produces | |
16 | output B) that you want to present in a nicely readable fashion, | |
17 | possibly included right in your literate programming source file. | |
15 | 18 | |
16 | 19 | If this describes you, then Falderal might help. The particular need I had |
17 | 20 | that encouraged me to write it is having implemented several esoteric |
21 | 24 | History |
22 | 25 | ------- |
23 | 26 | |
24 | The current released version of Falderal is 0.2. It introduced the following | |
27 | The current released version of Falderal is 0.3. It introduced the following | |
28 | features: | |
29 | ||
30 | * The definition of a Falderal Literate Test Format, distinct from the | |
31 | reference implementation of tools for it in Haskell (`Test.Falderal`). | |
32 | * The ability to format a Falderal file to different formats, including | |
33 | Markdown and Haskell. | |
34 | * Running tests is now a matter of formatting a Falderal file as a Haskell | |
35 | module and running the function `testModule` in that module. | |
36 | ||
37 | The previous released version of Falderal is 0.2. It introduced the following | |
25 | 38 | features: |
26 | 39 | |
27 | 40 | * Added a test harness for Falderal itself, in the form of a simple shell |
36 | 49 | * Fixed a bug where exception text which extended over multiple lines |
37 | 50 | could not be expected correctly. |
38 | 51 | |
39 | The previous released version of Falderal is 0.1. It introduced the following | |
40 | features: | |
41 | ||
42 | * Provision of a framework for writing and running literate tests which may | |
43 | be embedded in literate Haskell source code. | |
44 | * Testing Haskell functions of type String -> String. A test specifies input | |
45 | to the function, and may expect a particular output, or that a particular | |
46 | exception is thrown. | |
47 | * Through simple adapters, testing functions of other types such as | |
48 | (Show a) => String -> a. | |
49 | ||
50 | The current version under development is 0.3. It will likely mark the | |
51 | start of a transition away from being specific to Haskell, and thus will | |
52 | involve a few very significant changes. | |
52 | The current version under development is 0.4. It will likely expand upon the | |
53 | potential language-independence that was introduced here by including | |
54 | formatters for other languages, such as Python functions and shell commands. | |
55 | It will likely also attempt to make the usage simpler, possibly by providing | |
56 | an executable front-end, possibly also by being a Cabal package. | |
53 | 57 | |
54 | 58 | The API should not be expected to be stable through the 0.x series. |
55 | 59 |