diff --git a/tests/integration/tests/3770-no-rerun-tests/Main.hs b/tests/integration/tests/3770-no-rerun-tests/Main.hs new file mode 100644 index 0000000000..6a08206e94 --- /dev/null +++ b/tests/integration/tests/3770-no-rerun-tests/Main.hs @@ -0,0 +1,25 @@ +-- | Stack can avoid re-running successful test suites. +-- +-- See: https://github.com/commercialhaskell/stack/pull/3770 + +import Control.Monad ( unless ) +import Data.List ( isInfixOf ) +import StackTest + +main :: IO () +main = do + stackCheckStderr ["test"] (expectMessage testSuitePassed) + stackCheckStderr + ["test", "--no-rerun-tests"] + (expectMessage skippedAlreadyPassedTest) + +testSuitePassed :: String +testSuitePassed = "Test suite test passed" + +skippedAlreadyPassedTest :: String +skippedAlreadyPassedTest = "skipping already passed test" + +expectMessage :: String -> String -> IO () +expectMessage msg stderr = do + unless (words msg `isInfixOf` words stderr) $ + error $ "Expected output: \n" ++ show msg diff --git a/tests/integration/tests/no-rerun-tests/files/.gitignore b/tests/integration/tests/3770-no-rerun-tests/files/.gitignore similarity index 66% rename from tests/integration/tests/no-rerun-tests/files/.gitignore rename to tests/integration/tests/3770-no-rerun-tests/files/.gitignore index abd3798762..b0a5a052a1 100644 --- a/tests/integration/tests/no-rerun-tests/files/.gitignore +++ b/tests/integration/tests/3770-no-rerun-tests/files/.gitignore @@ -1,2 +1 @@ myPackage.cabal -testRan diff --git a/tests/integration/tests/no-rerun-tests/files/package.yaml b/tests/integration/tests/3770-no-rerun-tests/files/package.yaml similarity index 80% rename from tests/integration/tests/no-rerun-tests/files/package.yaml rename to tests/integration/tests/3770-no-rerun-tests/files/package.yaml index bbdc2419b9..9a50489941 100644 --- a/tests/integration/tests/no-rerun-tests/files/package.yaml +++ b/tests/integration/tests/3770-no-rerun-tests/files/package.yaml @@ -5,9 +5,6 @@ name: myPackage dependencies: - base -library: - source-dirs: src - tests: test: source-dirs: test diff --git a/tests/integration/tests/no-rerun-tests/files/stack.yaml b/tests/integration/tests/3770-no-rerun-tests/files/stack.yaml similarity index 100% rename from tests/integration/tests/no-rerun-tests/files/stack.yaml rename to tests/integration/tests/3770-no-rerun-tests/files/stack.yaml diff --git a/tests/integration/tests/3770-no-rerun-tests/files/test/Main.hs b/tests/integration/tests/3770-no-rerun-tests/files/test/Main.hs new file mode 100644 index 0000000000..d582e1e36a --- /dev/null +++ b/tests/integration/tests/3770-no-rerun-tests/files/test/Main.hs @@ -0,0 +1,2 @@ +main :: IO () +main = pure () diff --git a/tests/integration/tests/no-rerun-tests/Main.hs b/tests/integration/tests/no-rerun-tests/Main.hs deleted file mode 100644 index 98d289a605..0000000000 --- a/tests/integration/tests/no-rerun-tests/Main.hs +++ /dev/null @@ -1,15 +0,0 @@ --- | Stack can avoid re-running successful test suites. - -import Control.Monad ( unless, when ) -import StackTest -import System.Directory ( doesFileExist, removeFile ) - -main :: IO () -main = do - stack ["test"] - exists1 <- doesFileExist "testRan" - unless exists1 $ error "exists1 should be True" - removeFile "testRan" - stack ["test", "--no-rerun-tests"] - exists2 <- doesFileExist "testRan" - when exists2 $ error "exists2 should be False" diff --git a/tests/integration/tests/no-rerun-tests/files/test/Main.hs b/tests/integration/tests/no-rerun-tests/files/test/Main.hs deleted file mode 100644 index d900d0cd96..0000000000 --- a/tests/integration/tests/no-rerun-tests/files/test/Main.hs +++ /dev/null @@ -1,2 +0,0 @@ -main :: IO () -main = writeFile "testRan" ""