diff options
Diffstat (limited to 'testsuite/tests/cabal')
32 files changed, 188 insertions, 0 deletions
diff --git a/testsuite/tests/cabal/T1750A.pkg b/testsuite/tests/cabal/T1750A.pkg index 9bda51eea0..3f4a96e22b 100644 --- a/testsuite/tests/cabal/T1750A.pkg +++ b/testsuite/tests/cabal/T1750A.pkg @@ -1,4 +1,5 @@ name: T1750A version: 1 id: T1750A-1-XXX +key: T1750A-1 depends: T1750B-1-XXX diff --git a/testsuite/tests/cabal/T1750B.pkg b/testsuite/tests/cabal/T1750B.pkg index 479ce7092c..caaaefaa1a 100644 --- a/testsuite/tests/cabal/T1750B.pkg +++ b/testsuite/tests/cabal/T1750B.pkg @@ -1,4 +1,5 @@ name: T1750B version: 1 id: T1750B-1-XXX +key: T1750B-1 depends: T1750A-1-XXX diff --git a/testsuite/tests/cabal/cabal06/Makefile b/testsuite/tests/cabal/cabal06/Makefile new file mode 100644 index 0000000000..5934b9b29c --- /dev/null +++ b/testsuite/tests/cabal/cabal06/Makefile @@ -0,0 +1,70 @@ +TOP=../../.. +include $(TOP)/mk/boilerplate.mk +include $(TOP)/mk/test.mk + +SETUP=../Setup -v0 + +# This test is for packages whose package IDs overlap, but whose package keys +# do not. +# +# 1. install p-1.0 +# 2. install q-1.0 (depending on p-1.0) +# 3. install p-1.1 +# 4. install q-1.0, asking for p-1.1 +# 5. install r-1.0 (depending on p-1.1, q-1.0) +# 6. install r-1.0 asking for p-1.0 +# +# The notable steps are (4), which previously would have required a reinstall, +# and (6), where the dependency solver picks between two package keys with the +# same package ID based on their depenencies. +# +# ./Setup configure is pretty dumb, so we spoonfeed it precisely the +# dependencies it needs. + +cabal06: clean + $(MAKE) clean + '$(GHC_PKG)' init tmp.d + '$(TEST_HC)' -v0 --make Setup + cd p-1.0 && $(SETUP) clean + cd p-1.0 && $(SETUP) configure $(CABAL_MINIMAL_BUILD) --with-ghc='$(TEST_HC)' --ghc-options='$(TEST_HC_OPTS)' --package-db=../tmp.d --prefix='$(PWD)/inst-a' --ghc-pkg-options='--enable-multi-instance' + cd p-1.0 && $(SETUP) build + cd p-1.0 && $(SETUP) copy + cd p-1.0 && $(SETUP) register + cd q && $(SETUP) clean + cd q && $(SETUP) configure $(CABAL_MINIMAL_BUILD) --with-ghc='$(TEST_HC)' --ghc-options='$(TEST_HC_OPTS)' --package-db=../tmp.d --prefix='$(PWD)/inst-b' --ghc-pkg-options='--enable-multi-instance' + cd q && $(SETUP) build + cd q && $(SETUP) copy + (cd q && $(SETUP) register --print-ipid) > tmp_first_q + cd p-1.1 && $(SETUP) clean + cd p-1.1 && $(SETUP) configure $(CABAL_MINIMAL_BUILD) --with-ghc='$(TEST_HC)' --ghc-options='$(TEST_HC_OPTS)' --package-db=../tmp.d --prefix='$(PWD)/inst-c' --ghc-pkg-options='--enable-multi-instance' + cd p-1.1 && $(SETUP) build + cd p-1.1 && $(SETUP) copy + cd p-1.1 && $(SETUP) register + cd q && $(SETUP) clean + cd q && $(SETUP) configure $(CABAL_MINIMAL_BUILD) --with-ghc='$(TEST_HC)' --ghc-options='$(TEST_HC_OPTS)' --package-db=../tmp.d --constraint="p==1.1" --prefix='$(PWD)/inst-d' --ghc-pkg-options='--enable-multi-instance' + cd q && $(SETUP) build + cd q && $(SETUP) copy + (cd q && $(SETUP) register --print-ipid) > tmp_second_q + @echo "Does the first instance of q depend on p-1.0?" + '$(GHC_PKG)' field --ipid `cat tmp_first_q` depends -f tmp.d | grep p-1.0 | wc -l + @echo "Does the second instance of q depend on p-1.0?" + '$(GHC_PKG)' field --ipid `cat tmp_second_q` depends -f tmp.d | grep p-1.1 | wc -l + cd r && $(SETUP) clean + cd r && ../Setup configure $(CABAL_MINIMAL_BUILD) --with-ghc='$(TEST_HC)' --ghc-options='$(TEST_HC_OPTS)' --package-db=../tmp.d --dependency="q=`cat ../tmp_first_q`" --constraint="p==1.0" --prefix='$(PWD)/inst-e' --ghc-pkg-options='--enable-multi-instance' + cd r && $(SETUP) build + cd r && $(SETUP) copy + cd r && $(SETUP) clean + cd r && ../Setup configure $(CABAL_MINIMAL_BUILD) --with-ghc='$(TEST_HC)' --ghc-options='$(TEST_HC_OPTS)' --package-db=../tmp.d --dependency="q=`cat ../tmp_second_q`" --constraint="p==1.1" --prefix='$(PWD)/inst-f' --ghc-pkg-options='--enable-multi-instance' + cd r && $(SETUP) build + cd r && $(SETUP) copy + inst-e/bin/cabal06 + inst-f/bin/cabal06 +ifneq "$(CLEANUP)" "" + $(MAKE) clean +endif + +clean : + '$(GHC_PKG)' unregister --force p >/dev/null 2>&1 || true + '$(GHC_PKG)' unregister --force q >/dev/null 2>&1 || true + '$(GHC_PKG)' unregister --force r >/dev/null 2>&1 || true + $(RM) -r tmp.d inst-* *.o *.hi */*.o */*.hi */Setup$(exeext) */dist Setup$(exeext) diff --git a/testsuite/tests/cabal/cabal06/Setup.hs b/testsuite/tests/cabal/cabal06/Setup.hs new file mode 100644 index 0000000000..9a994af677 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/Setup.hs @@ -0,0 +1,2 @@ +import Distribution.Simple +main = defaultMain diff --git a/testsuite/tests/cabal/cabal06/all.T b/testsuite/tests/cabal/cabal06/all.T new file mode 100644 index 0000000000..edca288265 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/all.T @@ -0,0 +1,9 @@ +if default_testopts.cleanup != '': + cleanup = 'CLEANUP=1' +else: + cleanup = '' + +test('cabal06', + normal, + run_command, + ['$MAKE -s --no-print-directory cabal06 ' + cleanup]) diff --git a/testsuite/tests/cabal/cabal06/cabal06.stderr b/testsuite/tests/cabal/cabal06/cabal06.stderr new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/cabal06.stderr diff --git a/testsuite/tests/cabal/cabal06/cabal06.stdout b/testsuite/tests/cabal/cabal06/cabal06.stdout new file mode 100644 index 0000000000..e5ff042302 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/cabal06.stdout @@ -0,0 +1,8 @@ +Does the first instance of q depend on p-1.0? +1 +Does the second instance of q depend on p-1.0? +1 +Configuring r-1.0... +Configuring r-1.0... +10 +11 diff --git a/testsuite/tests/cabal/cabal06/p-1.0/LICENSE b/testsuite/tests/cabal/cabal06/p-1.0/LICENSE new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/p-1.0/LICENSE diff --git a/testsuite/tests/cabal/cabal06/p-1.0/P.hs b/testsuite/tests/cabal/cabal06/p-1.0/P.hs new file mode 100644 index 0000000000..7d63e39dac --- /dev/null +++ b/testsuite/tests/cabal/cabal06/p-1.0/P.hs @@ -0,0 +1,3 @@ +module P where +p :: Int +p = 0 diff --git a/testsuite/tests/cabal/cabal06/p-1.0/p.cabal b/testsuite/tests/cabal/cabal06/p-1.0/p.cabal new file mode 100644 index 0000000000..ab7b3ebffe --- /dev/null +++ b/testsuite/tests/cabal/cabal06/p-1.0/p.cabal @@ -0,0 +1,12 @@ +name: p +version: 1.0 +license-file: LICENSE +author: Edward Z. Yang +maintainer: ezyang@cs.stanford.edu +build-type: Simple +cabal-version: >=1.20 + +library + exposed-modules: P + build-depends: base + default-language: Haskell2010 diff --git a/testsuite/tests/cabal/cabal06/p-1.1/LICENSE b/testsuite/tests/cabal/cabal06/p-1.1/LICENSE new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/p-1.1/LICENSE diff --git a/testsuite/tests/cabal/cabal06/p-1.1/P.hs b/testsuite/tests/cabal/cabal06/p-1.1/P.hs new file mode 100644 index 0000000000..446448039f --- /dev/null +++ b/testsuite/tests/cabal/cabal06/p-1.1/P.hs @@ -0,0 +1,3 @@ +module P where +p :: Int +p = 1 diff --git a/testsuite/tests/cabal/cabal06/p-1.1/p.cabal b/testsuite/tests/cabal/cabal06/p-1.1/p.cabal new file mode 100644 index 0000000000..8a7b7b271d --- /dev/null +++ b/testsuite/tests/cabal/cabal06/p-1.1/p.cabal @@ -0,0 +1,12 @@ +name: p +version: 1.1 +license-file: LICENSE +author: Edward Z. Yang +maintainer: ezyang@cs.stanford.edu +build-type: Simple +cabal-version: >=1.20 + +library + exposed-modules: P + build-depends: base + default-language: Haskell2010 diff --git a/testsuite/tests/cabal/cabal06/q/LICENSE b/testsuite/tests/cabal/cabal06/q/LICENSE new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/q/LICENSE diff --git a/testsuite/tests/cabal/cabal06/q/Q.hs b/testsuite/tests/cabal/cabal06/q/Q.hs new file mode 100644 index 0000000000..03d0923450 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/q/Q.hs @@ -0,0 +1,4 @@ +module Q where +import P +q :: Int +q = p + 10 diff --git a/testsuite/tests/cabal/cabal06/q/q-1.0.conf b/testsuite/tests/cabal/cabal06/q/q-1.0.conf new file mode 100644 index 0000000000..2c25cee262 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/q/q-1.0.conf @@ -0,0 +1,19 @@ +name: q +version: 1.0 +id: q-1.0-beaf238a500e9dd4ea74fe12762b72e1 + +key: d54a904d84001e92dbb7d30e2bede8ce +license: AllRightsReserved +maintainer: ezyang@cs.stanford.edu +author: Edward Z. Yang +exposed: True +exposed-modules: + Q +trusted: False +import-dirs: /5playpen/t-edyang/ghc-backpack/testsuite/tests/cabal/cabal06/inst-d/lib/x86_64-linux-ghc-7.9.20140719/q-1.0 +library-dirs: /5playpen/t-edyang/ghc-backpack/testsuite/tests/cabal/cabal06/inst-d/lib/x86_64-linux-ghc-7.9.20140719/q-1.0 +hs-libraries: HSd54a904d84001e92dbb7d30e2bede8ce +depends: base-4.7.1.0-inplace + p-1.0-168289aa0216a183a2729001bb18e7a8 +haddock-interfaces: /5playpen/t-edyang/ghc-backpack/testsuite/tests/cabal/cabal06/inst-d/share/doc/x86_64-linux-ghc-7.9.20140719/q-1.0/html/q.haddock +haddock-html: /5playpen/t-edyang/ghc-backpack/testsuite/tests/cabal/cabal06/inst-d/share/doc/x86_64-linux-ghc-7.9.20140719/q-1.0/html diff --git a/testsuite/tests/cabal/cabal06/q/q.cabal b/testsuite/tests/cabal/cabal06/q/q.cabal new file mode 100644 index 0000000000..7b3a074f88 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/q/q.cabal @@ -0,0 +1,12 @@ +name: q +version: 1.0 +license-file: LICENSE +author: Edward Z. Yang +maintainer: ezyang@cs.stanford.edu +build-type: Simple +cabal-version: >=1.20 + +library + exposed-modules: Q + build-depends: base, p + default-language: Haskell2010 diff --git a/testsuite/tests/cabal/cabal06/r/LICENSE b/testsuite/tests/cabal/cabal06/r/LICENSE new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/r/LICENSE diff --git a/testsuite/tests/cabal/cabal06/r/Main.hs b/testsuite/tests/cabal/cabal06/r/Main.hs new file mode 100644 index 0000000000..5e626645cd --- /dev/null +++ b/testsuite/tests/cabal/cabal06/r/Main.hs @@ -0,0 +1,3 @@ +module Main where +import Q +main = print q diff --git a/testsuite/tests/cabal/cabal06/r/r.cabal b/testsuite/tests/cabal/cabal06/r/r.cabal new file mode 100644 index 0000000000..60e16c1c78 --- /dev/null +++ b/testsuite/tests/cabal/cabal06/r/r.cabal @@ -0,0 +1,12 @@ +name: r +version: 1.0 +license-file: LICENSE +author: Edward Z. Yang +maintainer: ezyang@cs.stanford.edu +build-type: Simple +cabal-version: >=1.20 + +executable cabal06 + build-depends: base, p, q + main-is: Main.hs + default-language: Haskell2010 diff --git a/testsuite/tests/cabal/ghcpkg01.stdout b/testsuite/tests/cabal/ghcpkg01.stdout index da50cd92f6..c8faf7fdbb 100644 --- a/testsuite/tests/cabal/ghcpkg01.stdout +++ b/testsuite/tests/cabal/ghcpkg01.stdout @@ -4,6 +4,7 @@ Reading package info from "test.pkg" ... done. name: testpkg version: 1.2.3.4 id: testpkg-1.2.3.4-XXX +key: testpkg-1.2.3.4 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org @@ -28,6 +29,7 @@ pkgroot: name: testpkg version: 1.2.3.4 id: testpkg-1.2.3.4-XXX +key: testpkg-1.2.3.4 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org @@ -58,6 +60,7 @@ local01.package.conf: name: testpkg version: 2.0 id: testpkg-2.0-XXX +key: testpkg-2.0 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org @@ -82,6 +85,7 @@ pkgroot: name: testpkg version: 2.0 id: testpkg-2.0-XXX +key: testpkg-2.0 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org @@ -106,6 +110,7 @@ pkgroot: name: testpkg version: 1.2.3.4 id: testpkg-1.2.3.4-XXX +key: testpkg-1.2.3.4 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org @@ -137,6 +142,7 @@ Reading package info from "test3.pkg" ... done. name: testpkg version: 1.2.3.4 id: testpkg-1.2.3.4-XXX +key: testpkg-1.2.3.4 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org diff --git a/testsuite/tests/cabal/shadow1.pkg b/testsuite/tests/cabal/shadow1.pkg index 7bf047f3d2..553ebeb776 100644 --- a/testsuite/tests/cabal/shadow1.pkg +++ b/testsuite/tests/cabal/shadow1.pkg @@ -1,4 +1,5 @@ name: shadow version: 1 id: shadow-1-XXX +key: shadow-1 depends: diff --git a/testsuite/tests/cabal/shadow2.pkg b/testsuite/tests/cabal/shadow2.pkg index b720dc9479..ae89641176 100644 --- a/testsuite/tests/cabal/shadow2.pkg +++ b/testsuite/tests/cabal/shadow2.pkg @@ -1,4 +1,5 @@ name: shadowdep version: 1 id: shadowdep-1-XXX +key: shadowdep-1 depends: shadow-1-XXX diff --git a/testsuite/tests/cabal/shadow3.pkg b/testsuite/tests/cabal/shadow3.pkg index 933ed3f67d..62c93f95e1 100644 --- a/testsuite/tests/cabal/shadow3.pkg +++ b/testsuite/tests/cabal/shadow3.pkg @@ -1,4 +1,5 @@ name: shadow version: 1 id: shadow-1-YYY +key: shadow-1 depends: diff --git a/testsuite/tests/cabal/test.pkg b/testsuite/tests/cabal/test.pkg index 02a07ab7b6..42c557a0f9 100644 --- a/testsuite/tests/cabal/test.pkg +++ b/testsuite/tests/cabal/test.pkg @@ -1,6 +1,7 @@ name: testpkg version: 1.2.3.4 id: testpkg-1.2.3.4-XXX +key: testpkg-1.2.3.4 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org diff --git a/testsuite/tests/cabal/test2.pkg b/testsuite/tests/cabal/test2.pkg index a6d28d629a..c027ed3a15 100644 --- a/testsuite/tests/cabal/test2.pkg +++ b/testsuite/tests/cabal/test2.pkg @@ -1,6 +1,7 @@ name: "testpkg" version: 2.0 id: testpkg-2.0-XXX +key: testpkg-2.0 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org diff --git a/testsuite/tests/cabal/test3.pkg b/testsuite/tests/cabal/test3.pkg index 6d3257126b..8f1ca04366 100644 --- a/testsuite/tests/cabal/test3.pkg +++ b/testsuite/tests/cabal/test3.pkg @@ -1,6 +1,7 @@ name: "testpkg" version: 3.0 id: testpkg-3.0-XXX +key: testpkg-3.0 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org diff --git a/testsuite/tests/cabal/test4.pkg b/testsuite/tests/cabal/test4.pkg index 598559a80f..c4b1883512 100644 --- a/testsuite/tests/cabal/test4.pkg +++ b/testsuite/tests/cabal/test4.pkg @@ -1,6 +1,7 @@ name: "testpkg" version: 4.0 id: testpkg-4.0-XXX +key: testpkg-4.0 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org diff --git a/testsuite/tests/cabal/test5.pkg b/testsuite/tests/cabal/test5.pkg index fc27bc9ba5..48e198cd30 100644 --- a/testsuite/tests/cabal/test5.pkg +++ b/testsuite/tests/cabal/test5.pkg @@ -1,6 +1,7 @@ name: "newtestpkg" version: 2.0 id: newtestpkg-2.0-XXX +key: newtestpkg-2.0 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org diff --git a/testsuite/tests/cabal/test7a.pkg b/testsuite/tests/cabal/test7a.pkg index c0698d70b9..f90fa7320f 100644 --- a/testsuite/tests/cabal/test7a.pkg +++ b/testsuite/tests/cabal/test7a.pkg @@ -1,6 +1,7 @@ name: testpkg7a version: 1.0 id: testpkg7a-1.0-XXX +key: testpkg7a-1.0 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org diff --git a/testsuite/tests/cabal/test7b.pkg b/testsuite/tests/cabal/test7b.pkg index d8bf47ec36..e89ac444d8 100644 --- a/testsuite/tests/cabal/test7b.pkg +++ b/testsuite/tests/cabal/test7b.pkg @@ -1,6 +1,7 @@ name: testpkg7b version: 1.0 id: testpkg7b-1.0-XXX +key: testpkg7b-1.0 license: BSD3 copyright: (c) The Univsersity of Glasgow 2004 maintainer: glasgow-haskell-users@haskell.org diff --git a/testsuite/tests/cabal/testdup.pkg b/testsuite/tests/cabal/testdup.pkg index 77000eda27..0e368e5ae8 100644 --- a/testsuite/tests/cabal/testdup.pkg +++ b/testsuite/tests/cabal/testdup.pkg @@ -1,5 +1,6 @@ name: testdup version: 1.0 id: testdup-1.0-XXX +key: testdup-1.0 license: BSD3 depends: testpkg-1.2.3.4-XXX testpkg-1.2.3.4-XXX |