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 ...

Alastair Reid reid@glass.cse.ogi.edu
Sat, 7 Apr 2001 12:09:24 -0700


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