diff --git a/Cabal/tests/PackageTests.hs b/Cabal/tests/PackageTests.hs index 25efc219aeb9c9d51e2b1e8fe9351c4d9eab3131..5ed96b202152923aabfd652c663b16ed8b9cd59a 100644 --- a/Cabal/tests/PackageTests.hs +++ b/Cabal/tests/PackageTests.hs @@ -26,7 +26,6 @@ import PackageTests.BuildDeps.InternalLibrary3.Check import PackageTests.BuildDeps.InternalLibrary4.Check import PackageTests.BuildDeps.SameDepsAllRound.Check import PackageTests.BuildDeps.TargetSpecificDeps1.Check -import PackageTests.BuildDeps.TargetSpecificDeps1.Check import PackageTests.BuildDeps.TargetSpecificDeps2.Check import PackageTests.BuildDeps.TargetSpecificDeps3.Check import PackageTests.PathsModule.Executable.Check @@ -40,7 +39,7 @@ hunit :: TestName -> HUnit.Test -> Test hunit name test = testGroup name $ hUnitTestToTests test tests :: Version -> [Test] -tests cabalVersion = +tests version = [ hunit "BuildDeps/SameDepsAllRound" PackageTests.BuildDeps.SameDepsAllRound.Check.suite -- The two following tests were disabled by Johan Tibell as @@ -50,7 +49,7 @@ tests cabalVersion = -- , hunit "BuildDeps/GlobalBuildDepsNotAdditive2/" -- PackageTests.BuildDeps.GlobalBuildDepsNotAdditive2.Check.suite , hunit "BuildDeps/InternalLibrary0" - (PackageTests.BuildDeps.InternalLibrary0.Check.suite cabalVersion) + (PackageTests.BuildDeps.InternalLibrary0.Check.suite version) , hunit "TestStanza" PackageTests.TestStanza.Check.suite -- ^ The Test stanza test will eventually be required -- only for higher versions. @@ -58,12 +57,11 @@ tests cabalVersion = , hunit "TestSuiteExeV10/TestWithHpc" PackageTests.TestSuiteExeV10.Check.checkTestWithHpc , hunit "TestOptions" PackageTests.TestOptions.Check.suite - , hunit "BenchmarkStanza" - (PackageTests.BenchmarkStanza.Check.suite cabalVersion) + , hunit "BenchmarkStanza" PackageTests.BenchmarkStanza.Check.suite -- ^ The benchmark stanza test will eventually be required -- only for higher versions. , hunit "BenchmarkExeV10/Test" - (PackageTests.BenchmarkExeV10.Check.checkBenchmark cabalVersion) + PackageTests.BenchmarkExeV10.Check.checkBenchmark , hunit "BenchmarkOptions" PackageTests.BenchmarkOptions.Check.suite , hunit "TemplateHaskell/profiling" PackageTests.TemplateHaskell.Check.profiling @@ -74,24 +72,25 @@ tests cabalVersion = , hunit "PathsModule/Library" PackageTests.PathsModule.Library.Check.suite ] ++ -- These tests are only required to pass on cabal version >= 1.7 - (if cabalVersion >= Version [1, 7] [] - then [ hunit "BuildDeps/TargetSpecificDeps1/" + (if version >= Version [1, 7] [] + then [ hunit "BuildDeps/TargetSpecificDeps1" PackageTests.BuildDeps.TargetSpecificDeps1.Check.suite - , hunit "BuildDeps/TargetSpecificDeps2/" + , hunit "BuildDeps/TargetSpecificDeps2" PackageTests.BuildDeps.TargetSpecificDeps2.Check.suite - , hunit "BuildDeps/TargetSpecificDeps3/" + , hunit "BuildDeps/TargetSpecificDeps3" PackageTests.BuildDeps.TargetSpecificDeps3.Check.suite - , hunit "BuildDeps/InternalLibrary1/" + , hunit "BuildDeps/InternalLibrary1" PackageTests.BuildDeps.InternalLibrary1.Check.suite - , hunit "BuildDeps/InternalLibrary2/" + , hunit "BuildDeps/InternalLibrary2" PackageTests.BuildDeps.InternalLibrary2.Check.suite - , hunit "BuildDeps/InternalLibrary3/" + , hunit "BuildDeps/InternalLibrary3" PackageTests.BuildDeps.InternalLibrary3.Check.suite - , hunit "BuildDeps/InternalLibrary4/" + , hunit "BuildDeps/InternalLibrary4" PackageTests.BuildDeps.InternalLibrary4.Check.suite ] else []) +main :: IO () main = do 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 2d5a75afe35dce36fb9c8239fc609cc63f14f119..1061e4309f21b9643d2c98ab40230ead69c03b4f 100644 --- a/Cabal/tests/PackageTests/BenchmarkExeV10/Check.hs +++ b/Cabal/tests/PackageTests/BenchmarkExeV10/Check.hs @@ -2,19 +2,15 @@ module PackageTests.BenchmarkExeV10.Check ( checkBenchmark ) where -import Distribution.PackageDescription ( Benchmark(..), emptyBenchmark ) -import Distribution.Simple.Hpc -import Distribution.Version -import Test.HUnit -import System.Directory -import System.FilePath import PackageTests.PackageTester +import System.FilePath +import Test.HUnit dir :: FilePath dir = "PackageTests" </> "BenchmarkExeV10" -checkBenchmark :: Version -> Test -checkBenchmark cabalVersion = TestCase $ do +checkBenchmark :: Test +checkBenchmark = TestCase $ do let spec = PackageSpec dir ["--enable-benchmarks"] buildResult <- cabal_build spec assertBuildSucceeded buildResult diff --git a/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs b/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs index dbb7a74e8c1dce2b4f3c3db91f42f7b389c7668d..0046fed1d98c7db9979b564fe105b99884d41076 100644 --- a/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs +++ b/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs @@ -1,14 +1,13 @@ module PackageTests.BenchmarkOptions.Check where -import Test.HUnit -import System.FilePath import PackageTests.PackageTester +import System.FilePath +import Test.HUnit suite :: Test suite = TestCase $ do - let directory = "PackageTests" </> "BenchmarkOptions" - pdFile = directory </> "BenchmarkOptions" <.> "cabal" - spec = PackageSpec directory ["--enable-benchmarks"] + let spec = PackageSpec ("PackageTests" </> "BenchmarkOptions") + ["--enable-benchmarks"] _ <- cabal_build spec result <- cabal_bench spec ["--benchmark-options=1 2 3"] let message = "\"cabal bench\" did not pass the correct options to the " @@ -18,6 +17,6 @@ suite = TestCase $ do , "--benchmark-option=2" , "--benchmark-option=3" ] - let message = "\"cabal bench\" did not pass the correct options to the " - ++ "benchmark executable with \"--benchmark-option\"" - assertEqual message True $ successful result' + let message' = "\"cabal bench\" did not pass the correct options to the " + ++ "benchmark executable with \"--benchmark-option\"" + assertEqual message' True $ successful result' diff --git a/Cabal/tests/PackageTests/BenchmarkStanza/Check.hs b/Cabal/tests/PackageTests/BenchmarkStanza/Check.hs index 3f83002f879b1bd49925e11f7f73976294902830..264ee2ae7a7719e786537dd2b8376255a2e6a3b9 100644 --- a/Cabal/tests/PackageTests/BenchmarkStanza/Check.hs +++ b/Cabal/tests/PackageTests/BenchmarkStanza/Check.hs @@ -3,41 +3,33 @@ module PackageTests.BenchmarkStanza.Check where import Test.HUnit import System.FilePath import PackageTests.PackageTester -import Data.List (isInfixOf, intercalate) import Distribution.Version import Distribution.PackageDescription.Parse ( readPackageDescription ) import Distribution.PackageDescription.Configuration ( finalizePackageDescription ) import Distribution.Package - ( PackageIdentifier(..), PackageName(..), Dependency(..) ) + ( PackageName(..), Dependency(..) ) import Distribution.PackageDescription - ( PackageDescription(..), BuildInfo(..), Benchmark(..), Library(..) + ( PackageDescription(..), BuildInfo(..), Benchmark(..) , BenchmarkInterface(..) - , TestType(..), emptyPackageDescription, emptyBuildInfo, emptyLibrary - , emptyBenchmark, BuildType(..) ) + , emptyBuildInfo + , emptyBenchmark ) import Distribution.Verbosity (silent) -import Distribution.License (License(..)) -import Distribution.ModuleName (fromString) import Distribution.System (buildPlatform) import Distribution.Compiler ( CompilerId(..), CompilerFlavor(..) ) import Distribution.Text -suite :: Version -> Test -suite cabalVersion = TestCase $ do - let directory = "PackageTests" </> "BenchmarkStanza" - pdFile = directory </> "my" <.> "cabal" - spec = PackageSpec directory [] +suite :: Test +suite = TestCase $ do + let dir = "PackageTests" </> "BenchmarkStanza" + pdFile = dir </> "my" <.> "cabal" + spec = PackageSpec dir [] result <- cabal_configure spec - let message = "cabal configure should recognize benchmark section" - test = "unknown section type" - `isInfixOf` - (intercalate " " $ lines $ outputText result) - assertEqual message False test + assertOutputDoesNotContain "unknown section type" result genPD <- readPackageDescription silent pdFile let compiler = CompilerId GHC $ Version [6, 12, 2] [] - anyV = intersectVersionRanges anyVersion anyVersion anticipatedBenchmark = emptyBenchmark { benchmarkName = "dummy" , benchmarkInterface = BenchmarkExeV10 (Version [1,0] []) "dummy.hs" diff --git a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary0/Check.hs b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary0/Check.hs index 059ebf301f386094391ef07a2c8572622d8af0c6..fb1e9e58e0cfdad2c6a29b6489f8f328f2ab69cf 100644 --- a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary0/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary0/Check.hs @@ -1,13 +1,11 @@ module PackageTests.BuildDeps.InternalLibrary0.Check where -import Test.HUnit -import PackageTests.PackageTester import Control.Monad -import System.FilePath import Data.Version -import Data.List (isInfixOf, intercalate) -import Control.Exception +import PackageTests.PackageTester import Prelude hiding (catch) +import System.FilePath +import Test.HUnit suite :: Version -> Test diff --git a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary1/Check.hs b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary1/Check.hs index 4c885694f1633954c82dae9da7cd473a84927d75..ec5f989212891500b2b2414508585c0df50cd4a6 100644 --- a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary1/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary1/Check.hs @@ -1,10 +1,9 @@ module PackageTests.BuildDeps.InternalLibrary1.Check where -import Test.HUnit import PackageTests.PackageTester -import System.FilePath -import Control.Exception import Prelude hiding (catch) +import System.FilePath +import Test.HUnit suite :: Test diff --git a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary2/Check.hs b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary2/Check.hs index d6319875037bffe37440533888322e3dd3602155..1f46455c548a18088f5f431bf3d6d0d3bd306f75 100644 --- a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary2/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary2/Check.hs @@ -1,11 +1,10 @@ module PackageTests.BuildDeps.InternalLibrary2.Check where -import Test.HUnit -import PackageTests.PackageTester -import System.FilePath import qualified Data.ByteString.Char8 as C -import Control.Exception +import PackageTests.PackageTester import Prelude hiding (catch) +import System.FilePath +import Test.HUnit suite :: Test diff --git a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary3/Check.hs b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary3/Check.hs index 67ced0575afe987d80f8e47008b25daa712a2590..9f5426dabe6d7bead48df143229bc51f39df5fac 100644 --- a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary3/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary3/Check.hs @@ -1,11 +1,10 @@ module PackageTests.BuildDeps.InternalLibrary3.Check where -import Test.HUnit -import PackageTests.PackageTester -import System.FilePath import qualified Data.ByteString.Char8 as C -import Control.Exception +import PackageTests.PackageTester import Prelude hiding (catch) +import System.FilePath +import Test.HUnit suite :: Test diff --git a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary4/Check.hs b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary4/Check.hs index 331e592ce3e3de94f3f0d34a49a0221038a9da5f..92c0a5c16d8d868a34b31926d13af5400c5f0082 100644 --- a/Cabal/tests/PackageTests/BuildDeps/InternalLibrary4/Check.hs +++ b/Cabal/tests/PackageTests/BuildDeps/InternalLibrary4/Check.hs @@ -1,11 +1,10 @@ module PackageTests.BuildDeps.InternalLibrary4.Check where -import Test.HUnit -import PackageTests.PackageTester -import System.FilePath import qualified Data.ByteString.Char8 as C -import Control.Exception +import PackageTests.PackageTester import Prelude hiding (catch) +import System.FilePath +import Test.HUnit suite :: Test diff --git a/Cabal/tests/PackageTests/PackageTester.hs b/Cabal/tests/PackageTests/PackageTester.hs index fd14386bdc65d9a94250ee6e9d389fd141b7a460..34db7264569c874d53a3e62768cb00f30e4a5345 100644 --- a/Cabal/tests/PackageTests/PackageTester.hs +++ b/Cabal/tests/PackageTests/PackageTester.hs @@ -14,7 +14,8 @@ module PackageTests.PackageTester ( assertBuildFailed, assertTestSucceeded, assertInstallSucceeded, - assertOutputContains + assertOutputContains, + assertOutputDoesNotContain ) where import qualified Control.Exception.Extensible as E @@ -220,6 +221,14 @@ assertOutputContains needle result = "in output: " ++ output where output = outputText result +assertOutputDoesNotContain :: String -> Result -> Assertion +assertOutputDoesNotContain needle result = + when (needle `isInfixOf` (intercalate " " $ lines output)) $ + assertFailure $ + "unexpected: " ++ needle ++ + " in output: " ++ output + where output = outputText result + ------------------------------------------------------------------------ -- Finding ghc and related tools -- diff --git a/Cabal/tests/PackageTests/PathsModule/Executable/Check.hs b/Cabal/tests/PackageTests/PathsModule/Executable/Check.hs index a33ceb1cd7c90c487a3649f5ade4d93f3ef5f55a..48950e53a84ba98fac8a38f41ababbae5988a4cc 100644 --- a/Cabal/tests/PackageTests/PathsModule/Executable/Check.hs +++ b/Cabal/tests/PackageTests/PathsModule/Executable/Check.hs @@ -1,8 +1,7 @@ module PackageTests.PathsModule.Executable.Check (suite) where -import Distribution.Version -import PackageTests.PackageTester (PackageSpec(..), assertBuildSucceeded, - cabal_build) +import PackageTests.PackageTester + (PackageSpec(..), assertBuildSucceeded, cabal_build) import System.FilePath import Test.HUnit diff --git a/Cabal/tests/PackageTests/PathsModule/Library/Check.hs b/Cabal/tests/PackageTests/PathsModule/Library/Check.hs index 3302ba2a6e36a7dd6da3cdbddb89777ac57355fb..420b2044bcd7a7ec71db567fc9d8244470442f67 100644 --- a/Cabal/tests/PackageTests/PathsModule/Library/Check.hs +++ b/Cabal/tests/PackageTests/PathsModule/Library/Check.hs @@ -1,8 +1,7 @@ module PackageTests.PathsModule.Library.Check (suite) where -import Distribution.Version -import PackageTests.PackageTester (PackageSpec(..), assertBuildSucceeded, - cabal_build) +import PackageTests.PackageTester + (PackageSpec(..), assertBuildSucceeded, cabal_build) import System.FilePath import Test.HUnit diff --git a/Cabal/tests/PackageTests/TemplateHaskell/Check.hs b/Cabal/tests/PackageTests/TemplateHaskell/Check.hs index c880c8ee46983005beec5658ba92b91e0ddce4c9..346c9ba1d09d55ff4caa3e8a3f0dc00ea025c613 100644 --- a/Cabal/tests/PackageTests/TemplateHaskell/Check.hs +++ b/Cabal/tests/PackageTests/TemplateHaskell/Check.hs @@ -1,28 +1,8 @@ module PackageTests.TemplateHaskell.Check where -import Test.HUnit -import System.FilePath import PackageTests.PackageTester -import Data.List (isInfixOf, intercalate) -import Distribution.Version -import Distribution.PackageDescription.Parse - ( readPackageDescription ) -import Distribution.PackageDescription.Configuration - ( finalizePackageDescription ) -import Distribution.Package - ( PackageIdentifier(..), PackageName(..), Dependency(..) ) -import Distribution.PackageDescription - ( PackageDescription(..), BuildInfo(..), TestSuite(..), Library(..) - , TestSuiteInterface(..) - , TestType(..), emptyPackageDescription, emptyBuildInfo, emptyLibrary - , emptyTestSuite, BuildType(..) ) -import Distribution.Verbosity (silent) -import Distribution.License (License(..)) -import Distribution.ModuleName (fromString) -import Distribution.System (buildPlatform) -import Distribution.Compiler - ( CompilerId(..), CompilerFlavor(..) ) -import Distribution.Text +import System.FilePath +import Test.HUnit profiling :: Test profiling = TestCase $ do diff --git a/Cabal/tests/PackageTests/TestOptions/Check.hs b/Cabal/tests/PackageTests/TestOptions/Check.hs index 0943530038b006e4c0aaaae73996bcbd8334c424..ea4f4d3b0d443191807b5f8a154e516788c3bf95 100644 --- a/Cabal/tests/PackageTests/TestOptions/Check.hs +++ b/Cabal/tests/PackageTests/TestOptions/Check.hs @@ -1,14 +1,13 @@ module PackageTests.TestOptions.Check where -import Test.HUnit -import System.FilePath import PackageTests.PackageTester +import System.FilePath +import Test.HUnit suite :: Test suite = TestCase $ do - let directory = "PackageTests" </> "TestOptions" - pdFile = directory </> "TestOptions" <.> "cabal" - spec = PackageSpec directory ["--enable-tests"] + let spec = PackageSpec ("PackageTests" </> "TestOptions") + ["--enable-tests"] _ <- cabal_build spec result <- cabal_test spec ["--test-options=1 2 3"] let message = "\"cabal test\" did not pass the correct options to the " @@ -18,6 +17,6 @@ suite = TestCase $ do , "--test-option=2" , "--test-option=3" ] - let message = "\"cabal test\" did not pass the correct options to the " - ++ "test executable with \"--test-option\"" - assertEqual message True $ successful result' + let message' = "\"cabal test\" did not pass the correct options to the " + ++ "test executable with \"--test-option\"" + assertEqual message' True $ successful result' diff --git a/Cabal/tests/PackageTests/TestStanza/Check.hs b/Cabal/tests/PackageTests/TestStanza/Check.hs index 42dd52123eb16fef7ddc3e6d7368335ffc5f402d..fdf47b733ed9c3ed5ed18eafcd2ea5ce88414965 100644 --- a/Cabal/tests/PackageTests/TestStanza/Check.hs +++ b/Cabal/tests/PackageTests/TestStanza/Check.hs @@ -3,39 +3,28 @@ module PackageTests.TestStanza.Check where import Test.HUnit import System.FilePath import PackageTests.PackageTester -import Data.List (isInfixOf, intercalate) import Distribution.Version -import Distribution.PackageDescription.Parse - ( readPackageDescription ) +import Distribution.PackageDescription.Parse (readPackageDescription) import Distribution.PackageDescription.Configuration - ( finalizePackageDescription ) -import Distribution.Package - ( PackageName(..), Dependency(..) ) + (finalizePackageDescription) +import Distribution.Package (PackageName(..), Dependency(..)) import Distribution.PackageDescription - ( PackageDescription(..), BuildInfo(..), TestSuite(..) - , TestSuiteInterface(..), emptyBuildInfo, emptyTestSuite ) + ( PackageDescription(..), BuildInfo(..), TestSuite(..) + , TestSuiteInterface(..), emptyBuildInfo, emptyTestSuite) import Distribution.Verbosity (silent) -import Distribution.License (License(..)) -import Distribution.ModuleName (fromString) import Distribution.System (buildPlatform) -import Distribution.Compiler - ( CompilerId(..), CompilerFlavor(..) ) +import Distribution.Compiler (CompilerId(..), CompilerFlavor(..)) import Distribution.Text suite :: Test suite = TestCase $ do - let directory = "PackageTests" </> "TestStanza" - pdFile = directory </> "my" <.> "cabal" - spec = PackageSpec directory [] + let dir = "PackageTests" </> "TestStanza" + pdFile = dir </> "my" <.> "cabal" + spec = PackageSpec dir [] result <- cabal_configure spec - let message = "cabal configure should recognize test section" - test = "unknown section type" - `isInfixOf` - (intercalate " " $ lines $ outputText result) - assertEqual message False test + assertOutputDoesNotContain "unknown section type" result genPD <- readPackageDescription silent pdFile let compiler = CompilerId GHC $ Version [6, 12, 2] [] - anyV = intersectVersionRanges anyVersion anyVersion anticipatedTestSuite = emptyTestSuite { testName = "dummy" , testInterface = TestSuiteExeV10 (Version [1,0] []) "dummy.hs"