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 <[email protected]> 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] [] _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
