tasty-discover

This commit is contained in:
2026-08-20 17:21:42 -06:00
parent fc8cf263aa
commit 25ba8c03b8
11 changed files with 50 additions and 62 deletions
+7 -5
View File
@@ -103,10 +103,11 @@ library
default-language: GHC2024 default-language: GHC2024
test-suite test test-suite test
import: ghcstuffs, ghcstuffs-dev import: ghcstuffs, ghcstuffs-dev
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0
hs-source-dirs: test hs-source-dirs: test
main-is: Main.hs main-is: Main.hs
build-tool-depends: tasty-discover:tasty-discover
other-modules: other-modules:
Gyehoek.Test.CPS.Eval Gyehoek.Test.CPS.Eval
Gyehoek.Test.CPS.Stackify Gyehoek.Test.CPS.Stackify
@@ -115,6 +116,7 @@ test-suite test
Gyehoek.Test.Scheme.Syntax Gyehoek.Test.Scheme.Syntax
Gyehoek.Test.Sexp Gyehoek.Test.Sexp
Gyehoek.Test.Stack.VM Gyehoek.Test.Stack.VM
Root
build-depends: build-depends:
, base , base
@@ -133,4 +135,4 @@ test-suite test
, tasty-silver , tasty-silver
, text , text
default-language: GHC2024 default-language: GHC2024
+1 -1
View File
@@ -1,7 +1,7 @@
module Gyehoek.Prelude module Gyehoek.Prelude
( module Control.Lens ( module Control.Lens
, module Effectful , module Effectful
, module Data.Generics.Labels , module Data.Generics.Labels -- exports instances
, module Data.String.Interpolate , module Data.String.Interpolate
, Text , Text
, List , List
+4 -5
View File
@@ -1,4 +1,4 @@
module Gyehoek.Test.CPS.Eval (root) where module Gyehoek.Test.CPS.Eval where
import Test.Tasty (TestTree, testGroup) import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit import Test.Tasty.HUnit
@@ -8,9 +8,8 @@ import Gyehoek.CPS.Eval qualified as Sut
import Data.List (List) import Data.List (List)
root :: IO TestTree test_cpsInterpreter = testGroup "cps interpreter" $
root = pure . testGroup "cps interpreter" $ [ primitives
[ prim
, testCase "halt with constant" do , testCase "halt with constant" do
evalsTo [ObjImm (ImmInt 123)] [cps| evalsTo [ObjImm (ImmInt 123)] [cps|
(continue halt 123) (continue halt 123)
@@ -39,7 +38,7 @@ root = pure . testGroup "cps interpreter" $
evalsTo :: HasCallStack => List Obj -> Sut.Program -> Assertion evalsTo :: HasCallStack => List Obj -> Sut.Program -> Assertion
evalsTo rs p = Sut.evalProgram p @?= rs evalsTo rs p = Sut.evalProgram p @?= rs
prim = testGroup "primitives" primitives = testGroup "primitives"
[ testGroup "arith" [ testGroup "arith"
[ testCase "basic 1" do [ testCase "basic 1" do
evalsTo [ObjImm (ImmInt 20)] [cps| evalsTo [ObjImm (ImmInt 20)] [cps|
+2 -3
View File
@@ -1,4 +1,4 @@
module Gyehoek.Test.CPS.Stackify (root) where module Gyehoek.Test.CPS.Stackify where
import Test.Tasty (TestTree, testGroup) import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit import Test.Tasty.HUnit
@@ -10,8 +10,7 @@ import Gyehoek.GenSym (runGenSym)
import Effectful import Effectful
root :: IO TestTree test_stackify =
root = pure . testGroup "stackify" $
[ trivialReturn [ trivialReturn
, tailCall , tailCall
, prim , prim
+8 -9
View File
@@ -1,5 +1,5 @@
{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedLists #-}
module Gyehoek.Test.CPS.Syntax (root) where module Gyehoek.Test.CPS.Syntax where
import Test.Tasty (TestTree, testGroup) import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit import Test.Tasty.HUnit
@@ -8,14 +8,13 @@ import Gyehoek.CPS.Syntax (cps)
import Gyehoek.CPS.Syntax qualified as Sut import Gyehoek.CPS.Syntax qualified as Sut
root :: IO TestTree test_root = testGroup "cps syntax"
root = pure . testGroup "cps syntax" $ [ free
[ qqTree , qq
, freeTree
] ]
freeTree :: TestTree free :: TestTree
freeTree = testGroup "free" free = testGroup "free"
[ testCase "lambda" do [ testCase "lambda" do
Sut.free' @Sut.Lambda [cps| Sut.free' @Sut.Lambda [cps|
(lambda (x y z k1) (continue k1 x a b c y)) (lambda (x y z k1) (continue k1 x a b c y))
@@ -27,8 +26,8 @@ freeTree = testGroup "free"
(continue x y k3))|] @=? ["k3"] (continue x y k3))|] @=? ["k3"]
] ]
qqTree :: TestTree qq :: TestTree
qqTree = testGroup "parser" qq = testGroup "parser"
[ testCase "lambda" do [ testCase "lambda" do
assertEqual "" (Sut.MkLambda ["x","y"] "ktail" assertEqual "" (Sut.MkLambda ["x","y"] "ktail"
(Sut.ExpContinue "ktail" [Sut.ValVar "x"])) (Sut.ExpContinue "ktail" [Sut.ValVar "x"]))
+4 -3
View File
@@ -1,4 +1,4 @@
module Gyehoek.Test.Golden (root) where module Gyehoek.Test.Golden where
import Test.Tasty (TestTree, testGroup) import Test.Tasty (TestTree, testGroup)
import Test.Tasty.Silver import Test.Tasty.Silver
@@ -31,8 +31,8 @@ brokenStackifyTests =
-- , "callcc-nested1" -- requires closure-conversion -- , "callcc-nested1" -- requires closure-conversion
-- ] -- ]
root :: IO TestTree test_root :: IO TestTree
root = do test_root = do
all_cases <- listDirectory "golden" all_cases <- listDirectory "golden"
let tests = all_cases let tests = all_cases
& fmap ("golden"</>) & fmap ("golden"</>)
@@ -43,6 +43,7 @@ root = do
] ]
maybeBroken name broken = applyWhen (name `elem` broken) expectFail maybeBroken name broken = applyWhen (name `elem` broken) expectFail
wasmTests :: List FilePath -> IO TestTree wasmTests :: List FilePath -> IO TestTree
wasmTests files = do wasmTests files = do
cmd <- getEnvDefault "GYEHOEK_RUNTIME" cmd <- getEnvDefault "GYEHOEK_RUNTIME"
+2 -3
View File
@@ -1,4 +1,4 @@
module Gyehoek.Test.Scheme.Syntax (root) where module Gyehoek.Test.Scheme.Syntax where
import Test.Tasty (TestTree, testGroup) import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit import Test.Tasty.HUnit
@@ -7,8 +7,7 @@ import Gyehoek.Scheme.Syntax (scm)
import Gyehoek.Scheme.Syntax qualified as Sut import Gyehoek.Scheme.Syntax qualified as Sut
root :: IO TestTree test_root = testGroup "scheme syntax" $
root = pure . testGroup "scheme syntax" $
[ freeTree [ freeTree
] ]
+2 -9
View File
@@ -1,10 +1,4 @@
module Gyehoek.Test.Sexp module Gyehoek.Test.Sexp where
( root
, EquivSexp(..)
, assertEquiv
, equivto
)
where
import Test.Tasty (TestTree, testGroup) import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit import Test.Tasty.HUnit
@@ -14,8 +8,7 @@ import Gyehoek.Sexp (sx, equivalent)
import Data.Function (on) import Data.Function (on)
root :: IO TestTree test_root = testGroup "sexp" $
root = pure . testGroup "sexp" $
[ sxTree [ sxTree
] ]
+2 -3
View File
@@ -1,4 +1,4 @@
module Gyehoek.Test.Stack.VM (root) where module Gyehoek.Test.Stack.VM where
import Test.Tasty (TestTree, testGroup) import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit import Test.Tasty.HUnit
@@ -7,8 +7,7 @@ import Gyehoek.Stack.VM qualified as Sut
import Data.List (List) import Data.List (List)
root :: IO TestTree test_root = testGroup "stack machine" $
root = pure . testGroup "stack machine" $
[ lit_int [ lit_int
, procedure , procedure
, prims , prims
+12 -21
View File
@@ -1,27 +1,18 @@
module Main (main) where module Main (main) where
import Test.Tasty (TestTree, testGroup) -- import Test.Tasty (TestTree, testGroup)
import Test.Tasty.Silver.Interactive (defaultMain) import Test.Tasty.Silver.Interactive (defaultMain)
import qualified Gyehoek.Test.Golden -- import qualified Gyehoek.Test.Golden
import qualified Gyehoek.Test.Sexp -- import qualified Gyehoek.Test.Sexp
import qualified Gyehoek.Test.CPS.Syntax -- import qualified Gyehoek.Test.CPS.Syntax
import qualified Gyehoek.Test.Scheme.Syntax -- import qualified Gyehoek.Test.Scheme.Syntax
import qualified Gyehoek.Test.Stack.VM -- import qualified Gyehoek.Test.Stack.VM
import qualified Gyehoek.Test.CPS.Stackify -- import qualified Gyehoek.Test.CPS.Stackify
import qualified Gyehoek.Test.CPS.Eval -- import qualified Gyehoek.Test.CPS.Eval
import qualified Root
main :: IO () main :: IO ()
main = defaultMain =<< root main = do
discoveredTests <- Root.tests
root :: IO TestTree defaultMain discoveredTests
root = testGroup "test" <$> sequenceA
[ Gyehoek.Test.Golden.root
, Gyehoek.Test.Sexp.root
, Gyehoek.Test.CPS.Syntax.root
, Gyehoek.Test.Scheme.Syntax.root
, Gyehoek.Test.Stack.VM.root
, Gyehoek.Test.CPS.Stackify.root
, Gyehoek.Test.CPS.Eval.root
]
+6
View File
@@ -0,0 +1,6 @@
{-# OPTIONS_GHC
-F -pgmF tasty-discover
-optF --no-main
-optF --generated-module=Root
#-}
module Root where