Skip to content

Commit 07ed561

Browse files
committed
Re-design test-cases for show-build-info
1 parent 2d9ef73 commit 07ed561

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+413
-386
lines changed

cabal-testsuite/PackageTests/Configure/include/HsZlibConfig.h.in

+6-4
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
/* Define to 1 if you have the <inttypes.h> header file. */
44
#undef HAVE_INTTYPES_H
55

6-
/* Define to 1 if you have the <memory.h> header file. */
7-
#undef HAVE_MEMORY_H
8-
96
/* Define to 1 if you have the <stdint.h> header file. */
107
#undef HAVE_STDINT_H
118

9+
/* Define to 1 if you have the <stdio.h> header file. */
10+
#undef HAVE_STDIO_H
11+
1212
/* Define to 1 if you have the <stdlib.h> header file. */
1313
#undef HAVE_STDLIB_H
1414

@@ -45,5 +45,7 @@
4545
/* Define to the version of this package. */
4646
#undef PACKAGE_VERSION
4747

48-
/* Define to 1 if you have the ANSI C header files. */
48+
/* Define to 1 if all of the C90 standard headers exist (not just the ones
49+
required in a freestanding environment). This macro is provided for
50+
backward compatibility; new code need not use it. */
4951
#undef STDC_HEADERS

cabal-testsuite/PackageTests/ShowBuildInfo/A/A.cabal

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ executable A
1818
test-suite A-tests
1919
type: exitcode-stdio-1.0
2020
main-is: Test.hs
21-
build-depends: base >=4
21+
build-depends: base >=4, A
2222
hs-source-dirs: src
2323
default-language: Haskell2010

cabal-testsuite/PackageTests/ShowBuildInfo/B/B.cabal renamed to cabal-testsuite/PackageTests/ShowBuildInfo/A/B/B.cabal

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version: 0.1.0.0
44
license: BSD-3-Clause
55

66
library
7-
exposed-modules: A
7+
exposed-modules: B
88
build-depends: base >=4.0.0.0, A
9-
hs-source-dirs: src
9+
hs-source-dirs: lib
1010
default-language: Haskell2010
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module A where
1+
module B where
22

33
foo :: Int -> Int
44
foo = id

cabal-testsuite/PackageTests/ShowBuildInfo/A/Setup.hs

-2
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import Test.Cabal.Prelude
2+
import Test.Cabal.DecodeShowBuildInfo
3+
4+
main = cabalTest $ do
5+
buildInfo <- runShowBuildInfo ["lib:B"]
6+
assertCommonBuildInfo buildInfo
7+
assertEqual "Number of Components" 1 (length $ components buildInfo)
8+
let [libComp] = components buildInfo
9+
assertLibComponent libComp "lib" ["B"] ["lib"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import Test.Cabal.Prelude
2+
import Test.Cabal.DecodeShowBuildInfo
3+
4+
main = cabalTest $ do
5+
buildInfo <- runShowBuildInfo ["lib:B", "lib:A"]
6+
assertCommonBuildInfo buildInfo
7+
assertEqual "Number of Components" 2 (length $ components buildInfo)
8+
let [libAComp, libBComp] = components buildInfo
9+
assertLibComponent libAComp "lib" ["A"] ["src"]
10+
assertLibComponent libBComp "lib" ["B"] ["lib"]

cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-all.test.hs

+8-5
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ import Test.Cabal.Prelude
22
import Test.Cabal.DecodeShowBuildInfo
33

44
main = cabalTest $ do
5-
buildInfo <- runShowBuildInfo ["-v0"] -- hide verbose output so we can parse
6-
let comps = components buildInfo
7-
assertEqual "Components, exactly three" 3 (length comps)
8-
assertEqual "Test components, exactly one" 1 $
9-
length $ filter (\c -> "test" == componentType c) comps
5+
buildInfo <- runShowBuildInfo ["all", "--enable-tests"]
6+
assertCommonBuildInfo buildInfo
7+
assertEqual "Number of Components" 4 (length $ components buildInfo)
8+
let [libAComp, exeComp, testComp, libBComp] = components buildInfo
9+
assertExeComponent exeComp "exe:A" ["Main.hs"] ["src"]
10+
assertLibComponent libAComp "lib" ["A"] ["src"]
11+
assertLibComponent libBComp "lib" ["B"] ["lib"]
12+
assertTestComponent testComp "test:A-tests" ["Test.hs"] ["src"]

cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-exe-exact.test.hs

-18
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Test.Cabal.Prelude
2+
import Test.Cabal.DecodeShowBuildInfo
3+
4+
main = cabalTest $ do
5+
buildInfo <- runShowBuildInfo ["exe:A"]
6+
assertCommonBuildInfo buildInfo
7+
assertEqual "Number of Components" 1 (length $ components buildInfo)
8+
let [exeComp] = components buildInfo
9+
assertExeComponent exeComp "exe:A" ["Main.hs"] ["src"]
10+
11+
-- Must not have library as a dependency as "exe:A" does not depend on it.
12+
assertBool "Does not contain library as dependency"
13+
(all (/= "A-0.1.0.0-inplace") $ componentCompilerArgs exeComp)

cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-multiple-exact-unit-id-file.test.hs

-36
This file was deleted.

cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-multiple-exact-unit-id.test.hs

-32
This file was deleted.

cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-multiple-exact.test.hs

-32
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# cabal show-build-info
2+
Resolving dependencies...
3+
Configuring library for A-0.1.0.0..
4+
Configuring executable 'A' for A-0.1.0.0..
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Test.Cabal.Prelude
2+
import Test.Cabal.DecodeShowBuildInfo
3+
4+
main = cabalTest $ withSourceCopy $ do
5+
cwd <- fmap testCurrentDir getTestEnv
6+
let fp = cwd </> "unit.json"
7+
_ <- cabal' "show-build-info" ["--buildinfo-json-output=" ++ fp, "exe:A", "lib:A"]
8+
buildInfo <- decodeBuildInfoFile fp
9+
assertCommonBuildInfo buildInfo
10+
assertEqual "Number of Components" 2 (length $ components buildInfo)
11+
let [libBuildInfo, exeBuildInfo] = components buildInfo
12+
assertExeComponent exeBuildInfo "exe:A" ["Main.hs"] ["src"]
13+
assertLibComponent libBuildInfo "lib" ["A"] ["src"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import Test.Cabal.Prelude
2+
import Test.Cabal.DecodeShowBuildInfo
3+
4+
main = cabalTest $ do
5+
buildInfo <- runShowBuildInfo ["exe:A", "lib:A"]
6+
assertCommonBuildInfo buildInfo
7+
let [libBuildInfo, exeBuildInfo] = components buildInfo
8+
assertExeComponent exeBuildInfo "exe:A" ["Main.hs"] ["src"]
9+
assertLibComponent libBuildInfo "lib" ["A"] ["src"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import Test.Cabal.Prelude
2+
import Test.Cabal.DecodeShowBuildInfo
3+
4+
main = cabalTest $ do
5+
buildInfo <- runShowBuildInfo []
6+
assertCommonBuildInfo buildInfo
7+
let comps = components buildInfo
8+
assertEqual "Number of Components" 2 (length comps)
9+
assertBool "Contains main component executable"
10+
(any (\c -> "exe:A" == componentName c) comps)
11+
assertBool "Contains main component library"
12+
(any (\c -> "lib" == componentName c) comps)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Test.Cabal.Prelude
2+
import Test.Cabal.DecodeShowBuildInfo
3+
4+
main = cabalTest $ do
5+
buildInfo <- runShowBuildInfo ["test:A-tests"]
6+
assertCommonBuildInfo buildInfo
7+
assertEqual "Number of Components" 1 (length $ components buildInfo)
8+
let [testComp] = components buildInfo
9+
assertTestComponent testComp "test:A-tests" ["Test.hs"] ["src"]
10+
11+
-- Must have library as a dependency as "test:A-tests" depends on it.
12+
assertBool "Contains internal dependency"
13+
(any (== "A-0.1.0.0-inplace") $ componentCompilerArgs testComp)
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
11
# cabal show-build-info
2-
cabal: Internal error in target matching. It should always be possible to find a syntax that's sufficiently qualified to give an unambiguous match. However when matching 'exe:B' we found exe:B (unknown-component) which does not have an unambiguous syntax. The possible syntax and the targets they match are as follows:
3-
'exe:B' which matches exe:B (unknown-component), :pkg:exe:lib:exe:module:B (unknown-module), :pkg:exe:lib:exe:file:B (unknown-file)
42
# cabal show-build-info
5-
Resolving dependencies...
6-
cabal: No unit B-inplace-0.1.0.0
73
# cabal show-build-info
8-
cabal: No unit B-inplace-0.1.0.0
94
# cabal show-build-info
10-
cabal: Internal error in target matching. It should always be possible to find a syntax that's sufficiently qualified to give an unambiguous match. However when matching 'exe:B' we found exe:B (unknown-component) which does not have an unambiguous syntax. The possible syntax and the targets they match are as follows:
11-
'exe:B' which matches exe:B (unknown-component), :pkg:exe:lib:exe:module:B (unknown-module), :pkg:exe:lib:exe:file:B (unknown-file)
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import Test.Cabal.Prelude
22

33
main = cabalTest $ do
4-
r <- fails $ cabal' "show-build-info" ["exe:B"]
4+
r <- fails $ cabal' "show-build-info" ["exe:B", "-v1"]
55
assertOutputContains "Internal error in target matching." r
66

7-
r <- fails $ cabal' "show-build-info" ["--unit-ids-json=B-inplace-0.1.0.0"]
8-
assertOutputContains "No unit B-inplace-0.1.0.0" r
7+
r <- fails $ cabal' "show-build-info" ["C", "-v1"]
8+
assertOutputContains "Cannot show-build-info the package C, it is not in this project (either directly or indirectly)." r
99

10-
r <- fails $ cabal' "show-build-info" ["--unit-ids-json=A-0.1.0.0-inplace B-inplace-0.1.0.0"]
11-
assertOutputContains "No unit B-inplace-0.1.0.0" r
12-
13-
r <- fails $ cabal' "show-build-info" ["--unit-ids-json=A-0.1.0.0-inplace", "exe:B"]
10+
r <- fails $ cabal' "show-build-info" ["lib:C", "-v1"]
1411
assertOutputContains "Internal error in target matching." r
12+
13+
r <- fails $ cabal' "show-build-info" ["benchmarks", "-v1"]
14+
assertOutputContains "Cannot show-build-info the benchmarks in the package A-0.1.0.0 because it does not contain any benchmarks." r
15+
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
packages: .
1+
packages: . ./B/

cabal-testsuite/PackageTests/ShowBuildInfo/B/Setup.hs

-2
This file was deleted.

cabal-testsuite/PackageTests/ShowBuildInfo/B/build-info-lib-exact.test.hs

-18
This file was deleted.

cabal-testsuite/PackageTests/ShowBuildInfo/B/cabal.project

-2
This file was deleted.

cabal-testsuite/PackageTests/ShowBuildInfo/C/C.cabal

-15
This file was deleted.

cabal-testsuite/PackageTests/ShowBuildInfo/C/Lib.hs

-3
This file was deleted.

cabal-testsuite/PackageTests/ShowBuildInfo/C/Test.hs

-1
This file was deleted.

cabal-testsuite/PackageTests/ShowBuildInfo/C/build-info-all-internal-deps.test.hs

-9
This file was deleted.

cabal-testsuite/PackageTests/ShowBuildInfo/C/cabal.project

-1
This file was deleted.

0 commit comments

Comments
 (0)