diff --git a/Cabal/tests/PackageTests/BenchmarkOptions/BenchmarkOptions.cabal b/Cabal/tests/PackageTests/BenchmarkOptions/BenchmarkOptions.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..e35702c10e7d604296d0754238bc093999f92f5f
--- /dev/null
+++ b/Cabal/tests/PackageTests/BenchmarkOptions/BenchmarkOptions.cabal
@@ -0,0 +1,20 @@
+name: BenchmarkOptions
+version: 0.1
+license: BSD3
+author: Johan Tibell
+stability: stable
+category: PackageTests
+build-type: Simple
+cabal-version: >= 1.9.2
+
+description:
+    Check that Cabal passes the correct test options to test suites.
+
+executable dummy
+    main-is: test-BenchmarkOptions.hs
+    build-depends: base
+
+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 0000000000000000000000000000000000000000..dbb7a74e8c1dce2b4f3c3db91f42f7b389c7668d
--- /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/BenchmarkOptions/Setup.hs b/Cabal/tests/PackageTests/BenchmarkOptions/Setup.hs
new file mode 100644
index 0000000000000000000000000000000000000000..200a2e51d0b46fa8a38d91b749f59f20eb97a46d
--- /dev/null
+++ b/Cabal/tests/PackageTests/BenchmarkOptions/Setup.hs
@@ -0,0 +1,3 @@
+import Distribution.Simple
+main = defaultMain
+
diff --git a/Cabal/tests/PackageTests/BenchmarkOptions/test-BenchmarkOptions.hs b/Cabal/tests/PackageTests/BenchmarkOptions/test-BenchmarkOptions.hs
new file mode 100644
index 0000000000000000000000000000000000000000..7c21bff136c0f76d85739b0e694b391fccdc1930
--- /dev/null
+++ b/Cabal/tests/PackageTests/BenchmarkOptions/test-BenchmarkOptions.hs
@@ -0,0 +1,11 @@
+module Main where
+
+import System.Environment ( getArgs )
+import System.Exit ( exitFailure, exitSuccess )
+
+main :: IO ()
+main = do
+    args <- getArgs
+    if args == ["1", "2", "3"]
+        then exitSuccess
+        else putStrLn ("Got: " ++ show args) >> exitFailure
diff --git a/Cabal/tests/PackageTests/PackageTester.hs b/Cabal/tests/PackageTests/PackageTester.hs
index e7a233d674f484420315da5cf4a1994e788c197b..ca458d3bcb8f7814022330e7acf2d9d1f75d478d 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 93320eef85aaf761dc6d97a750290e62cec95763..2e32069585ba6fb0c38b7a4721fb1c2982573b4e 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] []