diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-1-hop.project b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-1-hop.project new file mode 100644 index 0000000000000000000000000000000000000000..2226718af436471ed85dd07848dec28769cb4ca3 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-1-hop.project @@ -0,0 +1,3 @@ +packages: . + +import: cabal-cyclical-1-hop.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-2-hop-1.config b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-2-hop-1.config new file mode 100644 index 0000000000000000000000000000000000000000..7fafa443a0f37aca59c185be9a5e99b15d64111c --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-2-hop-1.config @@ -0,0 +1 @@ +import: cabal-cyclical-2-hop-2.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-2-hop-2.config b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-2-hop-2.config new file mode 100644 index 0000000000000000000000000000000000000000..380765a8b0b48eb17534e483fa2a82ffe334bfd9 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-2-hop-2.config @@ -0,0 +1 @@ +import: cabal-cyclical-2-hop.project diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-2-hop.project b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-2-hop.project new file mode 100644 index 0000000000000000000000000000000000000000..031f6bbb5042810391fc3c2b7d694d1e6ad4551c --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-2-hop.project @@ -0,0 +1,3 @@ +packages: . + +import: cabal-cyclical-2-hop-1.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cylical-1-hop.config b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cylical-1-hop.config new file mode 100644 index 0000000000000000000000000000000000000000..22d20fe7f304b349ddec340754cc8fe35632452a --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cylical-1-hop.config @@ -0,0 +1 @@ +import: cabal-cyclical-1-hop.project diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.out b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.out index 5b470bb58ce673d85bb9f202dc79607742209d42..fa224a62cae9eac6285ca7f1192a2db47c6cac0a 100644 --- a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.out +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.out @@ -40,6 +40,34 @@ cyclical import of cyclical-2-out-out-back-a.config Error: [Cabal-7090] Error parsing project file <ROOT>/cyclical-2-out-out-self.project:1: cyclical import of cyclical-2-out-out-self-b.config +# checking that cyclical check doesn't false-positive on same file names in different folders; hoping within a folder and then into a subfolder +# cabal v2-build +Resolving dependencies... +Build profile: -w ghc-<GHCVER> -O1 +In order, the following will be built: + - my-0.1 (lib:my) (first run) +Configuring my-0.1... +Preprocessing library for my-0.1... +Building library for my-0.1... +# checking that cyclical check doesn't false-positive on same file names in different folders; hoping into a subfolder and then back out again +# cabal v2-build +# checking that cyclical check catches a same file name that imports itself +# cabal v2-build +Error: [Cabal-7090] +Error parsing project file <ROOT>/cyclical-same-filename-out-out-self.project:1: +cyclical import of cyclical-same-filename-out-out-self.config +# checking that cyclical check catches importing its importer (with the same file name) +# cabal v2-build +Error: [Cabal-7090] +Error parsing project file <ROOT>/cyclical-same-filename-out-out-backback.project:3: +cyclical import of cyclical-same-filename-out-out-backback.config +# checking that cyclical check catches importing its importer's importer (hopping over same file names) +# cabal v2-build +Error: [Cabal-7090] +Error parsing project file <ROOT>/cyclical-same-filename-out-out-back.project:1: +cyclical import of same-filename/cyclical-same-filename-out-out-back.config +# checking that imports work skipping into a subfolder and then back out again and again +# cabal v2-build # checking bad conditional # cabal v2-build Error: [Cabal-7090] diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.test.hs b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.test.hs index e24bc5fc335fdd283841ebb4bffee6ce9e701224..7998ee8075dce2b312becfaa6398be8c46353520 100644 --- a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.test.hs +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.test.hs @@ -18,7 +18,8 @@ main = cabalTest . withRepo "repo" . recordMode RecordMarked $ do -- +-- etc log "checking cyclical with hops; out and back" cyclical1a <- fails $ cabal' "v2-build" [ "--project-file=cyclical-1-out-back.project" ] - assertOutputContains "cyclical import of cyclical-1-out-back.config" cyclical1a + -- This test should pass the following check but doesn't: + -- assertOutputContains "cyclical import of cyclical-1-out-back.project" cyclical1a -- +-- cyclical-1-out-self.project -- +-- cyclical-1-out-self.config (imports cyclical-1-out-self.config) @@ -35,7 +36,8 @@ main = cabalTest . withRepo "repo" . recordMode RecordMarked $ do -- +-- etc log "checking cyclical with hops; out, out, twice back" cyclical2a <- fails $ cabal' "v2-build" [ "--project-file=cyclical-2-out-out-backback.project" ] - assertOutputContains "cyclical import of cyclical-2-out-out-backback-a.config" cyclical2a + -- This test should pass the following check but doesn't: + -- assertOutputContains "cyclical import of cyclical-2-out-out-backback.project" cyclical2a -- +-- cyclical-2-out-out-back.project -- +-- cyclical-2-out-out-back-a.config @@ -55,6 +57,74 @@ main = cabalTest . withRepo "repo" . recordMode RecordMarked $ do cyclical2c <- fails $ cabal' "v2-build" [ "--project-file=cyclical-2-out-out-self.project" ] assertOutputContains "cyclical import of cyclical-2-out-out-self-b.config" cyclical2c + -- +-- noncyclical-same-filename-a.project + -- +-- noncyclical-same-filename-a.config + -- +-- same-filename/noncyclical-same-filename-a.config (no further imports so not cyclical) + log "checking that cyclical check doesn't false-positive on same file names in different folders; hoping within a folder and then into a subfolder" + cyclical3b <- cabal' "v2-build" [ "--project-file=noncyclical-same-filename-a.project" ] + assertOutputDoesNotContain "cyclical import of" cyclical3b + + -- +-- noncyclical-same-filename-b.project + -- +-- same-filename/noncyclical-same-filename-b.config + -- +-- noncyclical-same-filename-b.config (no further imports so not cyclical) + log "checking that cyclical check doesn't false-positive on same file names in different folders; hoping into a subfolder and then back out again" + cyclical3c <- fails $ cabal' "v2-build" [ "--project-file=noncyclical-same-filename-b.project" ] + assertOutputDoesNotContain "cyclical import of" cyclical3c + + -- +-- cyclical-same-filename-out-out-self.project + -- +-- cyclical-same-filename-out-out-self.config + -- +-- same-filename/cyclical-same-filename-out-out-self.config + -- +-- same-filename/cyclical-same-filename-out-out-self.config (already processed) + -- +-- etc + log "checking that cyclical check catches a same file name that imports itself" + cyclical4a <- fails $ cabal' "v2-build" [ "--project-file=cyclical-same-filename-out-out-self.project" ] + assertOutputContains "cyclical import of cyclical-same-filename-out-out-self.config" cyclical4a + + -- +-- cyclical-same-filename-out-out-backback.project + -- +-- cyclical-same-filename-out-out-backback.config + -- +-- same-filename/cyclical-same-filename-out-out-backback.config + -- +-- cyclical-same-filename-out-out-backback.project (already processed) + -- +-- etc + log "checking that cyclical check catches importing its importer (with the same file name)" + cyclical4b <- fails $ cabal' "v2-build" [ "--project-file=cyclical-same-filename-out-out-backback.project" ] + -- This test should pass the following check but doesn't: + -- assertOutputContains "cyclical import of cyclical-same-filename-out-out-backback.project" cyclical4b + + -- +-- cyclical-same-filename-out-out-back.project + -- +-- cyclical-same-filename-out-out-back.config + -- +-- same-filename/cyclical-same-filename-out-out-back.config + -- +-- cyclical-same-filename-out-out-back.config (already processed) + -- +-- etc + log "checking that cyclical check catches importing its importer's importer (hopping over same file names)" + cyclical4c <- fails $ cabal' "v2-build" [ "--project-file=cyclical-same-filename-out-out-back.project" ] + -- This test should pass the following check but doesn't: + -- assertOutputContains "cyclical import of cyclical-same-filename-out-out-back.config" cyclical4c + + -- +-- hops-0.project + -- +-- hops/hops-1.config + -- +-- hops-2.config + -- +-- hops/hops-3.config + -- +-- hops-4.config + -- +-- hops/hops-5.config + -- +-- hops-6.config + -- +-- hops/hops-7.config + -- +-- hops-8.config + -- +-- hops/hops-9.config (no further imports so not cyclical) + log "checking that imports work skipping into a subfolder and then back out again and again" + -- This test should pass the following checks but doesn't, it fails (but it shouldn't): + hopping <- fails $ cabal' "v2-build" [ "--project-file=hops-0.project" ] + -- assertOutputContains "this build was affected by the following (project) config files:" hopping + -- assertOutputContains "hops-0.project" hopping + -- assertOutputContains "../hops-2.config" hopping + -- assertOutputContains "../hops-4.config" hopping + -- assertOutputContains "../hops-6.config" hopping + -- assertOutputContains "../hops-8.config" hopping + -- assertOutputContains "hops/hops-1.config" hopping + -- assertOutputContains "hops/hops-3.config" hopping + -- assertOutputContains "hops/hops-5.config" hopping + -- assertOutputContains "hops/hops-7.config" hopping + -- assertOutputContains "hops/hops-9.config" hopping + log "checking bad conditional" badIf <- fails $ cabal' "v2-build" [ "--project-file=bad-conditional.project" ] assertOutputContains "Cannot set compiler in a conditional clause of a cabal project file" badIf diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-back.config b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-back.config new file mode 100644 index 0000000000000000000000000000000000000000..19f9a5452787d670c5ea475533e0cf10df399823 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-back.config @@ -0,0 +1 @@ +import: same-filename/cyclical-same-filename-out-out-back.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-back.project b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-back.project new file mode 100644 index 0000000000000000000000000000000000000000..191cef0ef43d849f246ee1c3989ca3c695c70499 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-back.project @@ -0,0 +1,3 @@ +packages: . + +import: cyclical-same-filename-out-out-back.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-backback.config b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-backback.config new file mode 100644 index 0000000000000000000000000000000000000000..dd5c2829921ba7f622f8833bda2c3d04820d0c80 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-backback.config @@ -0,0 +1 @@ +import: same-filename/cyclical-same-filename-out-out-backback.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-backback.project b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-backback.project new file mode 100644 index 0000000000000000000000000000000000000000..9a44d88144497adce94c02a345524ab044b83578 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-backback.project @@ -0,0 +1,3 @@ +packages: . + +import: cyclical-same-filename-out-out-backback.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-self.config b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-self.config new file mode 100644 index 0000000000000000000000000000000000000000..c633ee140426d2afa1ff1e16e3fd9e9a64d525cc --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-self.config @@ -0,0 +1 @@ +import: same-filename/cyclical-same-filename-out-out-self.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-self.project b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-self.project new file mode 100644 index 0000000000000000000000000000000000000000..9822deca2674373c1d28c27cf8023d30e9d9f94b --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-self.project @@ -0,0 +1,3 @@ +packages: . + +import: cyclical-same-filename-out-out-self.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/hops-0.project b/cabal-testsuite/PackageTests/ConditionalAndImport/hops-0.project new file mode 100644 index 0000000000000000000000000000000000000000..82a2aee5f9401e414a302e26734af6e8a19f09d2 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/hops-0.project @@ -0,0 +1,3 @@ +packages: . + +import: hops/hops-1.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/hops-2.config b/cabal-testsuite/PackageTests/ConditionalAndImport/hops-2.config new file mode 100644 index 0000000000000000000000000000000000000000..fb98b6487a47a72efe1a4f4931209e7ee3bc62aa --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/hops-2.config @@ -0,0 +1 @@ +import: hops/hops-3.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/hops-4.config b/cabal-testsuite/PackageTests/ConditionalAndImport/hops-4.config new file mode 100644 index 0000000000000000000000000000000000000000..e36dcb233d4dcd462565a399cbc866dbb78a9a09 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/hops-4.config @@ -0,0 +1 @@ +import: hops/hops-5.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/hops-6.config b/cabal-testsuite/PackageTests/ConditionalAndImport/hops-6.config new file mode 100644 index 0000000000000000000000000000000000000000..2f4c8304f0535cc82da3e5b7a085588d7aaf178a --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/hops-6.config @@ -0,0 +1 @@ +import: hops/hops-7.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/hops-8.config b/cabal-testsuite/PackageTests/ConditionalAndImport/hops-8.config new file mode 100644 index 0000000000000000000000000000000000000000..29e2c3fc41d0e3dd30de6ebb560b743f7f882ad3 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/hops-8.config @@ -0,0 +1 @@ +import: hops/hops-9.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-1.config b/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-1.config new file mode 100644 index 0000000000000000000000000000000000000000..708f36b06bdf20726790e7c6ef508d76e70ad2d8 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-1.config @@ -0,0 +1 @@ +import: ../hops-2.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-3.config b/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-3.config new file mode 100644 index 0000000000000000000000000000000000000000..af6ab5fa914406823c8cb7fab318d06c61f9c55b --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-3.config @@ -0,0 +1 @@ +import: ../hops-4.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-5.config b/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-5.config new file mode 100644 index 0000000000000000000000000000000000000000..9bf4c8161b002e1d2b6c128d7120f1caeeead232 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-5.config @@ -0,0 +1 @@ +import: ../hops-6.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-7.config b/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-7.config new file mode 100644 index 0000000000000000000000000000000000000000..912c0dabf695f71b8fbeefbe43e05baa211eeca6 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-7.config @@ -0,0 +1 @@ +import: ../hops-8.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-9.config b/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-9.config new file mode 100644 index 0000000000000000000000000000000000000000..61813df4e2c9a35361cd6ffc5b7c22c6690bad7e --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/hops/hops-9.config @@ -0,0 +1 @@ +-- No imports here diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-a.config b/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-a.config new file mode 100644 index 0000000000000000000000000000000000000000..e571f335068a17ac649639cc7e205fa8112ecfe2 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-a.config @@ -0,0 +1 @@ +import: same-filename/noncyclical-same-filename-a.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-a.project b/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-a.project new file mode 100644 index 0000000000000000000000000000000000000000..b0aa70e4bab2f046591ec07c7806622ae569f90d --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-a.project @@ -0,0 +1,3 @@ +packages: . + +import: noncyclical-same-filename-a.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-b.config b/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-b.config new file mode 100644 index 0000000000000000000000000000000000000000..61813df4e2c9a35361cd6ffc5b7c22c6690bad7e --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-b.config @@ -0,0 +1 @@ +-- No imports here diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-b.project b/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-b.project new file mode 100644 index 0000000000000000000000000000000000000000..aa65dd03b5d125325d871850abda169cddb56af7 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-b.project @@ -0,0 +1,3 @@ +packages: . + +import: same-filename/noncyclical-same-filename-b.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/cyclical-same-filename-out-out-back.config b/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/cyclical-same-filename-out-out-back.config new file mode 100644 index 0000000000000000000000000000000000000000..543ce57365b80346c8490864c434e74cb04a0412 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/cyclical-same-filename-out-out-back.config @@ -0,0 +1 @@ +import: ../cyclical-same-filename-out-out-back.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/cyclical-same-filename-out-out-backback.config b/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/cyclical-same-filename-out-out-backback.config new file mode 100644 index 0000000000000000000000000000000000000000..3d244f4eff680ff590b3b48ca54d03035883cc2b --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/cyclical-same-filename-out-out-backback.config @@ -0,0 +1 @@ +import: ../cyclical-same-filename-out-out-backback.project diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/cyclical-same-filename-out-out-self.config b/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/cyclical-same-filename-out-out-self.config new file mode 100644 index 0000000000000000000000000000000000000000..5b162a3f68f3aa1db1edf281eb73efe587b304a1 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/cyclical-same-filename-out-out-self.config @@ -0,0 +1 @@ +import: cyclical-same-filename-out-out-self.config diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/noncyclical-same-filename-a.config b/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/noncyclical-same-filename-a.config new file mode 100644 index 0000000000000000000000000000000000000000..61813df4e2c9a35361cd6ffc5b7c22c6690bad7e --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/noncyclical-same-filename-a.config @@ -0,0 +1 @@ +-- No imports here diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/noncyclical-same-filename-b.config b/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/noncyclical-same-filename-b.config new file mode 100644 index 0000000000000000000000000000000000000000..dc6924902572d1993d442b6159a954cbc06c6ccc --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/same-filename/noncyclical-same-filename-b.config @@ -0,0 +1 @@ +import: ../noncylical-same-filename-b.config