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

Reply via email to