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
