git @ Cat's Eye Technologies Falderal / rel_0_4
Updates for release of version 0.4. catseye 10 years ago
2 changed file(s) with 41 addition(s) and 46 deletion(s). Raw diff Collapse all Expand all
00 -- encoding: UTF-8
11 name: Falderal
2 version: 0.3
2 version: 0.4
33 cabal-version: >= 1.8
44 build-type: Simple
55 license: BSD3
1313 bug-reports: https://bitbucket.org/catseye/falderal/issues
1414 description:
1515 Falderal is a file format for literate test suites. It is particularly
16 suited for testing and documenting functions which interpret or compile
17 programming languages. Test.Falderal is a reference implementation for
18 tools that format or run tests written in Falderal.
16 suited for documenting programming languages (or other specifications of
17 ways to transform text) and testing their implementation(s) in a
18 language-agnostic fashion. Test.Falderal is a reference implementation,
19 written in Haskell, of tools for formatting and running Falderal tests.
1920
2021 library
2122 build-depends: base >= 4.0, haskell98
3940 Test.Falderal.Formatter
4041 Test.Falderal.Reporter.Standard
4142
42 -- test-suite test-falderal
43 -- type: exitcode-stdio-1.0
44 -- main-is: test-falderal.hs
45 -- build-depends: base
46
4743 source-repository head
4844 type: mercurial
4945 location: https://bitbucket.org/catseye/falderal
11 ========
22
33 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.
4 suited for documenting programming languages (or other specifications of
5 ways to transform text) and testing their implementation(s) in a
6 language-agnostic fashion. The dumbed-down sound-bite version: "doctests
7 for DSLs". `Test.Falderal` is the reference implementation, in Haskell,
8 of tools for formatting and running tests written in Falderal.
89
910 Here's the scenario:
1011
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.
12 * You have a file format, or a language (perhaps a programming language.)
13 Like all languages, it establishes a certain set of rules about its
14 syntax, semantics, and so forth.
15 * You have one or more implementations of this language.
16 * You have some example programs in this language, and some expectations
17 about what should happen when they are run (possibly including producing
18 an error.)
19 * You want to be able to present those example programs in a nicely readable
20 fashion, perhaps interleaved with some descriptive prose, perhaps
21 formatted into a document format such as HTML.
22 * You want to run those example programs to make sure they do what you
23 expect, to find flaws that may be lurking in either those programs, or in
24 an implementation of the language.
25 * You want to be able to embed those example programs and that documentation
26 in another source file, perhaps an implementation of the very language
27 they describe in literate Haskell.
1828
1929 If this describes you, then Falderal might help. The particular need I had
2030 that encouraged me to write it is having implemented several esoteric
2434 History
2535 -------
2636
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
38 features:
39
40 * Added a test harness for Falderal itself, in the form of a simple shell
41 script which diffs the output of Test.Falderal.Demo against a text file
42 containing the expected content.
43 * Improved formatting of failure reports. Multi-line input text or expected
44 output is always presented starting on its own line.
45 * Tests may be organized into groups; the entire group is preceded by some
46 literal text, but there is no literal text between the tests in the group.
47 When one of these tests fails, the literal text for the group is reported,
48 along with the number of the test within the group.
49 * Fixed a bug where exception text which extended over multiple lines
50 could not be expected correctly.
51
52 The current version under development is 0.4. It is introducing the
37 The current version under development is 0.4. It introduced the
5338 following features:
5439
5540 * For ease of installation, the project is presented as a Cabal package.
6247 * The Functionality-definition pragma has been implemented, making it
6348 possible to write tests in a more abstract, implementation-independent
6449 fashion.
50
51 The previous released version of Falderal was 0.3. It introduced the
52 following features:
53
54 * The definition of a Falderal Literate Test Format, distinct from the
55 reference implementation of tools for it in Haskell (`Test.Falderal`).
56 * The ability to format a Falderal file to different formats, including
57 Markdown and Haskell.
58 * Running tests is now a matter of formatting a Falderal file as a Haskell
59 module and running the function `testModule` in that module.
60
61 Falderal files written to work with Falderal 0.3 should still work with
62 Falderal 0.4, but you are encouraged to use the Functionality-definition
63 pragma introduced in 0.4 to make your tests more implementation-independent.
6564
6665 The API should not be expected to be stable through the 0.x series.
6766