diff options
Diffstat (limited to 'testsuite/tests/cabal/Makefile')
-rw-r--r-- | testsuite/tests/cabal/Makefile | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/testsuite/tests/cabal/Makefile b/testsuite/tests/cabal/Makefile index 47cd95d010..7644bd8467 100644 --- a/testsuite/tests/cabal/Makefile +++ b/testsuite/tests/cabal/Makefile @@ -127,43 +127,51 @@ T1750: PKGCONFSHADOW1=localshadow1.package.conf PKGCONFSHADOW2=localshadow2.package.conf +PKGCONFSHADOW3=localshadow3.package.conf LOCAL_GHC_PKGSHADOW1 = '$(GHC_PKG)' --no-user-package-db -f $(PKGCONFSHADOW1) LOCAL_GHC_PKGSHADOW2 = '$(GHC_PKG)' --no-user-package-db -f $(PKGCONFSHADOW2) -LOCAL_GHC_PKGSHADOW3 = '$(GHC_PKG)' --no-user-package-db -f $(PKGCONFSHADOW1) -f $(PKGCONFSHADOW2) +LOCAL_GHC_PKGSHADOW3 = '$(GHC_PKG)' --no-user-package-db -f $(PKGCONFSHADOW3) +LOCAL_GHC_PKGSHADOW12 = '$(GHC_PKG)' --no-user-package-db -f $(PKGCONFSHADOW1) -f $(PKGCONFSHADOW2) +LOCAL_GHC_PKGSHADOW13 = '$(GHC_PKG)' --no-user-package-db -f $(PKGCONFSHADOW1) -f $(PKGCONFSHADOW3) # Test package shadowing behaviour. # # localshadow1.package.conf: shadowdep-1-XXX <- shadow-1-XXX -# localshadow2.package.conf: shadow-1-YYY -# -# shadow-1-XXX will be shadowed by shadow-1-YYY, thus invalidating -# shadowdep-1-XXX. +# localshadow2.package.conf: shadow-1-XXX +# +# If the ABI hash of boths shadow-1s are the same, we'll just accept +# the later shadow version. However, if the ABIs are different, we +# should complain! shadow: - rm -rf $(PKGCONFSHADOW1) $(PKGCONFSHADOW2) shadow.hs shadow.o shadow.hi shadow.out shadow.hs shadow.hi + rm -rf $(PKGCONFSHADOW1) $(PKGCONFSHADOW2) $(PKGCONFSHADOW3) shadow.hs shadow.o shadow.hi shadow.out shadow.hs shadow.hi $(LOCAL_GHC_PKGSHADOW1) init $(PKGCONFSHADOW1) $(LOCAL_GHC_PKGSHADOW2) init $(PKGCONFSHADOW2) + $(LOCAL_GHC_PKGSHADOW3) init $(PKGCONFSHADOW3) $(LOCAL_GHC_PKGSHADOW1) register -v0 --force shadow1.pkg $(LOCAL_GHC_PKGSHADOW1) register -v0 --force shadow2.pkg $(LOCAL_GHC_PKGSHADOW2) register -v0 --force shadow3.pkg - $(LOCAL_GHC_PKGSHADOW3) list + $(LOCAL_GHC_PKGSHADOW3) register -v0 --force shadow1.pkg + @echo "databases 1 and 2:" + $(LOCAL_GHC_PKGSHADOW12) list + @echo "databases 1 and 3:" + $(LOCAL_GHC_PKGSHADOW13) list echo "main = return ()" >shadow.hs # -# In this test, shadow-1-XXX is shadowed by shadow-1-YYY, which causes -# shadowdep-1-XXX to be unavailable: +# In this test, shadow-1-XXX with ABI hash aaa conflicts with shadow-1-XXX with +# ABI hash bbb, so GHC errors # @echo "should FAIL:" - '$(TEST_HC)' $(TEST_HC_OPTS) -package-db $(PKGCONFSHADOW1) -package-db $(PKGCONFSHADOW2) -package shadowdep -c shadow.hs -fno-code || true -# -# Reversing the order of the package.conf files should fix the problem: + if '$(TEST_HC)' $(TEST_HC_OPTS) -package-db $(PKGCONFSHADOW1) -package-db $(PKGCONFSHADOW2) -package shadowdep -c shadow.hs -fno-code; then false; else true; fi # - @echo "should SUCCEED:" - '$(TEST_HC)' $(TEST_HC_OPTS) -package-db $(PKGCONFSHADOW2) -package-db $(PKGCONFSHADOW1) -package shadowdep -c shadow.hs -fno-code || true +# Reversing the orders of the configs does not fix the problem +# + @echo "should FAIL:" + if '$(TEST_HC)' $(TEST_HC_OPTS) -package-db $(PKGCONFSHADOW2) -package-db $(PKGCONFSHADOW1) -package shadowdep -c shadow.hs -fno-code; then false; else true; fi # -# We can also fix the problem by using an explicit -package-id flag to -# specify a package we really want to use: +# When the ABIs are the same, there is no problem # @echo "should SUCCEED:" - '$(TEST_HC)' $(TEST_HC_OPTS) -package-db $(PKGCONFSHADOW1) -package-db $(PKGCONFSHADOW2) -package-id shadowdep-1-XXX -c shadow.hs -fno-code + '$(TEST_HC)' $(TEST_HC_OPTS) -package-db $(PKGCONFSHADOW3) -package-db $(PKGCONFSHADOW1) -package shadowdep -c shadow.hs -fno-code # If we pass --global, we should ignore instances in the user database T5442a: @@ -210,7 +218,7 @@ T5442d: '$(GHC_PKG)' init package.conf.T5442d.user '$(GHC_PKG)' init package.conf.T5442d.extra '$(GHC_PKG)' -f package.conf.T5442d.global register --force-files shadow1.pkg 2>/dev/null - '$(GHC_PKG)' -f package.conf.T5442d.user register --force-files shadow3.pkg 2>/dev/null + '$(GHC_PKG)' -f package.conf.T5442d.user register --force-files shadow4.pkg 2>/dev/null '$(GHC_PKG)' --global-package-db=package.conf.T5442d.global -f package.conf.T5442d.extra register --force-files shadow2.pkg 2>/dev/null '$(GHC_PKG)' --global-package-db=package.conf.T5442d.global --user-package-db=package.conf.T5442d.user -f package.conf.T5442d.extra --global unregister shadow --force @echo "global (should be empty):" |