[Haskell-beginners] Using "cabal test" and getting "cabal: Prelude.read: no parse"

Daniel King daniel.zidan.king at gmail.com
Tue May 27 03:12:00 UTC 2014


I don't call the `read' function in my source code anywhere. I do
derive `read' instances in my data definitions, but otherwise grep
finds no occurrences.

I'm fairly certain this is a bug in the testing framework, but I don't
know how to debug it further. The cabal compilation process seems to
produce a file at
"dist/build/MY_PACKAGE_NAME-testsStub/MY_PACKAGE_NAME-testsStub-tmp/MY_PACKAGE_NAME-testsStub.hs".
This file contains:

    module Main ( main ) where
    import Distribution.Simple.Test ( stubMain )
    import Tests ( tests )
    main :: IO ()
    main = stubMain tests

In the parent directory there is an executable,
"dist/build/MY_PACKAGE_NAME-testsStub/MY_PACKAGE_NAME-testsStub" which
appears to be the file which cabal executes when I call "cabal test".
I'm not sure how this executable is created but I suspect it comes
from the file I quoted above.

I'm beginning to suspect that the testing framework is not playing
well with something.

This is my test file: http://lpaste.net/104680

I'm using the detailed-0.9 "type" of test module, because the
detailed-1.0 "type" isn't present on my system. Is this the problem?
They seem to reference detailed-1.0 in this user guide I found for
Cabal: http://www.haskell.org/cabal/release/rc/doc/users-guide/#test-suites
. Though now, seeing the URL, it seems that the user guide might be
for a release candidate version of cabal? I found that page through
googling how to set up a test suite in Cabal.

Can someone point me at a different guide or tutorial? I tried this
(http://www.haskell.org/cabal/users-guide/) guide as well, but it
doesn't give any examples and barely references test suites at all.

On Mon, May 26, 2014 at 5:20 PM, Erik Price <erikprice at gmail.com> wrote:
> It's possible that you're calling the
>
>     read :: Read a => String -> a
>
> function somewhere with a parameter that the function doesn't know how to
> parse. I ran into this just today when I called
>
>     read "a string" :: String
>
> when what I needed to call was
>
>     read "\"a string\"" :: String
>
> e
>
>
> On Monday, May 26, 2014, Boris <Boris.Daix at gmail.com> wrote:
>>
>> Hello,
>>
>> Last time I got such an error, it was because I was using 'read' for a
>> type I had defined myself, deriving Read, but on something that was not
>> reelated to the type.  For instance:
>>
>> data Foo = Foo deriving (Read, Show)
>>
>> x :: Foo
>> x = read "Bar"
>>
>> Do you use read somwhere?
>>
>> HTH
>>
>> Daniel King <daniel.zidan.king at gmail.com> writes:
>>
>> > Hi all,
>> >
>> > I created a cabal project with the attached cabal file. I run:
>> >
>> >   cabal configure --enable-tests
>> >   cabal build
>> >   cabal test
>> >
>> > and then I get the error:
>> >
>> >   cabal: Prelude.read: no parse
>> >
>> > I'm not sure how to debug this any further. If I execute:
>> >
>> >   ./dist/build/scientific-pl-testsStub/scientific-pl-testsStub
>> >
>> > with any input I've tried (numbers, array notation, string notation,
>> > etc.) and I get that same error.
>> >
>> > I can post the whole project if that is helpful.
>> >
>> > Thanks for the debugging tips!
>> >
>> > The full log is:
>> >
>> > danking at spock # cabal configure --enable-tests
>> > Resolving dependencies...
>> > Configuring scientific-pl-0.1.0.0...
>> > danking at spock # cabal build
>> > Building scientific-pl-0.1.0.0...
>> > Preprocessing test suite 'scientific-pl-tests' for
>> > scientific-pl-0.1.0.0...
>> > [1 of 3] Compiling SPLData          ( SPLData.hs, dist/build/SPLData.o )
>> > [2 of 3] Compiling SPLEval          ( SPLEval.hs, dist/build/SPLEval.o )
>> > [3 of 3] Compiling Tests            ( tests/Tests.hs, dist/build/Tests.o
>> > )
>> > In-place registering scientific-pl-tests-0.1.0.0...
>> > [1 of 1] Compiling Main             (
>> >
>> > dist/build/scientific-pl-testsStub/scientific-pl-testsStub-tmp/scientific-pl-testsStub.hs,
>> > dist/build/scientific-pl-testsStub/scientific-pl-testsStub-tmp/Main.o
>> > )
>> > Linking dist/build/scientific-pl-testsStub/scientific-pl-testsStub ...
>> > Preprocessing executable 'scientific-pl' for scientific-pl-0.1.0.0...
>> > [1 of 3] Compiling SPLData          ( SPLData.hs,
>> > dist/build/scientific-pl/scientific-pl-tmp/SPLData.o )
>> > [2 of 3] Compiling SPLEval          ( SPLEval.hs,
>> > dist/build/scientific-pl/scientific-pl-tmp/SPLEval.o )
>> > [3 of 3] Compiling Main             ( Main.hs,
>> > dist/build/scientific-pl/scientific-pl-tmp/Main.o )
>> > Linking dist/build/scientific-pl/scientific-pl ...
>> > danking at spock # cabal test
>> > Running 1 test suites...
>> > Test suite scientific-pl-tests: RUNNING...
>> > cabal: Prelude.read: no parse
>> > 1 danking at spock #
>>
>> --
>> Boris Daix
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://www.haskell.org/mailman/listinfo/beginners
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>



-- 
Dan King


More information about the Beginners mailing list