Optionally copy all cabal files to a directory

This commit is contained in:
Michael Snoyman 2013-10-02 12:47:33 +03:00
parent 3d41543645
commit 502e0d1ae8
3 changed files with 14 additions and 1 deletions

View File

@ -26,6 +26,7 @@ defaultBuildSettings version = BuildSettings
, testWorkerThreads = 4
, buildDocs = True
, tarballDir = "patching/tarballs"
, cabalFileDir = Nothing
}
build :: BuildSettings -> BuildPlan -> IO ()

View File

@ -12,7 +12,8 @@ import qualified Data.Set as Set
import Data.Typeable (Typeable)
import Stackage.Types
import Stackage.Util
import System.Directory (createDirectory, removeFile)
import System.Directory (copyFile, createDirectory,
createDirectoryIfMissing, removeFile)
import System.Exit (ExitCode (ExitSuccess))
import System.FilePath ((<.>), (</>))
import System.IO (IOMode (WriteMode, AppendMode),
@ -99,6 +100,15 @@ runTestSuite settings testdir (packageName, SelectedPackageInfo {..}) = do
passed <- handle (\TestException -> return False) $ do
package' <- replaceTarball (tarballDir settings) package
getHandle WriteMode $ run "cabal" ["unpack", package'] testdir
case cabalFileDir settings of
Nothing -> return ()
Just cfd -> do
let PackageName name = packageName
basename = name ++ ".cabal"
src = dir </> basename
dst = cfd </> basename
createDirectoryIfMissing True cfd
copyFile src dst
getHandle AppendMode $ run "cabal" (addCabalArgs settings BSTest ["configure", "--enable-tests"]) dir
when spiHasTests $ do
getHandle AppendMode $ run "cabal" ["build"] dir

View File

@ -136,6 +136,8 @@ data BuildSettings = BuildSettings
-- ^ Build docs as part of the test procedure.
, tarballDir :: FilePath
-- ^ Directory containing replacement tarballs.
, cabalFileDir :: Maybe FilePath
-- ^ Directory to place cabal files in
}
-- | A wrapper around a @Map@ providing a better @Monoid@ instance.