[Haskell-cafe] What is the state of the art in testing code generation?

Vo Minh Thu noteed at gmail.com
Mon Jul 14 09:26:14 UTC 2014


Hi Tom,

I think there is still some opportunity for something like QuickCheck
in your case. Certainly you can use QC to generate
expressions/statements in your EDSL. Then if you can also generate
schemas and data you should be able to write down some properties, for
instance that some class of queries on empty tables should return no
rows.

A special case of this, and a more specific example, is very similar
to the introductory examples to QC: it must be possible to retrieve a
row after inserting it in an empty table, or deleting it after
inserting it must leave the table unchanged.

Even if you don't go as far as writing properties that involves the
schema/data generation, generating arbitrary valid AST that must
compile successfully to SQL is interesting.

HTH,
Thu

2014-07-11 19:58 GMT+02:00 Tom Ellis
<tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk>:
> I am implementing an EDSL that compiles to SQL and I am wondering what is
> the state of the art in testing code generation.
>
> All the Haskell libraries I could find that deal with SQL generation are
> tested by implementing multiple one-off adhoc queries and checking that when
> either compiled to SQL or run against a database they give the expected,
> prespecified result.
>
>  * https://github.com/prowdsponsor/esqueleto/blob/master/test/Test.hs
>  * https://github.com/m4dc4p/haskelldb/blob/master/test/TestCases.hs
>  * https://github.com/yesodweb/persistent/blob/master/persistent-test/SumTypeTest.hs
>
> I couldn't find any tests for groundhog.
>
>  * https://github.com/lykahb/groundhog
>
> I also had a look at Javascript generators.  They take a similar adhoc,
> one-off approach.
>
>  * https://github.com/valderman/haste-compiler/tree/master/Tests
>  * https://github.com/faylang/fay/tree/master/tests
>
> Is this the best we can do in Haskell?  Certainly it seems hard to use a
> QuickCheck/SmallCheck approach for this purpose.  Is there any way this kind
> of testing can be automated or made more robust?
>
> Thanks,
>
> Tom
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe


More information about the Haskell-Cafe mailing list