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

Reply via email to