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"