File: README

package info (click to toggle)
kaya 0.4.2-4
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 4,448 kB
  • ctags: 1,694
  • sloc: cpp: 9,536; haskell: 7,461; sh: 3,013; yacc: 910; makefile: 816; perl: 90
file content (94 lines) | stat: -rw-r--r-- 3,340 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Tests
-----

The test choice is quite ad-hoc - they are intended to cover all
language features but some are more complex than others. Any programs
which expose language bugs should be added to the test suite
(preferably in some simplified form).

001: import public
002: Foreach loops, some higher order functions
003: Copying circular structures
004: Array initialisation
005: Mutually recursive data structures
006: URL encoding and decoding
007: Type inference error and regression
008: Structure field access
009: Multidimensional arrays
010: Global variables
011: Builtin functions
012: Arithmetic precedences
013: Tail recursion
014: Pass by reference
015: Dictionaries
016: Guarded definitions
017: Typed if expressions
018: Default function arguments
019: HTML Documents
020: Binary chunks
021: Implicit coercions
022: Sort, pass by reference, copying arrays.
023: Type synonyms.
024: More type synonyms, with complex/circular definitions.
025: Data type errors (add more!)
026: Boolean operators, shortcut evaluation
027: Syntactic sugar for array ranges
028: do...while loops
029: Uninitialised array elements
030: Simple logging
031: Partial application
032: Lambda lifting
033: Parser library
034: Lambda scoping and typechecking
035: Marshalling closures
036: Data structures, arrays, built-in equality
037: More dictionary functions, with user defined hash
038: Case analysis on constants and arrays
039: Check for substitutions behaviour
040: Test basic crypto library
041: Function name overloading (abs/join)
042: Overloaded functions as arguments to HOFs
043: Queue module
044: Var arguments and heap allocation
045: Partial application and laziness
046: HTML escaping and unescaping
047: Reflection and reification, with cycles in structures and pickling
048: Sets and Hash Sets (using Testing module for random test generation)
049: Reading and writing large files
050: Equality testing on circular structures.
051: New style exceptions
052: Circular modules via 'extern' function declarations
053: Constant propagation through if/case
054: List comprehensions
055: Function arguments requiring multiple temporary stack variables
056: Array operations, with lots of shuffling and reallocating
057: Program transformations (inlining, constant propagation)
058: Regressions in for loop optimisation and declaration adding
059: Regressions in infix tests
060: Generic traversals
061: Check variables modified inside 'try' do not get reset after 'throw'
062: Partial applications passing arguments correctly

How regression testing works
----------------------------

Each testnnn subdirectory includes at least two files:

* run, which is a script to run the test
* expected, which is the expected output of the test.

The script runtest.pl takes the name of the test to run (or "all") to
run all of them, and runs the "run" script in the test directory. If
the output matches the expected output, the test succeeds, otherwise
it fails.

runtest.pl has optional arguments:
* -s shows the actual output of a test script.
* -d shows the differences between the expected and actual output 
  of a test.
* -u updates the expected output to the current output. Check
  carefully before running this.

If any tests fail in a release, it should be considered a bug. Do not
make a release before ensuring that all tests succeed.