Skip to content

Commit 039f6be

Browse files
ptkatoemilypi
authored andcommitted
v2-reconfigure tests
1 parent e70b5eb commit 039f6be

File tree

8 files changed

+106
-44
lines changed

8 files changed

+106
-44
lines changed

cabal-install/cabal-install.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@ Test-Suite unit-tests
273273
other-modules:
274274
UnitTests.Distribution.Client.ArbitraryInstances
275275
UnitTests.Distribution.Client.BuildReport
276+
UnitTests.Distribution.Client.Configure
276277
UnitTests.Distribution.Client.Targets
277278
UnitTests.Distribution.Client.Get
278279
UnitTests.Distribution.Client.Glob

cabal-install/tests/UnitTests.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import qualified UnitTests.Distribution.Solver.Modular.Solver
99
import qualified UnitTests.Distribution.Solver.Modular.RetryLog
1010
import qualified UnitTests.Distribution.Solver.Types.OptionalStanza
1111
import qualified UnitTests.Distribution.Client.BuildReport
12+
import qualified UnitTests.Distribution.Client.Configure
1213
import qualified UnitTests.Distribution.Client.Glob
1314
import qualified UnitTests.Distribution.Client.GZipUtils
1415
import qualified UnitTests.Distribution.Client.Store
@@ -39,6 +40,8 @@ main = do
3940
, UnitTests.Distribution.Solver.Types.OptionalStanza.tests
4041
, testGroup "UnitTests.Distribution.Client.Glob"
4142
UnitTests.Distribution.Client.Glob.tests
43+
, testGroup "UnitTests.Distribution.Client.Configure"
44+
UnitTests.Distribution.Client.Configure.tests
4245
, testGroup "Distribution.Client.GZipUtils"
4346
UnitTests.Distribution.Client.GZipUtils.tests
4447
, testGroup "Distribution.Client.Init"
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
{-# LANGUAGE RecordWildCards #-}
2+
module UnitTests.Distribution.Client.Configure (tests) where
3+
4+
import Distribution.Client.CmdConfigure
5+
6+
import Test.Tasty
7+
import Test.Tasty.HUnit
8+
import System.Directory
9+
import System.FilePath
10+
import Distribution.Verbosity
11+
import Distribution.Client.Setup
12+
import Distribution.Client.NixStyleOptions
13+
import Distribution.Client.ProjectConfig.Types
14+
import Distribution.Client.ProjectFlags
15+
import Distribution.Simple
16+
import Distribution.Simple.Flag
17+
18+
tests :: [TestTree]
19+
tests =
20+
[ configureTests
21+
]
22+
23+
configureTests :: TestTree
24+
configureTests = testGroup "Configure tests"
25+
[ testCase "New config" $ do
26+
let flags = (defaultNixStyleFlags ())
27+
{ configFlags = mempty
28+
{ configOptimization = Flag MaximumOptimisation
29+
, configVerbosity = Flag silent
30+
}
31+
}
32+
projConfig <- configureAction' flags [] defaultGlobalFlags
33+
34+
Flag MaximumOptimisation @=?
35+
(packageConfigOptimization . projectConfigLocalPackages $ snd projConfig)
36+
37+
, testCase "Replacement + new config" $ do
38+
let flags = (defaultNixStyleFlags ())
39+
{ configExFlags = mempty
40+
{ configAppend = Flag True }
41+
, configFlags = mempty
42+
{ configOptimization = Flag NoOptimisation
43+
, configVerbosity = Flag silent
44+
}
45+
, projectFlags = mempty
46+
{ flagProjectFileName = Flag projectFile }
47+
}
48+
(_, ProjectConfig {..}) <- configureAction' flags [] defaultGlobalFlags
49+
50+
Flag NoOptimisation @=? packageConfigOptimization projectConfigLocalPackages
51+
Flag silent @=? projectConfigVerbosity projectConfigBuildOnly
52+
53+
, testCase "Old + new config" $ do
54+
let flags = (defaultNixStyleFlags ())
55+
{ configExFlags = mempty
56+
{ configAppend = Flag True }
57+
, configFlags = mempty
58+
{ configVerbosity = Flag silent }
59+
, projectFlags = mempty
60+
{ flagProjectFileName = Flag projectFile }
61+
}
62+
(_, ProjectConfig {..}) <- configureAction' flags [] defaultGlobalFlags
63+
64+
Flag MaximumOptimisation @=? packageConfigOptimization projectConfigLocalPackages
65+
Flag silent @=? projectConfigVerbosity projectConfigBuildOnly
66+
67+
, testCase "Old + new config, no appending" $ do
68+
let flags = (defaultNixStyleFlags ())
69+
{ configFlags = mempty
70+
{ configVerbosity = Flag silent }
71+
, projectFlags = mempty
72+
{ flagProjectFileName = Flag projectFile }
73+
}
74+
(_, ProjectConfig {..}) <- configureAction' flags [] defaultGlobalFlags
75+
76+
NoFlag @=? packageConfigOptimization projectConfigLocalPackages
77+
Flag silent @=? projectConfigVerbosity projectConfigBuildOnly
78+
79+
, testCase "Old + new config, backup check" $ do
80+
let flags = (defaultNixStyleFlags ())
81+
{ configFlags = mempty
82+
{ configVerbosity = Flag silent }
83+
, projectFlags = mempty
84+
{ flagProjectFileName = Flag projectFile }
85+
}
86+
backup = projectFile <.> "local~"
87+
88+
removeFile backup
89+
_ <- configureAction' flags [] defaultGlobalFlags
90+
91+
doesFileExist backup >>=
92+
assertBool ("No file found, expected: " ++ backup)
93+
]
94+
95+
projectFile :: FilePath
96+
projectFile = "tests" </> "fixtures" </> "reconfigure" </> "cabal.project"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ignore-project: False
2+
optimization: 2
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ignore-project: False
2+
optimization: 2
Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,4 @@
11
# cabal v2-configure
22
'cabal.project.local' already exists, backing it up to 'cabal.project.local~'.
3-
Resolving dependencies...
4-
Build profile: -w ghc-<GHCVER> -O1
5-
In order, the following would be built:
6-
- NewConfigure-0.1.0.0 (lib) (first run)
73
# cabal v2-configure
8-
'cabal.project.local' already exists, backing it up to 'cabal.project.local~0'.
9-
Build profile: -w ghc-<GHCVER> -O1
10-
In order, the following would be built:
11-
- NewConfigure-0.1.0.0 (lib) (first run)
12-
# cabal v2-configure
13-
'cabal.project.local' already exists, backing it up to 'cabal.project.local~1'.
14-
Build profile: -w ghc-<GHCVER> -O1
15-
In order, the following would be built:
16-
- NewConfigure-0.1.0.0 (lib) (first run)
17-
# cabal v2-configure
18-
'foo.project.local' already exists, backing it up to 'foo.project.local~'.
19-
Build profile: -w ghc-<GHCVER> -O1
20-
In order, the following would be built:
21-
- NewConfigure-0.1.0.0 (lib) (first run)
22-
# cabal v2-configure
23-
'foo.project.local' already exists, backing it up to 'foo.project.local~0'.
24-
Build profile: -w ghc-<GHCVER> -O1
25-
In order, the following would be built:
26-
- NewConfigure-0.1.0.0 (lib) (first run)
27-
# cabal v2-configure
28-
'foo.project.local' already exists, backing it up to 'foo.project.local~1'.
29-
Build profile: -w ghc-<GHCVER> -O1
30-
In order, the following would be built:
31-
- NewConfigure-0.1.0.0 (lib) (first run)
4+
'foo.project.local' already exists, backing it up to 'foo.project.local~'.

cabal-testsuite/PackageTests/NewConfigure/LocalConfigOverwrite/cabal.test.hs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,8 @@ main = cabalTest $
44
withSourceCopy $ do
55
cabal' "v2-configure" [] >>=
66
assertOutputContains "backing it up to 'cabal.project.local~'"
7-
cabal' "v2-configure" [] >>=
8-
assertOutputContains "backing it up to 'cabal.project.local~0'"
9-
cabal' "v2-configure" [] >>=
10-
assertOutputContains "backing it up to 'cabal.project.local~1'"
117

128
-- With --project-file
139
cabal' "v2-configure" ["--project-file", "foo.project"] >>=
1410
assertOutputContains
1511
"'foo.project.local' already exists, backing it up to 'foo.project.local~'"
16-
cabal' "v2-configure" ["--project-file", "foo.project"] >>=
17-
assertOutputContains
18-
"'foo.project.local' already exists, backing it up to 'foo.project.local~0'"
19-
cabal' "v2-configure" ["--project-file", "foo.project"] >>=
20-
assertOutputContains
21-
"'foo.project.local' already exists, backing it up to 'foo.project.local~1'"
Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1 @@
1-
# cabal v2-configure
2-
Resolving dependencies...
3-
Build profile: -w ghc-<GHCVER> -O1
4-
In order, the following would be built:
5-
- happy-999.999.999 (exe:happy) (first run)
6-
- client-0.1.0.0 (exe:hello-world) (first run)
1+
# cabal v2-configure

0 commit comments

Comments
 (0)