Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 31 additions & 14 deletions tests/integration/tests/multi-test/Main.hs
Original file line number Diff line number Diff line change
@@ -1,17 +1,34 @@
import Control.Monad (unless)
import Data.List (isInfixOf)
import StackTest
-- | The test's project has project packages A, B and C (which has no library).
--
-- In terms of main libraries, the dependencies are (->- is 'depends on'):
--
-- A ->- B
--
-- In terms of executables (including test suites):
--
-- B ->- A and C ->- A
--
-- As, overall, A ->- B and B ->- A, packages A and B cannot be built
-- 'all-in-one'.
--
-- This integration test passes when A is named myPackageA and B is named
-- 0myPackageB, but it fails when B is renamed myPackageB. That must be a bug in
-- Stack.

import Control.Monad ( unless )
import Data.List ( isInfixOf )
import StackTest

main :: IO ()
main = do
-- FIXME: Make 'clean' unnecessary (see #1411)
stack ["clean"]
stackCheckStderr ["test", "--coverage"] $ \out -> do
unless ("The coverage report for multi-test-suite's test-suite multi-test-suite-test is available at" `isInfixOf` out) $
fail "Didn't get expected report for multi-test-suite-test"
unless ("[S-6829]" `isInfixOf` out) $
fail "Didn't get expected empty report for multi-test-suite-test-2"
-- Test then build works too.
stack ["clean"]
stack ["test"]
stack ["build"]
-- FIXME: Make 'clean' unnecessary (see #1411)
stack ["clean"]
stackCheckStderr ["test", "--coverage"] $ \out -> do
unless ("The coverage report for myPackageA's test-suite test1 is available at" `isInfixOf` out) $
fail "Didn't get expected report for test1"
unless ("[S-6829]" `isInfixOf` out) $
fail "Didn't get expected empty report for test2"
-- Test then build works too.
stack ["clean"]
stack ["test"]
stack ["build"]
3 changes: 3 additions & 0 deletions tests/integration/tests/multi-test/files/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
myPackageA.cabal
myPackageC.cabal
0myPackageB.cabal
30 changes: 0 additions & 30 deletions tests/integration/tests/multi-test/files/LICENSE

This file was deleted.

2 changes: 0 additions & 2 deletions tests/integration/tests/multi-test/files/Setup.hs

This file was deleted.

6 changes: 0 additions & 6 deletions tests/integration/tests/multi-test/files/app/Main.hs

This file was deleted.

4 changes: 0 additions & 4 deletions tests/integration/tests/multi-test/files/cyclic/Cyclic.hs

This file was deleted.

30 changes: 0 additions & 30 deletions tests/integration/tests/multi-test/files/cyclic/LICENSE

This file was deleted.

2 changes: 0 additions & 2 deletions tests/integration/tests/multi-test/files/cyclic/Setup.hs

This file was deleted.

4 changes: 0 additions & 4 deletions tests/integration/tests/multi-test/files/cyclic/Spec.hs

This file was deleted.

33 changes: 0 additions & 33 deletions tests/integration/tests/multi-test/files/cyclic/cyclic.cabal

This file was deleted.

58 changes: 0 additions & 58 deletions tests/integration/tests/multi-test/files/multi-test-suite.cabal

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module Main where

import LibA ( funcA )

main :: IO ()
main = funcA
34 changes: 34 additions & 0 deletions tests/integration/tests/multi-test/files/myPackageA/package.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
spec-version: 0.36.0

name: myPackageA

dependencies:
- base

library:
source-dirs: src
dependencies:
# Only builds if this package name comes before myPackageA, alphabetically!
- 0myPackageB

executables:
myExeA:
source-dirs: app
main: Main.hs
dependencies:
- myPackageA

tests:
test1:
source-dirs: test1
main: Main.hs
dependencies:
- myPackageA
test2:
source-dirs: test2
main: Main.hs
dependencies:
- myPackageA
test3:
source-dirs: test3
main: Main.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module LibA
( funcA
, funcB
) where

import LibB ( funcB )

funcA :: IO ()
funcA = pure ()
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import LibA ( funcA )

main :: IO ()
main = funcA
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import Lib
import LibA

main :: IO ()
main = pure ()
17 changes: 17 additions & 0 deletions tests/integration/tests/multi-test/files/myPackageB/package.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
spec-version: 0.36.0

# Only builds if this package name comes before myPackageA, alphabetically!
name: 0myPackageB

dependencies:
- base

library:
source-dirs: src

tests:
test:
source-dirs: test
main: Main.hs
dependencies:
- myPackageA
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module LibB
( funcB
) where

funcB :: IO ()
funcB = pure ()
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import LibA ( funcB )

main :: IO ()
main = funcB
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import LibC ( funcC )

main :: IO ()
main = funcC
22 changes: 22 additions & 0 deletions tests/integration/tests/multi-test/files/myPackageC/package.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
spec-version: 0.36.0

name: myPackageC

dependencies:
- base

executables:
myExeC:
source-dirs:
- app
- src
main: Main.hs

tests:
test:
source-dirs:
- src
- test
main: Main.hs
dependencies:
- myPackageA
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module LibC
( funcC
) where

funcC :: IO ()
funcC = pure ()
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import LibA ( funcA )
import LibC ( funcC )

main :: IO ()
main = do
funcA
funcC
16 changes: 0 additions & 16 deletions tests/integration/tests/multi-test/files/src/Lib.hs

This file was deleted.

9 changes: 5 additions & 4 deletions tests/integration/tests/multi-test/files/stack.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
snapshot: lts-24.37
snapshot: ghc-9.10.3

packages:
- .
- sub-package
- cyclic
- myPackageA
- myPackageB
- myPackageC

This file was deleted.

Loading
Loading