packages feed

tasty-sugar 2.0.0.0 → 2.0.0.1

raw patch · 5 files changed

+71/−22 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,6 +1,15 @@ # Revision history for tasty-sugar -## 2.0+## 2.0.0.1 -- 2022-11-10++ * Fixed arithmetic underflow exception.  This only happened when an+   unconstrained parameter value was used and a subdirectory matched a+   constrained parameter value.++ * Fixed test group name for unconstrained parameters to use the actual parameter+   value (if available).++## 2.0 -- 2022-11-07   * Performance improvements.  Now scales better when there are more parameters. 
src/Test/Tasty/Sugar.hs view
@@ -99,7 +99,7 @@ import           Data.Function import qualified Data.List as L import qualified Data.Map as Map-import           Data.Maybe ( isJust, isNothing, fromJust )+import           Data.Maybe ( isJust, isNothing, fromJust, fromMaybe ) import           Data.Proxy import qualified Data.Text as T import           Data.Typeable ( Typeable )@@ -350,8 +350,17 @@       mkParams sweet exp [] = concat <$> (mapM (uncurry $ mkLeaf sweet) $ zip [1..] exp)       mkParams sweet exp ((name,vspec):ps) =         case vspec of-          Nothing -> do ts <- mkParams sweet exp ps-                        return [mkGroup name ts]+          Nothing ->+            let pVal = lookup name . expParamsMatch+                expSrt = L.sortBy (compare `on` pVal) exp+                expGrps = L.groupBy ((==) `on` pVal) expSrt+                f es =+                  let gn = fromMaybe (name <> " not specified")+                           $ (getParamVal =<<+                              (lookup name $ expParamsMatch $ head es)+                             )+                  in mkGroup gn <$> mkParams sweet es ps+            in sequence $ f <$> expGrps           Just vs -> let f v = mkGroup v <$> mkParams sweet (subExp v) ps                          subExp v = expMatching name v exp                      in sequence $ f <$> L.sort vs
src/internal/Test/Tasty/Sugar/Candidates.hs view
@@ -157,7 +157,7 @@ holes chkRange present =   let rmvKnown _ [] = []       rmvKnown p@(ps,pe) ((s,e):rs) =-        if abs(ps-s) <= 1+        if abs(fromEnum ps - fromEnum s) <= 1         then if pe > e              then rmvKnown (toEnum e,pe) rs              else if abs(pe-e) <= 1@@ -171,7 +171,8 @@                        else (s, fromEnum ps) : rmvKnown (toEnum e, pe) rs              else rmvKnown p rs       r' = filter (\x -> fst x /= snd x) chkRange-  in foldr rmvKnown (first toEnum <$> r') (DL.sort present)+      p' = filter (\(x,y) -> not $ and [ x == 0, y == 0 ]) present+  in foldr rmvKnown (first toEnum <$> r') (DL.sort p')   -- | This converts a CandidatFile into a regular FilePath for access
tasty-sugar.cabal view
@@ -1,7 +1,7 @@ cabal-version:       2.0  name:                tasty-sugar-version:             2.0.0.0+version:             2.0.0.1 synopsis:            Tests defined by Search Using Golden Answer References description:   .
test/TestParamsAssoc.hs view
@@ -13,7 +13,9 @@   sample :: CUBE -> [CandidateFile]-sample cube = fmap (makeCandidate cube testInpPath [])+sample cube = d1 <> d2+  where+    d1 = fmap (makeCandidate cube testInpPath [])          $ filter (not . null)          $ lines [r| recursive.rs@@ -49,7 +51,14 @@ epsilon.expct epsilon.clang.expct epsilon.y......expct+hole-here.exe+hole-here-gcc.expct |]+    d2 = fmap (makeCandidate cube testInpPath ["gcc"])+         $ filter (not . null)+         $ lines [r|+hole-here.c+|]   testInpPath = "test/params/samples"@@ -93,7 +102,6 @@       mkEr p = mkE' [ ("rust-source", p "recursive.rs") ] Assumed Assumed p       mkEc p f c = mkE' [ ("c-source", p "simple.c") ] Assumed Assumed p f (Explicit c)       mkEo cs p f c ca = mkE' [] cs ca p f c NotSpecified-      mkEq cs ca p f c = mkE' [] cs ca p f c       p = (testInpPath </>)       chkFld :: Eq a => Show a              => Maybe Sweets -> String -> (Sweets -> a) -> a -> TT.TestTree@@ -101,7 +109,7 @@       chkExp s g n f c o = testCase ("Exp #" <> show n)                            $ (safeElem n . expected =<< s)                            @?= Just (g f c o)-  in [ testCase "valid sample" $ 33 @=? length (sample sugarCube)+  in [ testCase "valid sample" $ 36 @=? length (sample sugarCube)       , TT.testGroup "candidates"        [@@ -142,11 +150,18 @@        , chkCandidate "epsilon.expct" []        , chkCandidate "epsilon.clang.expct" [("c-compiler", Explicit "clang")]        , chkCandidate "epsilon.y......expct" [("a param", Explicit "y")]+       , chkCandidate "hole-here.exe" [("optimization", Explicit "here")]+       , chkCandidate "hole-here-gcc.expct" [("c-compiler", Explicit "gcc")+                                            ,("optimization", Explicit "here")]+       , checkCandidate sugarCube sample testInpPath ["gcc"] 0 "hole-here.c"+         [("c-compiler", Explicit "gcc")+         ,("optimization", Explicit "here")+         ]        ] -     , sugarTestEq "correct found count" sugarCube sample 11 length+     , sugarTestEq "correct found count" sugarCube sample 12 length -     , let sweetNum = 5+     , let sweetNum = 6            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet@@ -161,7 +176,7 @@           , chkE 0 "recursive.fast.expct" (Assumed "gcc")   (Explicit "fast")           ] -     , let sweetNum = 8+     , let sweetNum = 9            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet@@ -179,7 +194,7 @@           , chkE 2 "simple.expct"     "clang" (Explicit "noopt")           ] -     , let sweetNum = 9+     , let sweetNum = 10            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet@@ -197,7 +212,7 @@           , chkE 2 "simple.noopt-gcc.expct" "gcc" (Explicit "noopt")           ] -     , let sweetNum = 10+     , let sweetNum = 11            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet@@ -217,7 +232,7 @@          -- This repeats a parameter value and also matches with a different          -- value.  The duplicate value should be ignored, but both values should          -- result in different Expectations.-     , let sweetNum = 7+     , let sweetNum = 8            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet@@ -240,7 +255,7 @@          -- the optimization parameter has no value specified, so multiple values          -- are found that could be tried, along with an expect file that doesn't          -- supply a potential value for this parameter.-     , let sweetNum = 6+     , let sweetNum = 7            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet@@ -267,7 +282,7 @@            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet-           chkE n cs ca f c = chkExp sweet (mkEq cs ca p) n f c NotSpecified+           chkE n cs ca f c = chkExp sweet (mkE' [] cs ca p) n f c NotSpecified        in TT.testGroup ("Sweet #" <> show sweetNum)           [             chkF "rootMatchName" rootMatchName "alpha.exe"@@ -286,7 +301,7 @@            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet-           chkE n cs ca f c = chkExp sweet (mkEq cs ca p) n f c NotSpecified+           chkE n cs ca f c = chkExp sweet (mkE' [] cs ca p) n f c NotSpecified        in TT.testGroup ("Sweet #" <> show sweetNum)           [             chkF "rootMatchName" rootMatchName "beta.exe"@@ -304,7 +319,7 @@            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet-           chkE n cs ca f c = chkExp sweet (mkEq cs ca p) n f c NotSpecified+           chkE n cs ca f c = chkExp sweet (mkE' [] cs ca p) n f c NotSpecified        in TT.testGroup ("Sweet #" <> show sweetNum)           [             chkF "rootMatchName" rootMatchName "gamma.exe"@@ -321,7 +336,7 @@            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet-           chkE n cs ca f c = chkExp sweet (mkEq cs ca p) n f c NotSpecified+           chkE n cs ca f c = chkExp sweet (mkE' [] cs ca p) n f c NotSpecified        in TT.testGroup ("Sweet #" <> show sweetNum)           [             chkF "rootMatchName" rootMatchName "delta.exe"@@ -340,7 +355,7 @@            sweet = safeElem sweetNum sugar1            chkF = chkFld sweet            chkP = chkFld sweet-           chkE n cs ca f c = chkExp sweet (mkEq cs ca p) n f c NotSpecified+           chkE n cs ca f c = chkExp sweet (mkE' [] cs ca p) n f c NotSpecified        in TT.testGroup ("Sweet #" <> show sweetNum)           [             chkF "rootMatchName" rootMatchName "epsilon.exe"@@ -352,4 +367,19 @@           , chkE 1 Assumed Explicit "epsilon.y......expct" (Assumed "clang")           , chkE 0 Assumed Explicit "epsilon.y......expct" (Assumed "gcc")           ]++     , let sweetNum = 5+           sweet = safeElem sweetNum sugar1+           chkF = chkFld sweet+           chkP = chkFld sweet+           chkE = chkExp sweet (mkE' [("c-source", p "gcc/hole-here.c")] Assumed Assumed p)+       in TT.testGroup ("Sweet #" <> show sweetNum)+          [+            chkF "rootMatchName" rootMatchName "hole-here.exe"+          , chkF "rootBaseName"  rootBaseName  "hole"+          , chkF "rootFile"      rootFile      $ p "hole-here.exe"+          , chkP "cubeParams"    cubeParams    $ validParams sugarCube+          , chkE 0 "hole-here-gcc.expct" (Explicit "gcc") (Explicit "here")+          ]+      ]