Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/38d01256923ff674e1c1d1e2e7333fb36a7b718e >--------------------------------------------------------------- commit 38d01256923ff674e1c1d1e2e7333fb36a7b718e Author: Thomas Tuegel <[email protected]> Date: Sat Feb 4 20:22:58 2012 +0000 Automatically run test suites when invoked with 'cabal install --enable-tests'. Do not install if tests fail. >--------------------------------------------------------------- .../Distribution/Client/BuildReports/Anonymous.hs | 4 ++- cabal-install/Distribution/Client/Install.hs | 27 +++++++++++++------ cabal-install/Distribution/Client/Types.hs | 3 +- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/cabal-install/Distribution/Client/BuildReports/Anonymous.hs b/cabal-install/Distribution/Client/BuildReports/Anonymous.hs index 01d4118..93b31cf 100644 --- a/cabal-install/Distribution/Client/BuildReports/Anonymous.hs +++ b/cabal-install/Distribution/Client/BuildReports/Anonymous.hs @@ -112,6 +112,7 @@ data InstallOutcome | SetupFailed | ConfigureFailed | BuildFailed + | TestsFailed | InstallFailed | InstallOk deriving Eq @@ -143,6 +144,7 @@ new os' arch' comp (ConfiguredPackage pkg flags _ deps) result = Left (BR.UnpackFailed _) -> UnpackFailed Left (BR.ConfigureFailed _) -> ConfigureFailed Left (BR.BuildFailed _) -> BuildFailed + Left (BR.TestsFailed _) -> TestsFailed Left (BR.InstallFailed _) -> InstallFailed Right (BR.BuildOk _ _) -> InstallOk convertDocsOutcome = case result of @@ -151,9 +153,9 @@ new os' arch' comp (ConfiguredPackage pkg flags _ deps) result = Right (BR.BuildOk BR.DocsFailed _) -> Failed Right (BR.BuildOk BR.DocsOk _) -> Ok convertTestsOutcome = case result of + Left (BR.TestsFailed _) -> Failed Left _ -> NotTried Right (BR.BuildOk _ BR.TestsNotTried) -> NotTried - Right (BR.BuildOk _ BR.TestsFailed) -> Failed Right (BR.BuildOk _ BR.TestsOk) -> Ok cabalInstallID :: PackageIdentifier diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index fae3f68..b16f0e6 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -91,7 +91,8 @@ import Distribution.Simple.Setup , buildCommand, BuildFlags(..), emptyBuildFlags , toFlag, fromFlag, fromFlagOrDefault, flagToMaybe ) import qualified Distribution.Simple.Setup as Cabal - ( installCommand, InstallFlags(..), emptyInstallFlags ) + ( installCommand, InstallFlags(..), emptyInstallFlags + , emptyTestFlags, testCommand ) import Distribution.Simple.Utils ( rawSystemExit, comparing ) import Distribution.Simple.InstallDirs as InstallDirs @@ -675,6 +676,8 @@ printBuildFailures plan = ++ " The exception was:\n " ++ show e BuildFailed e -> " failed during the building phase." ++ " The exception was:\n " ++ show e + TestsFailed e -> " failed during the tests phase." + ++ " The exception was:\n " ++ show e InstallFailed e -> " failed during the final install step." ++ " The exception was:\n " ++ show e @@ -891,15 +894,19 @@ installUnpackedPackage verbosity scriptOptions miscOptions else return DocsNotTried -- Tests phase - testsResult <- return TestsNotTried --TODO: add optional tests + onFailure TestsFailed $ do + when shouldTest $ setup Cabal.testCommand testFlags + + let testsResult | shouldTest = TestsOk + | otherwise = TestsNotTried - -- Install phase - onFailure InstallFailed $ - withWin32SelfUpgrade verbosity configFlags compid pkg $ do - case rootCmd miscOptions of - (Just cmd) -> reexec cmd - Nothing -> setup Cabal.installCommand installFlags - return (Right (BuildOk docsResult testsResult)) + -- Install phase + onFailure InstallFailed $ + withWin32SelfUpgrade verbosity configFlags compid pkg $ do + case rootCmd miscOptions of + (Just cmd) -> reexec cmd + Nothing -> setup Cabal.installCommand installFlags + return (Right (BuildOk docsResult testsResult)) where configureFlags = filterConfigureFlags configFlags { @@ -914,6 +921,8 @@ installUnpackedPackage verbosity scriptOptions miscOptions haddockFlags' _ = haddockFlags { haddockVerbosity = toFlag verbosity' } + shouldTest = fromFlag (configTests configFlags) + testFlags _ = Cabal.emptyTestFlags installFlags _ = Cabal.emptyInstallFlags { Cabal.installDistPref = configDistPref configFlags, Cabal.installVerbosity = toFlag verbosity' diff --git a/cabal-install/Distribution/Client/Types.hs b/cabal-install/Distribution/Client/Types.hs index 534ffdc..4f0376d 100644 --- a/cabal-install/Distribution/Client/Types.hs +++ b/cabal-install/Distribution/Client/Types.hs @@ -179,8 +179,9 @@ data BuildFailure = DependentFailed PackageId | UnpackFailed SomeException | ConfigureFailed SomeException | BuildFailed SomeException + | TestsFailed SomeException | InstallFailed SomeException data BuildSuccess = BuildOk DocsResult TestsResult data DocsResult = DocsNotTried | DocsFailed | DocsOk -data TestsResult = TestsNotTried | TestsFailed | TestsOk +data TestsResult = TestsNotTried | TestsOk _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
