4

Possible Duplicate:
Outputting Haskell GHCi command results to a txt file

I am new to Haskell and I am trying to redirect test cases output results to a text file. The way it is set up now, is a AddAllTestCases.hs contains all the test cases I need to run in order to test a function I created. I run the test cases on GHCi by loading AddAllTestCases.hs and then simply typing main and hitting enter. That causes test case output results to print inside the GHCi perfectly.

Because there hundreds of test cases, I need to redirect output results to text file.

Attempt #1:

writeFile "myoutput.txt" $ show $ main

I get the following error:

No instance for (Show(IO())) arising from a use of show

Attempt #2 in CMD (trying to create an executable, then outputting executable results to text file):

ghc --make AddAllTests.hs -o testResults.exe

Which gives me the following error:

Warning: output was redirected with -o, but no output will be generated because there is no Min module

This is weird because when I am using GHCi (attempt #1) and I type in main it executes everything perfectly, which I would assume, implies that there is a main module?

I greatly appreciate any help with redirecting test case results to a text file.

Many thanks in advance!

Community
  • 1
  • 1
AnchovyLegend
  • 12,139
  • 38
  • 147
  • 231

1 Answers1

6

You need a Main module (and a main action) to produce an executable. You can rename your module to Main, or you can specify the module to be considered Main on the command line,

ghc --make -main-is AddAllTests AddAllTests.hs -o testResults.exe

to produce an executable without a module named Main.

A method without compiling would be

ghc AddAllTests.hs -e "main" > testResults.txt

Another method would be to have a file in which you just list all test cases,

3 + 2 :: Rational
reverse "foobar"
:q

and run ghci with redirected in- and output

ghci < testCases > testResults.txt
Daniel Fischer
  • 181,706
  • 17
  • 308
  • 431