summaryrefslogtreecommitdiff
path: root/testsuite/tests/driver/multipleHomeUnits/mhu-closure
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/driver/multipleHomeUnits/mhu-closure')
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/Makefile41
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/Setup.hs2
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/all.T9
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/mhu-closure.stderr10
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/mhu-closure.stdout9
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/P.hs1
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/Setup.hs2
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/p.cabal11
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/Q.hs2
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/Setup.hs2
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/q.cabal11
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/R.hs2
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/Setup.hs2
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/r.cabal11
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/R.hs2
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/Setup.hs2
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/r1.cabal11
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitP1
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitQ1
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitR1
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitR11
21 files changed, 134 insertions, 0 deletions
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/Makefile b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/Makefile
new file mode 100644
index 0000000000..ff67f37808
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/Makefile
@@ -0,0 +1,41 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+SETUP=../Setup -v0
+
+mhu-closure: clean
+ $(MAKE) -s --no-print-directory clean
+ '$(GHC_PKG)' init tmp.d
+ '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make Setup
+ cd p && $(SETUP) clean
+ cd p && $(SETUP) configure $(CABAL_MINIMAL_BUILD) --ipid=p-0.1.0.0 --with-ghc='$(TEST_HC)' --ghc-options='$(TEST_HC_OPTS)' --package-db=../tmp.d
+ cd p && $(SETUP) build
+ cd p && $(SETUP) register --inplace
+ cd q && $(SETUP) configure $(CABAL_MINIMAL_BUILD) --ipid=q-0.1.0.0 --with-ghc='$(TEST_HC)' --ghc-options='$(TEST_HC_OPTS)' --package-db=../tmp.d
+ cd q && $(SETUP) build
+ cd q && $(SETUP) register --inplace
+ cd r && $(SETUP) configure $(CABAL_MINIMAL_BUILD) --ipid=r-0.1.0.0 --with-ghc='$(TEST_HC)' --ghc-options='$(TEST_HC_OPTS)' --package-db=../tmp.d
+ cd r && $(SETUP) build
+ cd r && $(SETUP) register --inplace
+ # This should work
+ '$(TEST_HC)' $(TEST_HC_OPTS) -fhide-source-paths -fforce-recomp -unit @unitP
+ # So should this
+ '$(TEST_HC)' $(TEST_HC_OPTS) -fhide-source-paths -fforce-recomp -unit @unitP -unit @unitQ
+ # So should this
+ '$(TEST_HC)' $(TEST_HC_OPTS) -fhide-source-paths -fforce-recomp -unit @unitP -unit @unitQ -unit @unitR
+ # This should error with a closure message
+ ! '$(TEST_HC)' $(TEST_HC_OPTS) -fhide-source-paths -fforce-recomp -unit @unitP -unit @unitR
+ # This should work, even though r1 is not in the package db
+ '$(TEST_HC)' $(TEST_HC_OPTS) -fhide-source-paths -fforce-recomp -unit @unitP -unit @unitQ -unit @unitR1
+ # This should fail, even though r1 is not in the package db
+ ! '$(TEST_HC)' $(TEST_HC_OPTS) -fhide-source-paths -fforce-recomp -unit @unitP -unit @unitR1
+
+
+ifeq "$(CLEANUP)" "1"
+ $(MAKE) -s --no-print-directory clean
+endif
+
+clean :
+ $(RM) -r tmp*.d inst-* *.o *.hi */*.o */*.hi */Setup$(exeext) */dist Setup$(exeext)
+
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/Setup.hs b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/Setup.hs
new file mode 100644
index 0000000000..9a994af677
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/all.T b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/all.T
new file mode 100644
index 0000000000..16fb06efa9
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/all.T
@@ -0,0 +1,9 @@
+if config.cleanup:
+ cleanup = 'CLEANUP=1'
+else:
+ cleanup = 'CLEANUP=0'
+
+test('mhu-closure',
+ extra_files(['p/', 'q/', 'r/', 'r1/', 'unitP', 'unitQ', 'unitR', 'unitR1', 'Setup.hs']),
+ run_command,
+ ['$MAKE -s --no-print-directory mhu-closure ' + cleanup])
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/mhu-closure.stderr b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/mhu-closure.stderr
new file mode 100644
index 0000000000..115d141070
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/mhu-closure.stderr
@@ -0,0 +1,10 @@
+
+<command line>: error:
+ Home units are not closed.
+ It is necessary to also load the following units:
+ - q-0.1.0.0
+
+<command line>: error:
+ Home units are not closed.
+ It is necessary to also load the following units:
+ - q-0.1.0.0
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/mhu-closure.stdout b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/mhu-closure.stdout
new file mode 100644
index 0000000000..0afbe831dc
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/mhu-closure.stdout
@@ -0,0 +1,9 @@
+[1 of 1] Compiling P
+[1 of 2] Compiling P[p-0.1.0.0]
+[2 of 2] Compiling Q[q-0.1.0.0]
+[1 of 3] Compiling P[p-0.1.0.0]
+[2 of 3] Compiling Q[q-0.1.0.0]
+[3 of 3] Compiling R[r-0.1.0.0]
+[1 of 3] Compiling P[p-0.1.0.0]
+[2 of 3] Compiling Q[q-0.1.0.0]
+[3 of 3] Compiling R[r1-0.1.0.0]
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/P.hs b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/P.hs
new file mode 100644
index 0000000000..fc4877ad85
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/P.hs
@@ -0,0 +1 @@
+module P where
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/Setup.hs b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/Setup.hs
new file mode 100644
index 0000000000..9a994af677
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/p.cabal b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/p.cabal
new file mode 100644
index 0000000000..b0113ee1f1
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/p/p.cabal
@@ -0,0 +1,11 @@
+name: p
+version: 0.1.0.0
+author: Edward Z. Yang
+maintainer: ezyang@cs.stanford.edu
+build-type: Simple
+cabal-version: >=1.10
+
+library
+ exposed-modules: P
+ build-depends: base
+ default-language: Haskell2010
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/Q.hs b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/Q.hs
new file mode 100644
index 0000000000..8c7bcdc87b
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/Q.hs
@@ -0,0 +1,2 @@
+module Q where
+import P
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/Setup.hs b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/Setup.hs
new file mode 100644
index 0000000000..9a994af677
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/q.cabal b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/q.cabal
new file mode 100644
index 0000000000..874f392569
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/q/q.cabal
@@ -0,0 +1,11 @@
+name: q
+version: 0.1.0.0
+author: Edward Z. Yang
+maintainer: ezyang@cs.stanford.edu
+build-type: Simple
+cabal-version: >=1.10
+
+library
+ exposed-modules: Q
+ build-depends: base, p
+ default-language: Haskell2010
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/R.hs b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/R.hs
new file mode 100644
index 0000000000..01f057a907
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/R.hs
@@ -0,0 +1,2 @@
+module R where
+import Q
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/Setup.hs b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/Setup.hs
new file mode 100644
index 0000000000..9a994af677
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/r.cabal b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/r.cabal
new file mode 100644
index 0000000000..2a9e09cab0
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r/r.cabal
@@ -0,0 +1,11 @@
+name: r
+version: 0.1.0.0
+author: Edward Z. Yang
+maintainer: ezyang@cs.stanford.edu
+build-type: Simple
+cabal-version: >=1.10
+
+library
+ exposed-modules: R
+ build-depends: base, q
+ default-language: Haskell2010
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/R.hs b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/R.hs
new file mode 100644
index 0000000000..01f057a907
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/R.hs
@@ -0,0 +1,2 @@
+module R where
+import Q
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/Setup.hs b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/Setup.hs
new file mode 100644
index 0000000000..9a994af677
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/r1.cabal b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/r1.cabal
new file mode 100644
index 0000000000..b87a73276e
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/r1/r1.cabal
@@ -0,0 +1,11 @@
+name: r1
+version: 0.1.0.0
+author: Edward Z. Yang
+maintainer: ezyang@cs.stanford.edu
+build-type: Simple
+cabal-version: >=1.10
+
+library
+ exposed-modules: R
+ build-depends: base, q
+ default-language: Haskell2010
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitP b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitP
new file mode 100644
index 0000000000..7b3b088b7e
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitP
@@ -0,0 +1 @@
+-working-dir p P -i -i. -package-db ../tmp.d -this-unit-id p-0.1.0.0
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitQ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitQ
new file mode 100644
index 0000000000..dcd9ae059a
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitQ
@@ -0,0 +1 @@
+-working-dir q Q -i -i. -package-db ../tmp.d -this-unit-id q-0.1.0.0 -package-id p-0.1.0.0
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitR b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitR
new file mode 100644
index 0000000000..2535bd7d14
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitR
@@ -0,0 +1 @@
+-working-dir r R -i -i. -package-db ../tmp.d -this-unit-id r-0.1.0.0 -package-id q-0.1.0.0
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitR1 b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitR1
new file mode 100644
index 0000000000..9bb366c78e
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-closure/unitR1
@@ -0,0 +1 @@
+-working-dir r1 R -i -i. -package-db ../tmp.d -this-unit-id r1-0.1.0.0 -package-id q-0.1.0.0