run-haskell-module 0.0.1 → 0.0.2
raw patch · 3 files changed
+29/−20 lines, 3 files
Files
- changelog.md +3/−0
- run-haskell-module.cabal +5/−5
- src/Language/Haskell/RunHaskellModule.hs +21/−15
changelog.md view
@@ -1,4 +1,7 @@ Changelog =========+ 0.0.2 Mar 2020+ * Expose better interface for package dependency when testing.+ 0.0.1 Jan 2020 * Initial version
run-haskell-module.cabal view
@@ -4,13 +4,13 @@ -- -- see: https://github.com/sol/hpack ----- hash: 0d105f0142c4fbea46fc0f0bd6aaf9f891f5f4b75a748c0bc2d94e68f7ae8005+-- hash: f1d389aa2f37dcbecf3a47435f8585ee46026dc6d891387ac3a677cad60acc6e name: run-haskell-module-version: 0.0.1+version: 0.0.2 synopsis: Running newly generated Haskell source module.-description: To make sure freshly generated code runs,- we need to make it run in Stack/Cabal/GHC environment.+description: Running generated test code in Stack/Cabal/GHC environment.+ . license: BSD3 license-file: LICENSE stability: beta@@ -18,7 +18,7 @@ Dmitrii Krylov maintainer: simons@cryp.to, mjgajda@gmail.com-copyright: Copyright by Michal J. Gajda '2014-'2020+copyright: Copyright by Migamake '2014-'2020 category: Data, Tools build-type: Simple extra-source-files:
src/Language/Haskell/RunHaskellModule.hs view
@@ -16,6 +16,7 @@ import Control.Monad import Data.Char import Data.Default+import Data.Semigroup((<>)) import System.Environment import System.Exit import System.FilePath.Posix@@ -24,16 +25,18 @@ data RunOptions = RunOptions- { verbose :: Bool- , showStdout :: Bool- , compileArgs :: [String]+ { verbose :: Bool+ , showStdout :: Bool+ , compileArgs :: [String]+ , additionalPackages :: [String] } instance Default RunOptions where- def = RunOptions { verbose = False- , showStdout = False- , compileArgs = []+ def = RunOptions { verbose = False+ , showStdout = False+ , compileArgs = []+ , additionalPackages = [] } @@ -52,7 +55,7 @@ whenMaybe hClose pstderr return ExitSuccess ExitFailure r -> do- whenMaybe (dumpHandle stdout) pstdout+ whenMaybe (dumpHandle stderr) pstdout whenMaybe (dumpHandle stderr) pstderr fail $ concat ["Running \"", cmd, "\" \"", show args, "\" has failed with \"", show r, "\""] where@@ -112,12 +115,15 @@ stack <- lookupEnv "STACK_EXE" oldCabal <- lookupEnv "CABAL_SANDBOX_CONFIG" newCabal <- lookupEnv "HASKELL_DIST_DIR"- additionalFlags <- (maybe [] splitWithQuotes) <$> lookupEnv "CI_GHC_ADDITIONAL_FLAGS"- additionalPackages <- ((additionalPackagesDef ++) . (maybe [] words)) <$> lookupEnv "CI_GHC_ADDITIONAL_PACKAGES"- cabalStyle <- (maybe "v2" id) <$> lookupEnv "CI_GHC_CABAL_STYLE"+ additionalFlags <- (maybe [] splitWithQuotes) <$> lookupEnv "CI_GHC_ADDITIONAL_FLAGS"+ additionalPackagesList <- ((additionalPackages ++) . (maybe [] words)) <$> lookupEnv "CI_GHC_ADDITIONAL_PACKAGES"+ cabalStyle <- (maybe "v2" id) <$> lookupEnv "CI_GHC_CABAL_STYLE" let cabalExec = cabalStyle ++ "-exec"- let additionalPackagesArgs = map mkAdditionalPackagesArg additionalPackages- let res@(exe, exeArgs') | Just stackExec <- stack = (stackExec, additionalFlags ++ [tool, "--"])+ let additionalPackagesArgs = map mkAdditionalPackagesArg additionalPackagesList++ let res@(exe, exeArgs') | Just stackExec <- stack = (stackExec, [tool] ++ additionalFlags+ ++ (stackPackageArg <$> additionalPackagesList)+ ++ ["--"]) | Just _ <- oldCabal = ("cabal", ["exec", tool, "--"]) | Just _ <- newCabal = ("cabal", [cabalExec, tool, "--"] ++ additionalPackagesArgs) | otherwise = (tool, [])@@ -130,10 +136,10 @@ tool = case ghcTool of Runner -> "runghc" Compiler -> "ghc"+ stackPackageArg arg = "--package=" ++ arg mkAdditionalPackagesArg arg = case ghcTool of- Runner -> "--ghc-arg=-package " ++ arg- Compiler -> "-package " ++ arg- additionalPackagesDef = []+ Runner -> "--ghc-arg=-package=" ++ arg+ Compiler -> "-package=" ++ arg passModuleToGhc :: RunOptions -> GhcTool -> FilePath -> [String] -> IO ExitCode