On Thu, Sep 29, 2011 at 6:43 PM, Iustin Pop <[email protected]> wrote:

> On Thu, Sep 29, 2011 at 06:01:20PM +0200, Agata Murawska wrote:
> > On Mon, Sep 26, 2011 at 11:57 AM, Iustin Pop <[email protected]> wrote:
> > > This makes error message change from "Test 4 failed …" to "Test
> > > prop_Loader_mergeData failed", which is much more readable. It also
> > > removes the duplication of test suite names in the test.hs file.
> > > ---
> > >  htools/Ganeti/HTools/QC.hs       |  194
> +++++++++++++++++++-------------------
> > >  htools/Ganeti/HTools/QCHelper.hs |   47 +++++++++
> > >  htools/test.hs                   |   64 +++++++------
> > >  3 files changed, 178 insertions(+), 127 deletions(-)
> > >  create mode 100644 htools/Ganeti/HTools/QCHelper.hs
> > > +testSuite :: String -> [Name] -> Q [Dec]
> > > +testSuite tsname tdef = do
> > > +  let fullname = mkName $ "test" ++ tsname
> > > +  tests <- mapM (\n -> [| (run $(varE n), $(litE (StringL (nameBase
> n)))) |])
> > > +           tdef
> > > +  sigtype <- [t| (String, [(Args -> IO Result, String)]) |]
> > > +  return $ [ SigD fullname sigtype
> > > +           , ValD (VarP fullname) (NormalB (TupE [LitE (StringL
> tsname),
> > > +                                                  ListE tests])) []
> > > +           ]
>
> > This I find little hard to read, because of the brackets (especially
> > tests <- ..). And yes, I am a huge fan of '.' and '$' ;)
>
> I changed tests <-, but I can't change the ValD … because there are (
> interspersed with [, and hence a direct conversion to point-free style
> won't work here. Suggestions welcome, in the meantime the interdiff is:
>
The only reasonable-ish idea I have uses let to get rid of the  [..]  part


>
>
> diff --git a/htools/Ganeti/HTools/QCHelper.hs
> b/htools/Ganeti/HTools/QCHelper.hs
> index 5057b5f..cabf88c 100644
> --- a/htools/Ganeti/HTools/QCHelper.hs
> +++ b/htools/Ganeti/HTools/QCHelper.hs
> @@ -38,7 +38,7 @@ run = flip quickCheckWithResult
>  testSuite :: String -> [Name] -> Q [Dec]
>  testSuite tsname tdef = do
>    let fullname = mkName $ "test" ++ tsname
> -  tests <- mapM (\n -> [| (run $(varE n), $(litE (StringL (nameBase n))))
> |])
> +  tests <- mapM (\n -> [| (run $(varE n), $(litE . StringL . nameBase $
> n)) |])
>            tdef
>    sigtype <- [t| (String, [(Args -> IO Result, String)]) |]
>    return $ [ SigD fullname sigtype
>
> --
> iustin
>
LGTM

Reply via email to