From 8dc0a8dc8e2ec31c5422ddc2d39f5346207381a0 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 28 Mar 2015 22:03:35 -0500 Subject: [PATCH] add deadlock test for detailed-0.9 test suites --- Cabal/Cabal.cabal | 6 ++- Cabal/tests/PackageTests.hs | 3 ++ Cabal/tests/PackageTests/PackageTester.hs | 7 ++++ .../TestSuiteTests/LibV09/Check.hs | 39 +++++++++++++++++++ .../PackageTests/TestSuiteTests/LibV09/Lib.hs | 11 ++++++ .../TestSuiteTests/LibV09/LibV09.cabal | 21 ++++++++++ .../TestSuiteTests/LibV09/tests/Deadlock.hs | 8 ++++ 7 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 Cabal/tests/PackageTests/TestSuiteTests/LibV09/Check.hs create mode 100644 Cabal/tests/PackageTests/TestSuiteTests/LibV09/Lib.hs create mode 100644 Cabal/tests/PackageTests/TestSuiteTests/LibV09/LibV09.cabal create mode 100644 Cabal/tests/PackageTests/TestSuiteTests/LibV09/tests/Deadlock.hs diff --git a/Cabal/Cabal.cabal b/Cabal/Cabal.cabal index 887e63c1849..b0281064352 100644 --- a/Cabal/Cabal.cabal +++ b/Cabal/Cabal.cabal @@ -114,7 +114,10 @@ extra-source-files: tests/PackageTests/TestStanza/my.cabal tests/PackageTests/TestSuiteTests/ExeV10/Foo.hs tests/PackageTests/TestSuiteTests/ExeV10/my.cabal - tests/PackageTests/TestSuiteExeV10/tests/test-Foo.hs + tests/PackageTests/TestSuiteTests/ExeV10/tests/test-Foo.hs + tests/PackageTests/TestSuiteTests/LibV09/LibV09.cabal + tests/PackageTests/TestSuiteTests/LibV09/Lib.hs + tests/PackageTests/TestSuiteTests/LibV09/Deadlock.hs tests/Setup.hs tests/hackage/check.sh tests/hackage/download.sh @@ -303,6 +306,7 @@ test-suite package-tests PackageTests.TestOptions.Check PackageTests.TestStanza.Check PackageTests.TestSuiteTests.ExeV10.Check + PackageTests.TestSuiteTests.LibV09.Check hs-source-dirs: tests build-depends: base, diff --git a/Cabal/tests/PackageTests.hs b/Cabal/tests/PackageTests.hs index 9fac5a38dfe..130f4fb3a52 100644 --- a/Cabal/tests/PackageTests.hs +++ b/Cabal/tests/PackageTests.hs @@ -33,6 +33,7 @@ import PackageTests.Haddock.Check import PackageTests.TestOptions.Check import PackageTests.TestStanza.Check import PackageTests.TestSuiteTests.ExeV10.Check +import PackageTests.TestSuiteTests.LibV09.Check import PackageTests.OrderFlags.Check import PackageTests.ReexportedModules.Check @@ -75,6 +76,8 @@ tests version inplaceSpec ghcPath ghcPkgPath = , testGroup "TestSuiteTests" [ testGroup "ExeV10" (PackageTests.TestSuiteTests.ExeV10.Check.checks ghcPath) + , testGroup "LibV09" + (PackageTests.TestSuiteTests.LibV09.Check.checks inplaceSpec ghcPath) ] , testCase "TestOptions" (PackageTests.TestOptions.Check.suite ghcPath) , testCase "BenchmarkStanza" (PackageTests.BenchmarkStanza.Check.suite ghcPath) diff --git a/Cabal/tests/PackageTests/PackageTester.hs b/Cabal/tests/PackageTests/PackageTester.hs index b2531893ab6..0d98fd40a39 100644 --- a/Cabal/tests/PackageTests/PackageTester.hs +++ b/Cabal/tests/PackageTests/PackageTester.hs @@ -24,6 +24,7 @@ module PackageTests.PackageTester , assertBuildFailed , assertHaddockSucceeded , assertTestSucceeded + , assertTestFailed , assertInstallSucceeded , assertOutputContains , assertOutputDoesNotContain @@ -272,6 +273,12 @@ assertTestSucceeded result = unless (successful result) $ "expected: \'setup test\' should succeed\n" ++ " output: " ++ outputText result +assertTestFailed :: Result -> Assertion +assertTestFailed result = when (successful result) $ + assertFailure $ + "expected: \'setup test\' should fail\n" ++ + " output: " ++ outputText result + assertInstallSucceeded :: Result -> Assertion assertInstallSucceeded result = unless (successful result) $ assertFailure $ diff --git a/Cabal/tests/PackageTests/TestSuiteTests/LibV09/Check.hs b/Cabal/tests/PackageTests/TestSuiteTests/LibV09/Check.hs new file mode 100644 index 00000000000..1526a72182b --- /dev/null +++ b/Cabal/tests/PackageTests/TestSuiteTests/LibV09/Check.hs @@ -0,0 +1,39 @@ +module PackageTests.TestSuiteTests.LibV09.Check (checks) where + +import Test.Tasty +import Test.Tasty.HUnit +import System.FilePath (()) + +import PackageTests.PackageTester + +dir :: FilePath +dir = "PackageTests" "TestSuiteTests" "LibV09" + +checks :: PackageSpec -> FilePath -> [TestTree] +checks inplaceSpec ghcPath = + [ testCase "Build" $ checkBuild inplaceSpec ghcPath + , localOption (mkTimeout $ 10 * 10 ^ (6 :: Int)) + $ testCase "Deadlock" $ checkDeadlock inplaceSpec ghcPath + ] + +checkBuild :: PackageSpec -> FilePath -> Assertion +checkBuild inplaceSpec ghcPath = do + let spec = inplaceSpec + { directory = dir + , distPref = Just $ "dist-Build" + , configOpts = "--enable-tests" : configOpts inplaceSpec + } + buildResult <- cabal_build spec ghcPath + assertBuildSucceeded buildResult + +checkDeadlock :: PackageSpec -> FilePath -> Assertion +checkDeadlock inplaceSpec ghcPath = do + let spec = inplaceSpec + { directory = dir + , distPref = Just $ "dist-Test" + , configOpts = "--enable-tests" : configOpts inplaceSpec + } + buildResult <- cabal_build spec ghcPath + assertBuildSucceeded buildResult + testResult <- cabal_test spec [] [] ghcPath + assertTestFailed testResult diff --git a/Cabal/tests/PackageTests/TestSuiteTests/LibV09/Lib.hs b/Cabal/tests/PackageTests/TestSuiteTests/LibV09/Lib.hs new file mode 100644 index 00000000000..e2c3615f4ca --- /dev/null +++ b/Cabal/tests/PackageTests/TestSuiteTests/LibV09/Lib.hs @@ -0,0 +1,11 @@ +module Lib where + +import Distribution.TestSuite + +nullt x = Test $ TestInstance + { run = return $ Finished (Fail "no reason") + , name = "test " ++ show x + , tags = [] + , options = [] + , setOption = \_ _-> Left "No Options" + } diff --git a/Cabal/tests/PackageTests/TestSuiteTests/LibV09/LibV09.cabal b/Cabal/tests/PackageTests/TestSuiteTests/LibV09/LibV09.cabal new file mode 100644 index 00000000000..6c4f0cd8a5e --- /dev/null +++ b/Cabal/tests/PackageTests/TestSuiteTests/LibV09/LibV09.cabal @@ -0,0 +1,21 @@ +name: LibV09 +version: 0.1 +cabal-version: >= 1.2 +license: BSD3 +author: Thomas Tuegel +stability: stable +category: PackageTests +build-type: Simple +cabal-version: >= 1.9.2 + +description: Check type detailed-0.9 test suites. + +library + exposed-modules: Lib + build-depends: base, Cabal + +test-suite LibV09-Deadlock + type: detailed-0.9 + hs-source-dirs: tests + test-module: Deadlock + build-depends: base, Cabal, LibV09 diff --git a/Cabal/tests/PackageTests/TestSuiteTests/LibV09/tests/Deadlock.hs b/Cabal/tests/PackageTests/TestSuiteTests/LibV09/tests/Deadlock.hs new file mode 100644 index 00000000000..ab76cf20596 --- /dev/null +++ b/Cabal/tests/PackageTests/TestSuiteTests/LibV09/tests/Deadlock.hs @@ -0,0 +1,8 @@ +module Deadlock where + +import Distribution.TestSuite + +import Lib + +tests :: IO [Test] +tests = return [nullt x | x <- [1 .. 550]]