cvs commit: hugs98/src/unix configure configure.in hugs98/tests .cvsignore runstdtest testScript.in hugs98/tests/demos Loaded.output hugs98/tests/libs Addr.input Addr.output FixIO.input FixIO.lhs FixIO.output HugsLibs.output Loaded.output ...

reid 2001/04/07 12:09:24 PDT Modified files: src/unix configure configure.in Added files: tests .cvsignore runstdtest testScript.in tests/demos Loaded.output tests/libs Addr.input Addr.output FixIO.input FixIO.lhs FixIO.output HugsLibs.output Loaded.output complex1.input complex1.output intTest.hs intTest.input intTest.output list1.hs list1.input list1.output system1.hs system1.input system1.output tests/misc DictHW.hs T1.hs T4.hs T6.hs gc.hs gc1.input gc1.output gc2.input gc2.output ioerror1.hs ioerror1.input ioerror1.output ioerror2.hs ioerror2.input ioerror2.output iohandle.hs iohandle.input iohandle.output iohandle.tst mutvars.hs mutvars.input mutvars.output mvar.hs mvar.input mvar.output ptrEq.hs ptrEq.input ptrEq.output refs.hs refs.input refs.output runst.hs testDebug.hs testcvar.hs unwritable.tst tests/rts arith.hs arith.input arith.output array1.input array1.output array2.hs array2.input array2.output arrayEx.hs arrayEx.input arrayEx.output arrayt.hs bignums.hs bignums.input bignums.output catch.hs catch.input catch.output catch2.hs catch2.output enum.hs enum.input enum.output enum.output1 enum.output2 infix.hs infix.input infix.output maxint.hs maxint.input maxint.output ord.hs ord.input ord.output print.hs print.input print1.output print2.output read.hs read.input read.output testlist.hs testlist.input testlist.output tests/static Loaded.output T1.hs T2.hs T2.output T3.hs T3.output T6.hs T7.hs export1.hs export1.output mod1.hs mod1.output mod10.hs mod10.output mod11.hs mod11.output mod12.hs mod12.output mod13.hs mod13.output mod14.hs mod14.output mod15.hs mod15.output mod16.hs mod16.output mod17.hs mod17.output mod18.hs mod18.output mod19.hs mod19.output mod2.hs mod2.output mod20.hs mod20.output mod21.hs mod21.output mod22.hs mod22.output mod23.hs mod23.output mod24.hs mod24.output mod25.hs mod25.output mod26.hs mod26.output mod27.hs mod27.output mod28.hs mod28.output mod29.hs mod29.output mod3.hs mod3.output mod30.hs mod30.output mod31.hs mod31.output mod32.hs mod32.output mod33.hs mod33.output mod34.hs mod34.output mod35.hs mod35.output mod36.hs mod36.output mod37.hs mod37.output mod38.hs mod38.output mod39.hs mod39.output mod4.hs mod4.output mod40.hs mod40.output mod41.hs mod41.output mod42.hs mod42.output mod43.hs mod43.output mod44.hs mod44.output mod45.hs mod45.output mod46.hs mod46.output mod47.hs mod47.output mod48.hs mod48.output mod49.hs mod49.output mod5.hs mod5.output mod50.hs mod50.output mod51.hs mod51.output mod52.hs mod52.output mod53.hs mod53.output mod54.hs mod54.output mod55.hs mod55.output mod56.hs mod56.output mod57.hs mod57.output mod58.hs mod58.output mod59.hs mod59.output mod6.hs mod6.output mod60.hs mod60.output mod61.hs mod61.output mod62.hs mod62.output mod63.hs mod63.output mod64.hs mod64.output mod65.hs mod65.output mod66.hs mod66.output mod67.hs mod67.output mod68.hs mod68.output mod69.hs mod69.output mod7.hs mod7.output mod70.hs mod70.output mod71.hs mod71.output mod72.hs mod72.output mod73.hs mod73.output mod74.hs mod74.output mod75.hs mod75.output mod76.hs mod76.output mod77.hs mod77.output mod78.hs mod78.output mod79.hs mod79.output mod8.hs mod8.output mod80.hs mod80.output mod81.hs mod81.output mod82.hs mod82.output mod83.hs mod83.output mod84.hs mod84.output mod85.hs mod85.output mod86.hs mod86.output mod87.hs mod87.output mod88.hs mod88.output mod89.hs mod89.output mod9.hs mod9.output mod90.hs mod90.output mod91.hs mod91.output mod92.hs mod92.output mod93.hs mod93.output mod94.hs mod94.output mod95.hs mod95.output mod96.hs mod96.output mod97.hs mod97.output mod98.hs mod98.output qual1.hs qual1.output qual2.hs qual2.output qual3.hs qual3.output qual4.hs qual4.output qual5.hs qual5.output syntax.hs syntax.output tests/tcheck DictHW.input DictHW.output DictHW1.hs DictHW2.hs TyErr.hs TyErr.output dicts.hs dicts.input dicts.output monad.hs monad.output ty1.hs ty1.output ty2.hs ty2.output types.hs types.output Log: Added the old testsuite from the Yale releases. Beats me why this was deleted from the OGI release. What were they thinking? To run tests: cd hugs98/src/unix ./configure cd .. make hugs cd ../tests sh ./testScript static tcheck rts libs demos Once you get bored of seeing all the successful tests (yahoo!), you can use this to restrict output to the failures: sh ./testScript static tcheck rts libs demos | grep -v '^--' [If I remember correctly, configuring with readline doesn't work. Also note that you have to rerun configure to build tests/testScript.] About the test harness ~~~~~~~~~~~~~~~~~~~~~~ The test harness is very portable. It even runs on Windows though you have to install perl and cygwin to be able to run the tests. The core of the test harness is the program runstdtest - a hacked up version of a similar script from the GHC distro. This runs Hugs over some input and compares the output against a file containing the "correct" output. Hugs generates a bunch of noise (banners, list of modules being loaded, etc.) before generating the interesting part of the output so we tell runstdtest to ignore the first N lines of output using the -s<N> flag. If you change the length of the banner or the module structure you will have to change all these -s flags (this is a bit tedious - better solutions welcome). About the test suite ~~~~~~~~~~~~~~~~~~~~ The testsuite itself is a little out of date. There was a time when it checked every single error in static.c but this is probably not true now. In particular, there are no tests which check the +98 errors. I have updated the sample output files to match current output except in cases where it wasn't clear if the current output was an error or intended behaviour. Here's a list of the potential errors that may need to be fixed. ---------------------------------------------------------------- Hugs used to detect an error in static/mod39.hs and no longer does. I don't know if this is kosher. ./../src/hugs +q -pHugs: static/mod39.hs < /dev/null expected stdout not matched by reality *** static/mod39.output Fri Apr 6 18:05:40 2001 --- /tmp/runtest14605.3 Sat Apr 7 12:18:34 2001 *************** *** 1,2 **** ! ERROR static/mod39.hs:3 - Illegal constraints on class variable "a" in type of member function "f" Hugs:[Leaving Hugs] --- 1,6 ---- ! ! Hugs session for: ! ../lib/Prelude.hs ! static/mod39.hs ! Type :? for help Hugs:[Leaving Hugs] ---------------------------------------------------------------- Parentheses have been added in this error message. I guess that's ok. ./../src/hugs +q -pHugs: static/mod61.hs < /dev/null expected stdout not matched by reality *** static/mod61.output Fri Apr 6 18:05:40 2001 --- /tmp/runtest14914.3 Sat Apr 7 12:18:38 2001 *************** *** 1,2 **** ! ERROR static/mod61.hs:3 - Ambiguous use of operator "==" with "==" Hugs:[Leaving Hugs] --- 1,2 ---- ! ERROR static/mod61.hs:3 - Ambiguous use of operator "(==)" with "(==)" Hugs:[Leaving Hugs] ---------------------------------------------------------------- Hugs used to report an error in mod75.hs. This module refers to a local variable by its qualified name. I'm not sure if this is legal in Haskell'98 ./../src/hugs +q -pHugs: static/mod75.hs < /dev/null expected stdout not matched by reality *** static/mod75.output Fri Apr 6 18:05:40 2001 --- /tmp/runtest15111.3 Sat Apr 7 12:18:41 2001 *************** *** 1,2 **** ! ERROR static/mod75.hs:3 - Undefined qualified variable "M.f" Hugs:[Leaving Hugs] --- 1,6 ---- ! ! Hugs session for: ! ../lib/Prelude.hs ! static/mod75.hs ! Type :? for help Hugs:[Leaving Hugs] ---------------------------------------------------------------- tcheck/DictHW{1,2}.hs and tcheck/DictHW.input check for an old (fixed) error in the manipulation of dictHw when a module compilation aborts due to a type error. I'm a little surprised by the change in the error message. It doesn't look like unresolved top-level overloading to me. It looks like Int not being an instance of Fractional. ./../src/hugs -w +q -pHugs: < tcheck/DictHW.input expected stdout not matched by reality *** tcheck/DictHW.output Sat Apr 7 12:05:25 2001 --- /tmp/runtest15588.3 Sat Apr 7 12:18:49 2001 *************** *** 1,3 **** Hugs:Hugs:Reading file "DictHW.hs": ! ERROR DictHW.hs:4 - Int is not an instance of class "Fractional" Hugs:Hugs:Reading file "DictHW.hs": --- 1,6 ---- Hugs:Hugs:Reading file "DictHW.hs": ! ERROR DictHW.hs:4 - Unresolved top-level overloading ! *** Binding : g ! *** Outstanding context : Fractional Int ! Hugs:Hugs:Reading file "DictHW.hs": ---------------------------------------------------------------- If you use "show" to print data constructors, you get the expected output: True, False, Just 42, etc. But if you use the builtin printer ('hugs -u' or in error messages), the constructors are prefixed by the name of the type: Bool_True, Bool_False, Maybe_Just 42, etc. Is this better? Do we want this behaviour in both the generic printer and in error messages? Do we care? ./../src/hugs +q -pHugs: -u rts/print.hs < rts/print.input expected stdout not matched by reality *** rts/print1.output Fri Oct 10 14:45:19 1997 --- /tmp/runtest15633.3 Sat Apr 7 12:18:51 2001 *************** *** 60,63 **** Hugs:[1] ! Hugs:True ! Hugs:False Hugs:('a','b') --- 60,63 ---- Hugs:[1] ! Hugs:Bool_True ! Hugs:Bool_False Hugs:('a','b') *************** *** 67,72 **** ! Hugs:R 1 ! Hugs:L 'a' ! Hugs:J True ! Hugs:N Hugs:[Leaving Hugs] --- 67,72 ---- ! Hugs:E_R 1 ! Hugs:E_L 'a' ! Hugs:M_J Bool_True ! Hugs:M_N Hugs:[Leaving Hugs] --!!! Testing top level printer (note that this doesn't necessarily test show) ./../src/hugs +q -pHugs: -u -f rts/print.hs < rts/print.input expected stdout not matched by reality *** rts/print2.output Tue Apr 21 16:20:03 1998 --- /tmp/runtest15648.3 Sat Apr 7 12:18:52 2001 *************** *** 39,42 **** Hugs:[1] ! Hugs:True ! Hugs:False Hugs:('a','b') --- 39,42 ---- Hugs:[1] ! Hugs:Bool_True ! Hugs:Bool_False Hugs:('a','b') *************** *** 44,49 **** Hugs:(1,{error "foo"},3) ! Hugs:R 1 ! Hugs:L 'a' ! Hugs:J True ! Hugs:N Hugs:[Leaving Hugs] --- 44,49 ---- Hugs:(1,{error "foo"},3) ! Hugs:E_R 1 ! Hugs:E_L 'a' ! Hugs:M_J Bool_True ! Hugs:M_N Hugs:[Leaving Hugs] --!!! Testing top level printer (note that this doesn't necessarily test show) ./../src/hugs +q -pHugs: -u rts/enum.hs < rts/enum.input expected stdout not matched by reality *** rts/enum.output1 Fri Apr 6 20:16:12 2001 --- /tmp/runtest15663.3 Sat Apr 7 12:18:53 2001 *************** *** 9,14 **** Hugs: ! Program error: {_ToEnum C1 (-1)} Hugs: ! Program error: {_ToEnum C1 7} --- 9,14 ---- Hugs: ! Program error: {_ToEnum T_C1 (-1)} Hugs: ! Program error: {_ToEnum T_C1 7} *************** *** 17,22 **** Hugs: ! Program error: {_ToEnum C1 7} Hugs: ! Program error: {_ToEnum C1 (-1)} --- 17,22 ---- Hugs: ! Program error: {_ToEnum T_C1 7} Hugs: ! Program error: {_ToEnum T_C1 (-1)} --!!! Testing Enum ./../src/hugs +q -pHugs: -u rts/infix.hs < rts/infix.input expected stdout not matched by reality *** rts/infix.output Fri Oct 10 14:43:41 1997 --- /tmp/runtest15678.3 Sat Apr 7 12:18:53 2001 *************** *** 1,2 **** ! Hugs:Scale (Note :+: Note) Hugs:"Scale (Note :+: Note)" --- 1,2 ---- ! Hugs:Music_Scale (Music_Note Music_:+: Music_Note) Hugs:"Scale (Note :+: Note)" --!!! Testing the printing of infix constructors ./../src/hugs +q -pHugs: +u rts/enum.hs < rts/enum.input expected stdout not matched by reality *** rts/enum.output2 Fri Apr 6 20:15:15 2001 --- /tmp/runtest15693.3 Sat Apr 7 12:18:54 2001 *************** *** 9,14 **** Hugs:" ! Program error: {_ToEnum C1 (-1)} Hugs:" ! Program error: {_ToEnum C1 7} --- 9,14 ---- Hugs:" ! Program error: {_ToEnum T_C1 (-1)} Hugs:" ! Program error: {_ToEnum T_C1 7} *************** *** 17,22 **** Hugs:" ! Program error: {_ToEnum C1 7} Hugs:" ! Program error: {_ToEnum C1 (-1)} --- 17,22 ---- Hugs:" ! Program error: {_ToEnum T_C1 7} Hugs:" ! Program error: {_ToEnum T_C1 (-1)} Revision Changes Path 1.7 +4 -4 hugs98/src/unix/configure 1.7 +3 -3 hugs98/src/unix/configure.in
participants (1)
-
Alastair Reid