Skip to content

Commit 576eeeb

Browse files
committed
Modify test files
1 parent 0114a15 commit 576eeeb

File tree

5 files changed

+147
-63
lines changed

5 files changed

+147
-63
lines changed

cabal-testsuite/PackageTests/ShowBuildInfo/Complex/Complex.cabal

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ executable Complex
3030
test-suite unit-test
3131
type: exitcode-stdio-1.0
3232
hs-source-dirs: test
33-
build-depends: test-framework
33+
build-depends: test-framework == 0.8.1.1
3434
main-is: Main.hs
3535

3636
test-suite func-test
3737
type: exitcode-stdio-1.0
3838
hs-source-dirs: test
39-
build-depends: test-framework
39+
build-depends: test-framework == 0.8.1.1
4040
main-is: Main.hs
4141

4242
benchmark complex-benchmarks
@@ -49,6 +49,6 @@ benchmark complex-benchmarks
4949
ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
5050
build-depends:
5151
base
52-
, criterion
52+
, criterion == 1.1.4.0
5353
, Complex
5454
default-language: Haskell2010
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
{-# LANGUAGE DeriveGeneric #-}
2+
import Test.Cabal.Prelude
3+
4+
import qualified Data.Text as T
5+
import qualified Data.Text.Encoding as T
6+
import Data.Aeson
7+
import GHC.Generics
8+
9+
main = cabalTest $ withRepo "repo" $ do
10+
r <- cabal' "new-show-build-info" ["--enable-benchmarks", "bench:complex-benchmarks", "-v0"]
11+
let buildInfoEither = eitherDecodeStrict (T.encodeUtf8 . T.pack $ resultOutput r) :: Either String [BuildInfo]
12+
case buildInfoEither of
13+
Left err -> fail $ "Could not parse build-info command" ++ err
14+
Right buildInfos -> do
15+
assertEqual "Build Infos, exactly one" 1 (length buildInfos)
16+
let [buildInfo] = buildInfos
17+
assertEqual "Cabal Version" "3.0.0.0" (cabalVersion buildInfo)
18+
assertEqual "Compiler flavour" "ghc" (flavour $ compiler buildInfo)
19+
assertBool "Compiler id" (and $ zipWith (==) "ghc" (compilerId $ compiler buildInfo))
20+
assertBool "Compiler path non-empty" (not . null . path $ compiler buildInfo)
21+
assertEqual "Components, exactly one" 1 (length $ components buildInfo)
22+
let [component] = components buildInfo
23+
assertEqual "Component type" "benchmark" (componentType component)
24+
assertEqual "Component name" "bench:complex-brenchmarks" (componentName component)
25+
assertEqual "Component unit-id" "Complex-0.1.0.0-inplace-Complex" (componentUnitId component)
26+
assertBool "Component compiler args are non-empty" (not . null $ componentCompilerArgs component)
27+
assertBool "Component ghc-options contains all specified in .cabal"
28+
(all
29+
(`elem` componentCompilerArgs component)
30+
[ "-threaded"
31+
, "-rtsopts"
32+
, "-with-rtsopts=-N"
33+
, "-with-rtsopts=-T"
34+
, "-Wredundant-constraints"
35+
]
36+
)
37+
assertBool "Component ghc-options does not contain -Wall"
38+
(all
39+
(`notElem` componentCompilerArgs component)
40+
[ "-Wall"
41+
]
42+
)
43+
assertEqual "Component modules" ["Paths_complex"] (componentModules component)
44+
assertEqual "Component source files" ["Main.lhs"] (componentSrcFiles component)
45+
assertEqual "Component source directories" ["src"] (componentSrcDirs component)
46+
return ()
47+
48+
data BuildInfo = BuildInfo
49+
{ cabalVersion :: String
50+
, compiler :: CompilerInfo
51+
, components :: [ComponentInfo]
52+
} deriving (Generic, Show)
53+
54+
data CompilerInfo = CompilerInfo
55+
{ flavour :: String
56+
, compilerId :: String
57+
, path :: String
58+
} deriving (Generic, Show)
59+
60+
data ComponentInfo = ComponentInfo
61+
{ componentType :: String
62+
, componentName :: String
63+
, componentUnitId :: String
64+
, componentCompilerArgs :: [String]
65+
, componentModules :: [String]
66+
, componentSrcFiles :: [String]
67+
, componentSrcDirs :: [String]
68+
} deriving (Generic, Show)
69+
70+
instance ToJSON BuildInfo where
71+
toEncoding = genericToEncoding defaultOptions
72+
instance FromJSON BuildInfo where
73+
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = camelTo2 '-' }
74+
75+
76+
instance ToJSON CompilerInfo where
77+
toEncoding = genericToEncoding defaultOptions
78+
instance FromJSON CompilerInfo where
79+
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = camelTo2 '-' }
80+
81+
instance ToJSON ComponentInfo where
82+
toEncoding = genericToEncoding defaultOptions
83+
instance FromJSON ComponentInfo where
84+
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = drop 10 . camelTo2 '-' }

cabal-testsuite/PackageTests/ShowBuildInfo/Complex/exe.test.hs

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,43 +7,43 @@ import Data.Aeson
77
import GHC.Generics
88

99
main = cabalTest $ do
10-
r <- cabal' "new-show-build-info" ["exe:Complex", "-v0"]
11-
let buildInfoEither = eitherDecodeStrict (T.encodeUtf8 . T.pack $ resultOutput r) :: Either String [BuildInfo]
12-
case buildInfoEither of
13-
Left err -> fail $ "Could not parse build-info command" ++ err
14-
Right buildInfos -> do
15-
assertEqual "Build Infos, exactly one" 1 (length buildInfos)
16-
let [buildInfo] = buildInfos
17-
assertEqual "Cabal Version" "3.0.0.0" (cabalVersion buildInfo)
18-
assertEqual "Compiler flavour" "ghc" (flavour $ compiler buildInfo)
19-
assertBool "Compiler id" (and $ zipWith (==) "ghc" (compilerId $ compiler buildInfo))
20-
assertBool "Compiler path non-empty" (not . null . path $ compiler buildInfo)
21-
assertEqual "Components, exactly one" 1 (length $ components buildInfo)
22-
let [component] = components buildInfo
23-
assertEqual "Component type" "exe" (componentType component)
24-
assertEqual "Component name" "exe:Complex" (componentName component)
25-
assertEqual "Component unit-id" "Complex-0.1.0.0-inplace-Complex" (componentUnitId component)
26-
assertBool "Component compiler args are non-empty" (not . null $ componentCompilerArgs component)
27-
assertBool "Component ghc-options contains all specified in .cabal"
28-
(all
29-
(`elem` componentCompilerArgs component)
30-
[ "-threaded"
31-
, "-rtsopts"
32-
, "-with-rtsopts=-N"
33-
, "-with-rtsopts=-T"
34-
, "-Wredundant-constraints"
35-
]
36-
)
37-
assertBool "Component ghc-options does not contain -Wall"
38-
(all
39-
(`notElem` componentCompilerArgs component)
40-
[ "-Wall"
41-
]
42-
)
43-
assertEqual "Component modules" ["Paths_complex"] (componentModules component)
44-
assertEqual "Component source files" ["Main.lhs"] (componentSrcFiles component)
45-
assertEqual "Component source directories" ["src"] (componentSrcDirs component)
46-
return ()
10+
r <- cabal' "new-show-build-info" ["exe:Complex", "-v0"]
11+
let buildInfoEither = eitherDecodeStrict (T.encodeUtf8 . T.pack $ resultOutput r) :: Either String [BuildInfo]
12+
case buildInfoEither of
13+
Left err -> fail $ "Could not parse build-info command" ++ err
14+
Right buildInfos -> do
15+
assertEqual "Build Infos, exactly one" 1 (length buildInfos)
16+
let [buildInfo] = buildInfos
17+
assertEqual "Cabal Version" "3.0.0.0" (cabalVersion buildInfo)
18+
assertEqual "Compiler flavour" "ghc" (flavour $ compiler buildInfo)
19+
assertBool "Compiler id" (and $ zipWith (==) "ghc" (compilerId $ compiler buildInfo))
20+
assertBool "Compiler path non-empty" (not . null . path $ compiler buildInfo)
21+
assertEqual "Components, exactly one" 1 (length $ components buildInfo)
22+
let [component] = components buildInfo
23+
assertEqual "Component type" "exe" (componentType component)
24+
assertEqual "Component name" "exe:Complex" (componentName component)
25+
assertEqual "Component unit-id" "Complex-0.1.0.0-inplace-Complex" (componentUnitId component)
26+
assertBool "Component compiler args are non-empty" (not . null $ componentCompilerArgs component)
27+
assertBool "Component ghc-options contains all specified in .cabal"
28+
(all
29+
(`elem` componentCompilerArgs component)
30+
[ "-threaded"
31+
, "-rtsopts"
32+
, "-with-rtsopts=-N"
33+
, "-with-rtsopts=-T"
34+
, "-Wredundant-constraints"
35+
]
36+
)
37+
assertBool "Component ghc-options does not contain -Wall"
38+
(all
39+
(`notElem` componentCompilerArgs component)
40+
[ "-Wall"
41+
]
42+
)
43+
assertEqual "Component modules" ["Paths_complex"] (componentModules component)
44+
assertEqual "Component source files" ["Main.lhs"] (componentSrcFiles component)
45+
assertEqual "Component source directories" ["src"] (componentSrcDirs component)
46+
return ()
4747

4848
data BuildInfo = BuildInfo
4949
{ cabalVersion :: String

cabal-testsuite/PackageTests/ShowBuildInfo/Complex/func-test.test.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Data.Aeson
77
import GHC.Generics
88

99
main = cabalTest $ withRepo "repo" $ do
10-
r <- cabal' "new-show-build-info" ["--enable-tests", "lib:Complex", "-v0"]
10+
r <- cabal' "new-show-build-info" ["--enable-tests", ":func-test", "-v0"]
1111
let buildInfoEither = eitherDecodeStrict (T.encodeUtf8 . T.pack $ resultOutput r) :: Either String [BuildInfo]
1212
case buildInfoEither of
1313
Left err -> fail $ "Could not parse build-info command" ++ err
@@ -21,7 +21,7 @@ main = cabalTest $ withRepo "repo" $ do
2121
assertEqual "Components, exactly one" 1 (length $ components buildInfo)
2222
let [component] = components buildInfo
2323
assertEqual "Component type" "test" (componentType component)
24-
assertEqual "Component name" "test:unit" (componentName component)
24+
assertEqual "Component name" "test:func" (componentName component)
2525
assertEqual "Component unit-id" "Complex-0.1.0.0-inplace" (componentUnitId component)
2626
assertBool "Component compiler args are non-empty" (not . null $ componentCompilerArgs component)
2727
assertEqual "Component modules" ["Lib", "Paths_complex"] (componentModules component)

cabal-testsuite/PackageTests/ShowBuildInfo/Complex/unit-test.test.hs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,27 @@ import Data.Aeson
77
import GHC.Generics
88

99
main = cabalTest $ withRepo "repo" $ do
10-
r <- cabal' "new-show-build-info" ["--enable-tests", "lib:Complex", "-v0"]
11-
let buildInfoEither = eitherDecodeStrict (T.encodeUtf8 . T.pack $ resultOutput r) :: Either String [BuildInfo]
12-
case buildInfoEither of
13-
Left err -> fail $ "Could not parse build-info command" ++ err
14-
Right buildInfos -> do
15-
assertEqual "Build Infos, exactly one" 1 (length buildInfos)
16-
let [buildInfo] = buildInfos
17-
assertEqual "Cabal Version" "3.0.0.0" (cabalVersion buildInfo)
18-
assertEqual "Compiler flavour" "ghc" (flavour $ compiler buildInfo)
19-
assertBool "Compiler id" (and $ zipWith (==) "ghc" (compilerId $ compiler buildInfo))
20-
assertBool "Compiler path non-empty" (not . null . path $ compiler buildInfo)
21-
assertEqual "Components, exactly one" 1 (length $ components buildInfo)
22-
let [component] = components buildInfo
23-
assertEqual "Component type" "test" (componentType component)
24-
assertEqual "Component name" "test:unit" (componentName component)
25-
assertEqual "Component unit-id" "Complex-0.1.0.0-inplace" (componentUnitId component)
26-
assertBool "Component compiler args are non-empty" (not . null $ componentCompilerArgs component)
27-
assertEqual "Component modules" ["Lib", "Paths_complex"] (componentModules component)
28-
assertEqual "Component source files" [] (componentSrcFiles component)
29-
assertEqual "Component source directories" ["src"] (componentSrcDirs component)
30-
return ()
10+
r <- cabal' "new-show-build-info" ["--enable-tests", ":unit-test", "-v0"]
11+
let buildInfoEither = eitherDecodeStrict (T.encodeUtf8 . T.pack $ resultOutput r) :: Either String [BuildInfo]
12+
case buildInfoEither of
13+
Left err -> fail $ "Could not parse build-info command" ++ err
14+
Right buildInfos -> do
15+
assertEqual "Build Infos, exactly one" 1 (length buildInfos)
16+
let [buildInfo] = buildInfos
17+
assertEqual "Cabal Version" "3.0.0.0" (cabalVersion buildInfo)
18+
assertEqual "Compiler flavour" "ghc" (flavour $ compiler buildInfo)
19+
assertBool "Compiler id" (and $ zipWith (==) "ghc" (compilerId $ compiler buildInfo))
20+
assertBool "Compiler path non-empty" (not . null . path $ compiler buildInfo)
21+
assertEqual "Components, exactly one" 1 (length $ components buildInfo)
22+
let [component] = components buildInfo
23+
assertEqual "Component type" "test" (componentType component)
24+
assertEqual "Component name" "test:unit" (componentName component)
25+
assertEqual "Component unit-id" "Complex-0.1.0.0-inplace" (componentUnitId component)
26+
assertBool "Component compiler args are non-empty" (not . null $ componentCompilerArgs component)
27+
assertEqual "Component modules" ["Lib", "Paths_complex"] (componentModules component)
28+
assertEqual "Component source files" [] (componentSrcFiles component)
29+
assertEqual "Component source directories" ["src"] (componentSrcDirs component)
30+
return ()
3131

3232
data BuildInfo = BuildInfo
3333
{ cabalVersion :: String

0 commit comments

Comments
 (0)