[commit: Cabal] master: Add unit test for 'cabal bench' command-line flags (11782dd)
Ian Lynagh
igloo at earth.li
Tue Oct 25 23:31:06 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/11782dd4b0488c0255940b2386467eb33c676a65
>---------------------------------------------------------------
commit 11782dd4b0488c0255940b2386467eb33c676a65
Author: Johan Tibell <johan.tibell at gmail.com>
Date: Thu Oct 13 23:21:09 2011 +0000
Add unit test for 'cabal bench' command-line flags
>---------------------------------------------------------------
.../BenchmarkOptions.cabal} | 10 ++++----
Cabal/tests/PackageTests/BenchmarkOptions/Check.hs | 23 ++++++++++++++++++++
.../{BenchmarkExeV10 => BenchmarkOptions}/Setup.hs | 0
.../test-BenchmarkOptions.hs} | 0
Cabal/tests/PackageTests/PackageTester.hs | 16 +++++++++++++-
Cabal/tests/suite.hs | 6 +++-
6 files changed, 47 insertions(+), 8 deletions(-)
diff --git a/Cabal/tests/PackageTests/TestOptions/TestOptions.cabal b/Cabal/tests/PackageTests/BenchmarkOptions/BenchmarkOptions.cabal
similarity index 65%
copy from Cabal/tests/PackageTests/TestOptions/TestOptions.cabal
copy to Cabal/tests/PackageTests/BenchmarkOptions/BenchmarkOptions.cabal
index a319a12..e35702c 100644
--- a/Cabal/tests/PackageTests/TestOptions/TestOptions.cabal
+++ b/Cabal/tests/PackageTests/BenchmarkOptions/BenchmarkOptions.cabal
@@ -1,7 +1,7 @@
-name: TestOptions
+name: BenchmarkOptions
version: 0.1
license: BSD3
-author: Thomas Tuegel
+author: Johan Tibell
stability: stable
category: PackageTests
build-type: Simple
@@ -11,10 +11,10 @@ description:
Check that Cabal passes the correct test options to test suites.
executable dummy
- main-is: test-TestOptions.hs
+ main-is: test-BenchmarkOptions.hs
build-depends: base
-test-suite test-TestOptions
- main-is: test-TestOptions.hs
+benchmark test-BenchmarkOptions
+ main-is: test-BenchmarkOptions.hs
type: exitcode-stdio-1.0
build-depends: base
diff --git a/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs b/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs
new file mode 100644
index 0000000..dbb7a74
--- /dev/null
+++ b/Cabal/tests/PackageTests/BenchmarkOptions/Check.hs
@@ -0,0 +1,23 @@
+module PackageTests.BenchmarkOptions.Check where
+
+import Test.HUnit
+import System.FilePath
+import PackageTests.PackageTester
+
+suite :: Test
+suite = TestCase $ do
+ let directory = "PackageTests" </> "BenchmarkOptions"
+ pdFile = directory </> "BenchmarkOptions" <.> "cabal"
+ spec = PackageSpec directory ["--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 "
+ ++ "benchmark executable with \"--benchmark-options\""
+ assertEqual message True $ successful result
+ result' <- cabal_bench spec [ "--benchmark-option=1"
+ , "--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'
diff --git a/Cabal/tests/PackageTests/BenchmarkExeV10/Setup.hs b/Cabal/tests/PackageTests/BenchmarkOptions/Setup.hs
similarity index 100%
copy from Cabal/tests/PackageTests/BenchmarkExeV10/Setup.hs
copy to Cabal/tests/PackageTests/BenchmarkOptions/Setup.hs
diff --git a/Cabal/tests/PackageTests/TestOptions/test-TestOptions.hs b/Cabal/tests/PackageTests/BenchmarkOptions/test-BenchmarkOptions.hs
similarity index 100%
copy from Cabal/tests/PackageTests/TestOptions/test-TestOptions.hs
copy to Cabal/tests/PackageTests/BenchmarkOptions/test-BenchmarkOptions.hs
diff --git a/Cabal/tests/PackageTests/PackageTester.hs b/Cabal/tests/PackageTests/PackageTester.hs
index e7a233d..ca458d3 100644
--- a/Cabal/tests/PackageTests/PackageTester.hs
+++ b/Cabal/tests/PackageTests/PackageTester.hs
@@ -5,6 +5,7 @@ module PackageTests.PackageTester (
cabal_configure,
cabal_build,
cabal_test,
+ cabal_bench,
cabal_install,
unregister,
run
@@ -32,7 +33,13 @@ data PackageSpec =
configOpts :: [String]
}
-data Success = Failure | ConfigureSuccess | BuildSuccess | InstallSuccess | TestSuccess deriving (Eq, Show)
+data Success = Failure
+ | ConfigureSuccess
+ | BuildSuccess
+ | InstallSuccess
+ | TestSuccess
+ | BenchSuccess
+ deriving (Eq, Show)
data Result = Result {
successful :: Bool,
@@ -111,6 +118,13 @@ cabal_test spec extraArgs = do
record spec r
return r
+cabal_bench :: PackageSpec -> [String] -> IO Result
+cabal_bench spec extraArgs = do
+ res <- cabal spec $ "bench" : extraArgs
+ let r = recordRun res BenchSuccess nullResult
+ record spec r
+ return r
+
-- | Returns the command that was issued, the return code, and hte output text
cabal :: PackageSpec -> [String] -> IO (String, ExitCode, String)
cabal spec cabalArgs = do
diff --git a/Cabal/tests/suite.hs b/Cabal/tests/suite.hs
index 93320ee..2e32069 100644
--- a/Cabal/tests/suite.hs
+++ b/Cabal/tests/suite.hs
@@ -11,6 +11,7 @@ import Test.Framework.Providers.HUnit
import Test.Framework.Providers.QuickCheck2
import qualified Test.HUnit as HUnit
import PackageTests.BenchmarkExeV10.Check
+import PackageTests.BenchmarkOptions.Check
import PackageTests.BenchmarkStanza.Check
import PackageTests.BuildDeps.SameDepsAllRound.Check
import PackageTests.BuildDeps.TargetSpecificDeps1.Check
@@ -50,10 +51,11 @@ tests cabalVersion = [
(PackageTests.TestSuiteExeV10.Check.checkTestWithHpc cabalVersion),
hunit "PackageTests/TestOptions" PackageTests.TestOptions.Check.suite,
hunit "PackageTests/BenchmarkStanza/" (PackageTests.BenchmarkStanza.Check.suite cabalVersion),
- hunit "PackageTests/BenchmarkExeV10/Test"
- (PackageTests.BenchmarkExeV10.Check.checkBenchmark cabalVersion)
-- ^ The benchmark stanza test will eventually be required
-- only for higher versions.
+ hunit "PackageTests/BenchmarkExeV10/Test"
+ (PackageTests.BenchmarkExeV10.Check.checkBenchmark cabalVersion),
+ hunit "PackageTests/BenchmarkOptions" PackageTests.BenchmarkOptions.Check.suite
] ++
-- These tests are only required to pass on cabal version >= 1.7
(if cabalVersion >= Version [1, 7] []
More information about the Cvs-libraries
mailing list