diff --git a/Cabal/.gitignore b/Cabal/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..2ff2d589f026b32fa875dc790a1c2ef3c23434f6 --- /dev/null +++ b/Cabal/.gitignore @@ -0,0 +1,2 @@ +/dist/ +/tests/PackageTests/TestSuiteExeV10/dist-* diff --git a/Cabal/tests/PackageTests.hs b/Cabal/tests/PackageTests.hs index fe6d890f3193f8c5fd9be7e61b23ce1bb7b7d437..a3b244438e752250c910ad40fdd23ed376526e40 100644 --- a/Cabal/tests/PackageTests.hs +++ b/Cabal/tests/PackageTests.hs @@ -140,6 +140,7 @@ main = do , configOpts = [ "--package-db=" ++ dbFile , "--constraint=Cabal == " ++ display cabalVersion ] + , distPref = Nothing } putStrLn $ "Cabal test suite - testing cabal version " ++ display cabalVersion diff --git a/Cabal/tests/PackageTests/BenchmarkExeV10/Check.hs b/Cabal/tests/PackageTests/BenchmarkExeV10/Check.hs index afbb94953763b3414cbec553eca2de28edd27347..6904048ee82fda19738f021c07c2225cd7ed509e 100644 --- a/Cabal/tests/PackageTests/BenchmarkExeV10/Check.hs +++ b/Cabal/tests/PackageTests/BenchmarkExeV10/Check.hs @@ -11,6 +11,6 @@ dir = "PackageTests" </> "BenchmarkExeV10" checkBenchmark :: FilePath -> Test checkBenchmark ghcPath = TestCase $ do - let spec = PackageSpec dir ["--enable-benchmarks"] + let spec = PackageSpec dir Nothing ["--enable-benchmarks"] buildResult <- cabal_build spec ghcPath assertBuildSucceeded buildResult diff --git a/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs b/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs index ee76f808893cd8e5a910a1228377e70a02a612ac..d217b04d213f5017af231008a0412adef25ef925 100644 --- a/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs +++ b/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs @@ -6,8 +6,11 @@ import Test.HUnit suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "BenchmarkOptions") - ["--enable-benchmarks"] + let spec = PackageSpec + { directory = "PackageTests" </> "BenchmarkOptions" + , configOpts = ["--enable-benchmarks"] + , distPref = Nothing + } _ <- cabal_build spec ghcPath result <- cabal_bench spec ["--benchmark-options=1 2 3"] ghcPath let message = "\"cabal bench\" did not pass the correct options to the " diff --git a/Cabal/tests/PackageTests/BenchmarkStanza/Check.hs b/Cabal/tests/PackageTests/BenchmarkStanza/Check.hs index 0110dc56127e5530bc1f33e55573521c613eaae4..fb4098524511e27e8b853bcd6ac1586fb1045e71 100644 --- a/Cabal/tests/PackageTests/BenchmarkStanza/Check.hs +++ b/Cabal/tests/PackageTests/BenchmarkStanza/Check.hs @@ -26,7 +26,7 @@ suite :: FilePath -> Test suite ghcPath = TestCase $ do let dir = "PackageTests" </> "BenchmarkStanza" pdFile = dir </> "my" <.> "cabal" - spec = PackageSpec dir [] + spec = PackageSpec { directory = dir, configOpts = [], distPref = Nothing } result <- cabal_configure spec ghcPath assertOutputDoesNotContain "unknown section type" result genPD <- readPackageDescription silent pdFile diff --git a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary0/Check.hs b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary0/Check.hs index 27fc0a6eedc2ec5077d25de2e786532f5274d48d..14d979d07a75a84923792c5134dbda1f3f92bc1d 100644 --- a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary0/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary0/Check.hs @@ -9,7 +9,11 @@ import Test.HUnit suite :: Version -> FilePath -> Test suite cabalVersion ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "BuildDeps" </> "InternalLibrary0") [] + let spec = PackageSpec + { directory = "PackageTests" </> "BuildDeps" </> "InternalLibrary0" + , configOpts = [] + , distPref = Nothing + } result <- cabal_build spec ghcPath assertBuildFailed result when (cabalVersion >= Version [1, 7] []) $ do diff --git a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary1/Check.hs b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary1/Check.hs index db041c7a566244bed0a70a2a129e193948e6f45b..27e813301f5648bb53ca1d1e191c33d16bd1d117 100644 --- a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary1/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary1/Check.hs @@ -7,6 +7,10 @@ import Test.HUnit suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "BuildDeps" </> "InternalLibrary1") [] + let spec = PackageSpec + { directory = "PackageTests" </> "BuildDeps" </> "InternalLibrary1" + , configOpts = [] + , distPref = Nothing + } result <- cabal_build spec ghcPath assertBuildSucceeded result diff --git a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary2/Check.hs b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary2/Check.hs index 065c71c83ab4caca8c5e344dd9f4059bc37c1a06..babf55e035fc1fbea6b23aa26f523ade0c5a18f7 100644 --- a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary2/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary2/Check.hs @@ -8,8 +8,16 @@ import Test.HUnit suite :: FilePath -> FilePath -> Test suite ghcPath ghcPkgPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "BuildDeps" </> "InternalLibrary2") [] - let specTI = PackageSpec (directory spec </> "to-install") [] + let spec = PackageSpec + { directory = "PackageTests" </> "BuildDeps" </> "InternalLibrary2" + , configOpts = [] + , distPref = Nothing + } + let specTI = PackageSpec + { directory = directory spec </> "to-install" + , configOpts = [] + , distPref = Nothing + } unregister "InternalLibrary2" ghcPkgPath iResult <- cabal_install specTI ghcPath diff --git a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary3/Check.hs b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary3/Check.hs index 8dcf90f1cca2a2f53ea8f83cb21e4abd05d58ee0..255bbd38f9d7238d05ae85aed9aef705d7e4eca3 100644 --- a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary3/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary3/Check.hs @@ -8,8 +8,16 @@ import Test.HUnit suite :: FilePath -> FilePath -> Test suite ghcPath ghcPkgPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "BuildDeps" </> "InternalLibrary3") [] - let specTI = PackageSpec (directory spec </> "to-install") [] + let spec = PackageSpec + { directory = "PackageTests" </> "BuildDeps" </> "InternalLibrary3" + , configOpts = [] + , distPref = Nothing + } + let specTI = PackageSpec + { directory = directory spec </> "to-install" + , configOpts = [] + , distPref = Nothing + } unregister "InternalLibrary3" ghcPkgPath iResult <- cabal_install specTI ghcPath diff --git a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary4/Check.hs b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary4/Check.hs index 70b3eb65d0566cdbedf35b95d35b3de958f42fc7..23cbc179314583940a4213d70d47893411417523 100644 --- a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary4/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary4/Check.hs @@ -8,8 +8,16 @@ import Test.HUnit suite :: FilePath -> FilePath -> Test suite ghcPath ghcPkgPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "BuildDeps" </> "InternalLibrary4") [] - let specTI = PackageSpec (directory spec </> "to-install") [] + let spec = PackageSpec + { directory = "PackageTests" </> "BuildDeps" </> "InternalLibrary4" + , configOpts = [] + , distPref = Nothing + } + let specTI = PackageSpec + { directory = directory spec </> "to-install" + , configOpts = [] + , distPref = Nothing + } unregister "InternalLibrary4" ghcPkgPath iResult <- cabal_install specTI ghcPath diff --git a/Cabal/tests/PackageTests/BuildDeps/SameDepsAllRound/Check.hs b/Cabal/tests/PackageTests/BuildDeps/SameDepsAllRound/Check.hs index 64e224505c299a59b1c46e8694265d6734c3bb48..8ee7e46bd56a94dfb32e2de4e8ce4ed698975ceb 100644 --- a/Cabal/tests/PackageTests/BuildDeps/SameDepsAllRound/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/SameDepsAllRound/Check.hs @@ -8,7 +8,11 @@ import qualified Control.Exception as E suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "BuildDeps" </> "SameDepsAllRound") [] + let spec = PackageSpec + { directory = "PackageTests" </> "BuildDeps" </> "SameDepsAllRound" + , configOpts = [] + , distPref = Nothing + } result <- cabal_build spec ghcPath do assertEqual "cabal build should succeed - see test-log.txt" True (successful result) diff --git a/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps1/Check.hs b/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps1/Check.hs index a9e3a6d1547ee994e3ab36b1626b9c3235e83818..22ade2e7f01806833b9c34d6a9e7f2f610071c5a 100644 --- a/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps1/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps1/Check.hs @@ -10,7 +10,11 @@ import Text.Regex.Posix suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "BuildDeps" </> "TargetSpecificDeps1") [] + let spec = PackageSpec + { directory = "PackageTests" </> "BuildDeps" </> "TargetSpecificDeps1" + , configOpts = [] + , distPref = Nothing + } result <- cabal_build spec ghcPath do assertEqual "cabal build should fail - see test-log.txt" False (successful result) diff --git a/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps2/Check.hs b/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps2/Check.hs index 2bd072337407b0576cf0c53dbccff6b6cbb160ac..f8dbe8ba2e1ab512b608c59756d27b7f6d0ce304 100644 --- a/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps2/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps2/Check.hs @@ -8,7 +8,11 @@ import qualified Control.Exception as E suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "BuildDeps" </> "TargetSpecificDeps2") [] + let spec = PackageSpec + { directory = "PackageTests" </> "BuildDeps" </> "TargetSpecificDeps2" + , configOpts = [] + , distPref = Nothing + } result <- cabal_build spec ghcPath do assertEqual "cabal build should succeed - see test-log.txt" True (successful result) diff --git a/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps3/Check.hs b/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps3/Check.hs index a359e64bcab59c88acea27cb56b705a0f80ad5e2..c8881433bfb3619ff56e3941b2d8c05e05dc594c 100644 --- a/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps3/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/TargetSpecificDeps3/Check.hs @@ -10,7 +10,11 @@ import Text.Regex.Posix suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "BuildDeps" </> "TargetSpecificDeps3") [] + let spec = PackageSpec + { directory = "PackageTests" </> "BuildDeps" </> "TargetSpecificDeps3" + , configOpts = [] + , distPref = Nothing + } result <- cabal_build spec ghcPath do assertEqual "cabal build should fail - see test-log.txt" False (successful result) diff --git a/Cabal/tests/PackageTests/CMain/Check.hs b/Cabal/tests/PackageTests/CMain/Check.hs index ed173a0fecd0b32e085e97932de176e5fbeb9f19..44fe4ae2f1abe234b06eac4125eb41dd06d3f0df 100644 --- a/Cabal/tests/PackageTests/CMain/Check.hs +++ b/Cabal/tests/PackageTests/CMain/Check.hs @@ -11,6 +11,10 @@ dir = "PackageTests" </> "CMain" checkBuild :: FilePath -> Test checkBuild ghcPath = TestCase $ do - let spec = PackageSpec dir [] + let spec = PackageSpec + { directory = dir + , distPref = Nothing + , configOpts = [] + } buildResult <- cabal_build spec ghcPath assertBuildSucceeded buildResult diff --git a/Cabal/tests/PackageTests/DeterministicAr/Check.hs b/Cabal/tests/PackageTests/DeterministicAr/Check.hs index 9930b3607566195c5c82489265bed56ae8514f74..28d94ef60ac4400ce9c7a052928a9f6222d6f13b 100644 --- a/Cabal/tests/PackageTests/DeterministicAr/Check.hs +++ b/Cabal/tests/PackageTests/DeterministicAr/Check.hs @@ -51,7 +51,11 @@ this = "DeterministicAr" suite :: FilePath -> FilePath -> Test suite ghcPath ghcPkgPath = TestCase $ do let dir = "PackageTests" </> this - let spec = PackageSpec dir [] + let spec = PackageSpec + { directory = dir + , configOpts = [] + , distPref = Nothing + } unregister this ghcPkgPath iResult <- cabal_install spec ghcPath diff --git a/Cabal/tests/PackageTests/EmptyLib/Check.hs b/Cabal/tests/PackageTests/EmptyLib/Check.hs index efeb2cb45b5475c67e7fb3496c327fc634947335..e4f182cc658708ded9b627acc930c0ec0050c019 100644 --- a/Cabal/tests/PackageTests/EmptyLib/Check.hs +++ b/Cabal/tests/PackageTests/EmptyLib/Check.hs @@ -7,7 +7,10 @@ import Test.HUnit -- See https://github.com/haskell/cabal/issues/1241 emptyLib :: FilePath -> Test emptyLib ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "EmptyLib" - </> "empty") [] + let spec = PackageSpec + { directory = "PackageTests" </> "EmptyLib" </> "empty" + , configOpts = [] + , distPref = Nothing + } result <- cabal_build spec ghcPath assertBuildSucceeded result diff --git a/Cabal/tests/PackageTests/Haddock/Check.hs b/Cabal/tests/PackageTests/Haddock/Check.hs index 0d41dd45156220bab38f43d696aff657b56ca2c1..7fc2f3afbc8cf6fd2134dffe3ed4a47d9ea79668 100644 --- a/Cabal/tests/PackageTests/Haddock/Check.hs +++ b/Cabal/tests/PackageTests/Haddock/Check.hs @@ -18,7 +18,11 @@ suite :: FilePath -> Test suite ghcPath = TestCase $ do let dir = "PackageTests" </> this haddocksDir = dir </> "dist" </> "doc" </> "html" </> "Haddock" - spec = PackageSpec dir [] + spec = PackageSpec + { directory = dir + , configOpts = [] + , distPref = Nothing + } haddocksDirExists <- doesDirectoryExist haddocksDir when haddocksDirExists (removeDirectoryRecursive haddocksDir) diff --git a/Cabal/tests/PackageTests/OrderFlags/Check.hs b/Cabal/tests/PackageTests/OrderFlags/Check.hs index 44c818db9b9b120cc31f008371448dae1697da45..ebda768242d33d5580d700e3efcd134f6279fcbd 100644 --- a/Cabal/tests/PackageTests/OrderFlags/Check.hs +++ b/Cabal/tests/PackageTests/OrderFlags/Check.hs @@ -11,7 +11,11 @@ import Prelude hiding (catch) suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "OrderFlags") [] + let spec = PackageSpec + { directory = "PackageTests" </> "OrderFlags" + , configOpts = [] + , distPref = Nothing + } result <- cabal_build spec ghcPath do assertEqual "cabal build should succeed - see test-log.txt" True (successful result) diff --git a/Cabal/tests/PackageTests/PackageTester.hs b/Cabal/tests/PackageTests/PackageTester.hs index c2dddfdb0e7ed3eecd87199d5739491eb99b9e78..71c349e35aa4488942a0a06160687547a25a90ae 100644 --- a/Cabal/tests/PackageTests/PackageTester.hs +++ b/Cabal/tests/PackageTests/PackageTester.hs @@ -51,6 +51,7 @@ import Distribution.Verbosity (Verbosity, flagToVerbosity, normal) data PackageSpec = PackageSpec { directory :: FilePath + , distPref :: Maybe FilePath , configOpts :: [String] } @@ -180,7 +181,10 @@ compileSetup packageDir ghcPath = do -- | Returns the command that was issued, the return code, and the output text. cabal :: PackageSpec -> [(String, Maybe String)] -> [String] -> FilePath -> IO (String, ExitCode, String) -cabal spec envOverrides cabalArgs ghcPath = do +cabal spec envOverrides cabalArgs_ ghcPath = do + let cabalArgs = case distPref spec of + Nothing -> cabalArgs_ + Just dist -> ("--builddir=" ++ dist) : cabalArgs_ customSetup <- doesFileExist (directory spec </> "Setup.hs") if customSetup then do diff --git a/Cabal/tests/PackageTests/PathsModule/Executable/Check.hs b/Cabal/tests/PackageTests/PathsModule/Executable/Check.hs index 2bca087a266611b070c89a220f252ae0fcce04f1..f2a567a161a721ded4584b0f5e45bf901948b773 100644 --- a/Cabal/tests/PackageTests/PathsModule/Executable/Check.hs +++ b/Cabal/tests/PackageTests/PathsModule/Executable/Check.hs @@ -7,7 +7,10 @@ import Test.HUnit suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "PathsModule" </> "Executable") - [] + let spec = PackageSpec + { directory = "PackageTests" </> "PathsModule" </> "Executable" + , distPref = Nothing + , configOpts = [] + } result <- cabal_build spec ghcPath assertBuildSucceeded result diff --git a/Cabal/tests/PackageTests/PathsModule/Library/Check.hs b/Cabal/tests/PackageTests/PathsModule/Library/Check.hs index 48aa3951fd1c29b38de90defc8f5d117eda04ec6..b3a4ebbf034ddfd2f88d27205e649e64501bcca2 100644 --- a/Cabal/tests/PackageTests/PathsModule/Library/Check.hs +++ b/Cabal/tests/PackageTests/PathsModule/Library/Check.hs @@ -7,6 +7,10 @@ import Test.HUnit suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "PathsModule" </> "Library") [] + let spec = PackageSpec + { directory = "PackageTests" </> "PathsModule" </> "Library" + , distPref = Nothing + , configOpts = [] + } result <- cabal_build spec ghcPath assertBuildSucceeded result diff --git a/Cabal/tests/PackageTests/PreProcess/Check.hs b/Cabal/tests/PackageTests/PreProcess/Check.hs index 96cbe8a3eaed72c15a932b42b7d4aa1dc085639e..7ee52d7d6b934735f6c284a9a0b8b014f9bb2081 100644 --- a/Cabal/tests/PackageTests/PreProcess/Check.hs +++ b/Cabal/tests/PackageTests/PreProcess/Check.hs @@ -7,7 +7,10 @@ import Test.HUnit suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "PreProcess") - ["--enable-tests", "--enable-benchmarks"] + let spec = PackageSpec + { directory = "PackageTests" </> "PreProcess" + , distPref = Nothing + , configOpts = ["--enable-tests", "--enable-benchmarks"] + } result <- cabal_build spec ghcPath assertBuildSucceeded result diff --git a/Cabal/tests/PackageTests/ReexportedModules/Check.hs b/Cabal/tests/PackageTests/ReexportedModules/Check.hs index c4778cb3564dc6e7682a030afbf3fe91af5ca87c..416bcbdb38b7dafbae27e050bad5779e8f48874d 100644 --- a/Cabal/tests/PackageTests/ReexportedModules/Check.hs +++ b/Cabal/tests/PackageTests/ReexportedModules/Check.hs @@ -29,6 +29,10 @@ suite ghcPath = TestCase $ do . reads $ xs when compat $ do - let spec = PackageSpec ("PackageTests" </> "ReexportedModules") [] + let spec = PackageSpec + { directory = "PackageTests" </> "ReexportedModules" + , configOpts = [] + , distPref = Nothing + } result <- cabal_build spec ghcPath assertBuildSucceeded result diff --git a/Cabal/tests/PackageTests/TemplateHaskell/Check.hs b/Cabal/tests/PackageTests/TemplateHaskell/Check.hs index be05418209b300bd0874a2f056221d5c19fe7883..11d2c0e0aaa7a293c76b6ed25b8f9c06dbbe9c25 100644 --- a/Cabal/tests/PackageTests/TemplateHaskell/Check.hs +++ b/Cabal/tests/PackageTests/TemplateHaskell/Check.hs @@ -6,8 +6,11 @@ import Test.HUnit vanilla :: FilePath -> Test vanilla ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> - "TemplateHaskell" </> "vanilla") [] + let spec = PackageSpec + { directory = "PackageTests" </> "TemplateHaskell" </> "vanilla" + , configOpts = [] + , distPref = Nothing + } result <- cabal_build spec ghcPath assertBuildSucceeded result @@ -16,8 +19,11 @@ profiling ghcPath = TestCase $ do let flags = ["--enable-library-profiling" -- ,"--disable-library-vanilla" ,"--enable-profiling"] - spec = PackageSpec ("PackageTests" </> - "TemplateHaskell" </> "profiling") flags + spec = PackageSpec + { directory = "PackageTests" </> "TemplateHaskell" </> "profiling" + , configOpts = flags + , distPref = Nothing + } result <- cabal_build spec ghcPath assertBuildSucceeded result @@ -26,7 +32,10 @@ dynamic ghcPath = TestCase $ do let flags = ["--enable-shared" -- ,"--disable-library-vanilla" ,"--enable-executable-dynamic"] - spec = PackageSpec ("PackageTests" </> - "TemplateHaskell" </> "dynamic") flags + spec = PackageSpec + { directory = "PackageTests" </> "TemplateHaskell" </> "dynamic" + , configOpts = flags + , distPref = Nothing + } result <- cabal_build spec ghcPath assertBuildSucceeded result diff --git a/Cabal/tests/PackageTests/TestOptions/Check.hs b/Cabal/tests/PackageTests/TestOptions/Check.hs index 252393f167cdc60f04755a49fe02f69554f49e31..4731d36de66b7d0b7f1475f867961ca9d1df182e 100644 --- a/Cabal/tests/PackageTests/TestOptions/Check.hs +++ b/Cabal/tests/PackageTests/TestOptions/Check.hs @@ -6,8 +6,11 @@ import Test.HUnit suite :: FilePath -> Test suite ghcPath = TestCase $ do - let spec = PackageSpec ("PackageTests" </> "TestOptions") - ["--enable-tests"] + let spec = PackageSpec + { directory = "PackageTests" </> "TestOptions" + , configOpts = ["--enable-tests"] + , distPref = Nothing + } _ <- cabal_build spec ghcPath result <- cabal_test spec [] ["--test-options=1 2 3"] ghcPath let message = "\"cabal test\" did not pass the correct options to the " diff --git a/Cabal/tests/PackageTests/TestStanza/Check.hs b/Cabal/tests/PackageTests/TestStanza/Check.hs index 6489afa5f2cc128319da56a32139d2b895a7b72a..940cbcebad41d23fd78bd34ce6b4ca71f449e24a 100644 --- a/Cabal/tests/PackageTests/TestStanza/Check.hs +++ b/Cabal/tests/PackageTests/TestStanza/Check.hs @@ -23,7 +23,11 @@ suite :: FilePath -> Test suite ghcPath = TestCase $ do let dir = "PackageTests" </> "TestStanza" pdFile = dir </> "my" <.> "cabal" - spec = PackageSpec dir [] + spec = PackageSpec + { directory = dir + , configOpts = [] + , distPref = Nothing + } result <- cabal_configure spec ghcPath assertOutputDoesNotContain "unknown section type" result genPD <- readPackageDescription silent pdFile diff --git a/Cabal/tests/PackageTests/TestSuiteExeV10/Check.hs b/Cabal/tests/PackageTests/TestSuiteExeV10/Check.hs index 162d86084863b786ca230c2295956d11da16c206..bbe5b4a5935f42751daac430feb257c59a3e9b44 100644 --- a/Cabal/tests/PackageTests/TestSuiteExeV10/Check.hs +++ b/Cabal/tests/PackageTests/TestSuiteExeV10/Check.hs @@ -8,6 +8,7 @@ import Test.Framework (testGroup) import Test.Framework.Providers.HUnit (hUnitTestToTests) import Test.HUnit hiding ( path ) +import Distribution.Simple.Configure (getPersistBuildConfig) import Distribution.Simple.Hpc import PackageTests.PackageTester @@ -16,8 +17,8 @@ checks :: FilePath -> [TF.Test] checks ghcPath = [ hunit "Test" $ checkTest ghcPath ] ++ hpcTestMatrix ghcPath ++ - [ hunit "TestWithoutHpc/NoTix" $ checkTestWithoutHpcNoTix ghcPath - , hunit "TestWithoutHpc/NoMarkup" $ checkTestWithoutHpcNoMarkup ghcPath + [ hunit "TestNoHpc/NoTix" $ checkTestNoHpcNoTix ghcPath + , hunit "TestNoHpc/NoMarkup" $ checkTestNoHpcNoMarkup ghcPath ] hpcTestMatrix :: FilePath -> [TF.Test] @@ -27,7 +28,7 @@ hpcTestMatrix ghcPath = do exeDyn <- [True, False] shared <- [True, False] let name = concat - [ "WithHpc/" + [ "WithHpc-" , if libProf then "LibProf" else "" , if exeProf then "ExeProf" else "" , if exeDyn then "ExeDyn" else "" @@ -42,13 +43,13 @@ hpcTestMatrix ghcPath = do , enable exeDyn "executable-dynamic" , enable shared "shared" ] - return $ hunit name $ checkTestWithHpc ghcPath opts + return $ hunit name $ checkTestWithHpc ghcPath name opts dir :: FilePath dir = "PackageTests" </> "TestSuiteExeV10" checkTest :: FilePath -> Test -checkTest ghcPath = TestCase $ buildAndTest ghcPath [] [] +checkTest ghcPath = TestCase $ buildAndTest ghcPath "Default" [] [] shouldExist :: FilePath -> Assertion shouldExist path = doesFileExist path >>= assertBool (path ++ " should exist") @@ -58,39 +59,49 @@ shouldNotExist path = doesFileExist path >>= assertBool (path ++ " should exist") . not -- | Ensure that both .tix file and markup are generated if coverage is enabled. -checkTestWithHpc :: FilePath -> [String] -> Test -checkTestWithHpc ghcPath extraOpts = TestCase $ do - buildAndTest ghcPath [] ("--enable-coverage" : extraOpts) - shouldExist $ mixDir (dir </> "dist") "my-0.1" </> "my-0.1" </> "Foo.mix" - shouldExist $ mixDir (dir </> "dist") "test-Foo" </> "Main.mix" - shouldExist $ tixFilePath (dir </> "dist") "test-Foo" - shouldExist $ htmlDir (dir </> "dist") "test-Foo" </> "hpc_index.html" +checkTestWithHpc :: FilePath -> String -> [String] -> Test +checkTestWithHpc ghcPath name extraOpts = TestCase $ do + buildAndTest ghcPath name [] ("--enable-coverage" : extraOpts) + lbi <- getPersistBuildConfig (dir </> "dist-" ++ name) + let way = guessWay lbi + shouldExist $ mixDir (dir </> "dist-" ++ name) way "my-0.1" </> "my-0.1" </> "Foo.mix" + shouldExist $ mixDir (dir </> "dist-" ++ name) way "test-Foo" </> "Main.mix" + shouldExist $ tixFilePath (dir </> "dist-" ++ name) way "test-Foo" + shouldExist $ htmlDir (dir </> "dist-" ++ name) way "test-Foo" </> "hpc_index.html" -- | Ensures that even if -fhpc is manually provided no .tix file is output. -checkTestWithoutHpcNoTix :: FilePath -> Test -checkTestWithoutHpcNoTix ghcPath = TestCase $ do - buildAndTest ghcPath [] [ "--ghc-option=-fhpc" - , "--ghc-option=-hpcdir" - , "--ghc-option=dist/hpc" ] - shouldNotExist $ tixFilePath (dir </> "dist") "test-Foo" +checkTestNoHpcNoTix :: FilePath -> Test +checkTestNoHpcNoTix ghcPath = TestCase $ do + buildAndTest ghcPath "NoHpcNoTix" [] + [ "--ghc-option=-fhpc" + , "--ghc-option=-hpcdir" + , "--ghc-option=dist-NoHpcNoTix/hpc/vanilla" ] + lbi <- getPersistBuildConfig (dir </> "dist-NoHpcNoTix") + let way = guessWay lbi + shouldNotExist $ tixFilePath (dir </> "dist-NoHpcNoTix") way "test-Foo" -- | Ensures that even if a .tix file happens to be left around -- markup isn't generated. -checkTestWithoutHpcNoMarkup :: FilePath -> Test -checkTestWithoutHpcNoMarkup ghcPath = TestCase $ do - let tixFile = tixFilePath "dist" "test-Foo" - buildAndTest ghcPath [("HPCTIXFILE", Just tixFile)] - [ "--ghc-option=-fhpc" - , "--ghc-option=-hpcdir" - , "--ghc-option=dist/hpc" ] - shouldNotExist $ htmlDir (dir </> "dist") "test-Foo" </> "hpc_index.html" +checkTestNoHpcNoMarkup :: FilePath -> Test +checkTestNoHpcNoMarkup ghcPath = TestCase $ do + let tixFile = tixFilePath "dist-NoHpcNoMarkup" Vanilla "test-Foo" + buildAndTest ghcPath "NoHpcNoMarkup" + [("HPCTIXFILE", Just tixFile)] + [ "--ghc-option=-fhpc" + , "--ghc-option=-hpcdir" + , "--ghc-option=dist-NoHpcNoMarkup/hpc/vanilla" ] + shouldNotExist $ htmlDir (dir </> "dist-NoHpcNoMarkup") Vanilla "test-Foo" </> "hpc_index.html" -- | Build and test a package and ensure that both were successful. -- -- The flag "--enable-tests" is provided in addition to the given flags. -buildAndTest :: FilePath -> [(String, Maybe String)] -> [String] -> IO () -buildAndTest ghcPath envOverrides flags = do - let spec = PackageSpec dir $ "--enable-tests" : flags +buildAndTest :: FilePath -> String -> [(String, Maybe String)] -> [String] -> IO () +buildAndTest ghcPath name envOverrides flags = do + let spec = PackageSpec + { directory = dir + , distPref = Just $ "dist-" ++ name + , configOpts = "--enable-tests" : flags + } buildResult <- cabal_build spec ghcPath assertBuildSucceeded buildResult testResult <- cabal_test spec envOverrides [] ghcPath