diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/U.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/U.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/V.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/V.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.out
new file mode 100644
index 0000000000000000000000000000000000000000..3d6859f996bcc71b2ea287ce1ed1067eb3848974
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.out
@@ -0,0 +1,2 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.dot-uv.dist/work/./dist/sdist/p-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.patch b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d16b271c9347a65a3087d0a8b3bdcb08e254c8f2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.patch
@@ -0,0 +1,8 @@
+diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.out
+index 3d6859f99..a7ffc109e 100644
+--- a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.out
++++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.out
+@@ -1,2 +1,2 @@
+ # cabal sdist
+-Wrote tarball sdist to <ROOT>/cabal.dot-uv.dist/work/./dist/sdist/p-0.1.tar.gz
++Wrote tarball sdist to <ROOT>/cabal.dot-uv.dist/work/./dist/sdist/uv-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.project b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.project
new file mode 100644
index 0000000000000000000000000000000000000000..e6fdbadb4398bc0e333947b5fb8021778310d943
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.project
@@ -0,0 +1 @@
+packages: .
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..03f2535de4a6fc65247706c3b4a81ee8e43230d2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.test.hs
@@ -0,0 +1,12 @@
+import Test.Cabal.Prelude
+
+-- cabal.dot-uv.project has "packages: .". That package is uv.cabal but "cabal
+-- sdist" writes sdist/p-0.1.tar.gz instead of the expected sdist/uv-0.1.tar.gz.
+-- That is wrong, "cabal sdist" should respect the "--project-file" option but
+-- instead probes the parent directory and picks up "../cabal.project" that has
+-- "packages: Projects-Default-No/p".
+--
+-- TODO: Fix this behaviour and apply the patch cabal.dot-uv.patch to update the
+-- expected output to what we'd expect if "cabal sdist" respected the project.
+main = cabalTest . withProjectFile "cabal.dot-uv.project" $ do
+    cabal "sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..67bd38241618e8fd9e101e4689927836ce735d6e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.v2.out
@@ -0,0 +1,2 @@
+# cabal v2-sdist
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/uv-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.v2.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..5f6c3ba1a836da7711ac06c2fda2bb1da4735de2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.dot-uv.v2.test.hs
@@ -0,0 +1,6 @@
+import Test.Cabal.Prelude
+
+-- cabal.dot-uv.project has "packages: .". That package is uv.cabal and "cabal
+-- v2-sdist" writes sdist/uv-0.1.tar.gz. This is correct.
+main = cabalTest . withProjectFile "cabal.dot-uv.project" $ do
+    cabal "v2-sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.out
new file mode 100644
index 0000000000000000000000000000000000000000..c4b60109a9899efc64e76c906b6fef04a1f54810
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.out
@@ -0,0 +1,2 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.ignore-project.dist/work/./dist/sdist/uv-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..6b77d12d2fe37103be408df7cbd0924066d29b8a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- This test correctly writes sdist/uv-0.1.tar.gz for the uv.cabal package.
+main = cabalTest $ do
+    cabal "sdist" ["all", "--ignore-project"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..e6f04ba99706d17e786bb3313bd1208f8d0dbfb4
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.v2.out
@@ -0,0 +1,2 @@
+# cabal v2-sdist
+Wrote tarball sdist to /home/philderbeast/dev/src/cabalism/cabal/cabal-testsuite/PackageTests/SDist/Respect-Project-File/dist-newstyle/sdist/p-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.v2.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..a159257eb68caa0ebcbd5653507e338eb8ff53e0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.ignore-project.v2.test.hs
@@ -0,0 +1,8 @@
+import Test.Cabal.Prelude
+
+-- This test should have written sdist/uv-0.1.tar.gz for the uv.cabal package
+-- but instead it probed up the directory tree, found a default cabal.project
+-- and wrote sdist/p-0.1.tar.gz. That is incorrect. It didn't ignore the
+-- project.
+main = cabalTest $ do
+    cabal "v2-sdist" ["all", "--ignore-project"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.out
new file mode 100644
index 0000000000000000000000000000000000000000..da8d99d249f682dc7dd505b3e69b293bacf4890f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.out
@@ -0,0 +1,2 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.no-project.dist/work/./dist/sdist/p-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..0002f9f4004480a8cf27f6804b4dd644a9ace885
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.test.hs
@@ -0,0 +1,9 @@
+import Test.Cabal.Prelude
+
+-- When no project is given, "cabal sdist" probes up the directory tree, finds a
+-- default cabal.project and writes sdist/p-0.1.tar.gz. That is acceptable. An
+-- alternative and reasonable expectation (but not the behaviour seen) is that
+-- project probing would not occur and "cabal sdist" would work on the local
+-- uv.cabal package.
+main = cabalTest $ do
+    cabal "sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..e6f04ba99706d17e786bb3313bd1208f8d0dbfb4
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.v2.out
@@ -0,0 +1,2 @@
+# cabal v2-sdist
+Wrote tarball sdist to /home/philderbeast/dev/src/cabalism/cabal/cabal-testsuite/PackageTests/SDist/Respect-Project-File/dist-newstyle/sdist/p-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.v2.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..5030fff51413ef5ae04c4c70aff7d01322e318fb
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.no-project.v2.test.hs
@@ -0,0 +1,9 @@
+import Test.Cabal.Prelude
+
+-- When no project is given, "cabal v2-sdist" probes up the directory tree,
+-- finds a default cabal.project and writes sdist/p-0.1.tar.gz. That is
+-- acceptable. An alternative and reasonable expectation (but not the behaviour
+-- seen) is that project probing would not occur and "cabal v2-sdist" would work
+-- on the local uv.cabal package.
+main = cabalTest $ do
+    cabal "v2-sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.out
new file mode 100644
index 0000000000000000000000000000000000000000..c96d15ee6bbcd6e79642658359e556ef4e3bd6ec
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.out
@@ -0,0 +1,2 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.sub-pq.dist/work/./dist/sdist/p-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.patch b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a81b0f0099dea8b7a684c4edfa11178b3519aaa8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.patch
@@ -0,0 +1,8 @@
+diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.out
+index c96d15ee6..12dcc1217 100644
+--- a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.out
++++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.out
+@@ -1,2 +1,3 @@
+ # cabal sdist
+ Wrote tarball sdist to <ROOT>/cabal.sub-pq.dist/work/./dist/sdist/p-0.1.tar.gz
++Wrote tarball sdist to <ROOT>/cabal.sub-pq.dist/work/./dist/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.project b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.project
new file mode 100644
index 0000000000000000000000000000000000000000..36c6791d8c2fd574872159b3f0922c9504a30ce9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.project
@@ -0,0 +1 @@
+packages: p/ q/
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..19447044121eac1f36b6dbb673e4d6438bdb17f9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.test.hs
@@ -0,0 +1,12 @@
+import Test.Cabal.Prelude
+
+-- cabal.sub-pq.project has "packages: p/ q/" but "cabal sdist" only writes
+-- sdist/p-0.1.tar.gz instead of the expected sdist/p-0.1.tar.gz and
+-- sdist/q-0.1.tar.gz. That is wrong, "cabal sdist" should respect the
+-- "--project-file" option but instead probes the parent directory and picks up
+-- "../cabal.project" that has "packages: Projects-Default-No/p".
+--
+-- TODO: Fix this behaviour and apply the patch cabal.sub-pq.patch to update the
+-- expected output to what we'd expect if "cabal sdist" respected the project.
+main = cabalTest . withProjectFile "cabal.sub-pq.project" $ do
+    cabal "sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..f44e24e9567eb3ff2306ac17e7cf320ec3f16ff9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.v2.out
@@ -0,0 +1,3 @@
+# cabal v2-sdist
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/p-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.v2.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..aec079838452bb35f42daf863db086632155ca5f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-pq.v2.test.hs
@@ -0,0 +1,6 @@
+import Test.Cabal.Prelude
+
+-- cabal.sub-pq.project has "packages: p/ q/" and "cabal v2-sdist" writes
+-- sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz. This is correct.
+main = cabalTest . withProjectFile "cabal.sub-pq.project" $ do
+    cabal "v2-sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.out
new file mode 100644
index 0000000000000000000000000000000000000000..3a0a8e5f40335c23866acbef3e37694fdead59b2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.out
@@ -0,0 +1,2 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/p-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.patch b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.patch
new file mode 100644
index 0000000000000000000000000000000000000000..56dbbae23d51daddae4f50f2d6b2b443d74c225a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.patch
@@ -0,0 +1,9 @@
+diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.out
+index 3a0a8e5f4..b4cced990 100644
+--- a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.out
++++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.out
+@@ -1,2 +1,3 @@
+ # cabal sdist
+-Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/p-0.1.tar.gz
++Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/r-0.1.tar.gz
++Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/s-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.project b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.project
new file mode 100644
index 0000000000000000000000000000000000000000..6a0bc8f2249ec416201a41bb15916347f66d2614
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.project
@@ -0,0 +1 @@
+packages: r/ s/
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..3dd58bf6b975532231199fed9237213e53b492ad
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.test.hs
@@ -0,0 +1,12 @@
+import Test.Cabal.Prelude
+
+-- cabal.sub-rs.project has "packages: r/ s/" but "cabal sdist" writes
+-- sdist/p-0.1.tar.gz instead of the expected sdist/r-0.1.tar.gz and
+-- sdist/s-0.1.tar.gz. That is wrong, "cabal sdist" should respect the
+-- "--project-file" option but instead probes the parent directory and picks up
+-- "../cabal.project" that has "packages: Projects-Default-No/p".
+--
+-- TODO: Fix this behaviour and apply the patch cabal.sub-rs.patch to update the
+-- expected output to what we'd expect if "cabal sdist" respected the project.
+main = cabalTest . withProjectFile "cabal.sub-rs.project" $ do
+    cabal "sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..f6ee642cc692c4149e8ba5182c78657c62eb3804
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.v2.out
@@ -0,0 +1,3 @@
+# cabal v2-sdist
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/r-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/s-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.v2.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..66b8378a1cd03d6691b6b2e20cbb410b6f235487
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.v2.test.hs
@@ -0,0 +1,6 @@
+import Test.Cabal.Prelude
+
+-- cabal.sub-rs.project has "packages: r/ s/" and "cabal v2-sdist" writes
+-- sdist/r-0.1.tar.gz and sdist/s-0.1.tar.gz. This is correct.
+main = cabalTest . withProjectFile "cabal.sub-rs.project" $ do
+    cabal "v2-sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/p/P.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/p/P.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/p/p.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/p/p.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..6a10e9f99853db42106ff5894a4d998dd0443acb
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/p/p.cabal
@@ -0,0 +1,8 @@
+name: p
+version: 0.1
+build-type: Simple
+cabal-version: >= 1.2
+
+library
+  exposed-modules: P
+  build-depends: base
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/q/Q.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/q/Q.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/q/q.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/q/q.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..3033151742599769187f458482a21f8a2c49e56c
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/q/q.cabal
@@ -0,0 +1,8 @@
+name: q
+version: 0.1
+build-type: Simple
+cabal-version: >= 1.2
+
+library
+  exposed-modules: Q
+  build-depends: base
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/r/R.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/r/R.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/r/r.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/r/r.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..8143b51865f6305b85ef0445d3c61ce390952536
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/r/r.cabal
@@ -0,0 +1,8 @@
+name: r
+version: 0.1
+build-type: Simple
+cabal-version: >= 1.2
+
+library
+  exposed-modules: R
+  build-depends: base
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/s/S.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/s/S.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/s/s.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/s/s.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..e30a1595f81ba7567a0dee65d9e1c6e35ca7cd9a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/s/s.cabal
@@ -0,0 +1,8 @@
+name: s
+version: 0.1
+build-type: Simple
+cabal-version: >= 1.2
+
+library
+  exposed-modules: S
+  build-depends: base
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/uv.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/uv.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..3205e54e0ba768b4885baaa98a49d149c1397941
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/uv.cabal
@@ -0,0 +1,14 @@
+cabal-version: 3.0
+name: uv
+version: 0.1
+build-type: Simple
+
+library U
+  visibility: public
+  exposed-modules: U
+  build-depends: base
+
+library V
+  visibility: public
+  exposed-modules: V
+  build-depends: base
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/U.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/U.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/V.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/V.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.out
new file mode 100644
index 0000000000000000000000000000000000000000..231e0d306b454e16b2ffd56a98dda1fa50f956f4
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.out
@@ -0,0 +1,3 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.dot-uv.dist/work/./dist/sdist/p-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/cabal.dot-uv.dist/work/./dist/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.patch b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.patch
new file mode 100644
index 0000000000000000000000000000000000000000..440c2fabf4cb741f43819f5724673541449b0c0f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.patch
@@ -0,0 +1,9 @@
+diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.out
+index 231e0d306..a7ffc109e 100644
+--- a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.out
++++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.out
+@@ -1,3 +1,2 @@
+ # cabal sdist
+-Wrote tarball sdist to <ROOT>/cabal.dot-uv.dist/work/./dist/sdist/p-0.1.tar.gz
+-Wrote tarball sdist to <ROOT>/cabal.dot-uv.dist/work/./dist/sdist/q-0.1.tar.gz
++Wrote tarball sdist to <ROOT>/cabal.dot-uv.dist/work/./dist/sdist/uv-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.project b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.project
new file mode 100644
index 0000000000000000000000000000000000000000..e6fdbadb4398bc0e333947b5fb8021778310d943
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.project
@@ -0,0 +1 @@
+packages: .
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..7ca9d1fa282b6939e0391a460cc4776e4a5983e7
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.test.hs
@@ -0,0 +1,12 @@
+import Test.Cabal.Prelude
+
+-- cabal.dot-uv.project has "packages: .". That package is uv.cabal but "cabal
+-- sdist" writes sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz instead of the
+-- expected sdist/uv-0.1.tar.gz.  That is wrong, "cabal sdist" should respect
+-- the "--project-file" option but instead picks up the default "cabal.project"
+-- that has "packages: p/ q/".
+--
+-- TODO: Fix this behaviour and apply the patch cabal.dot-uv.patch to update the
+-- expected output to what we'd expect if "cabal sdist" respected the project.
+main = cabalTest . withProjectFile "cabal.dot-uv.project" $ do
+    cabal "sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..67bd38241618e8fd9e101e4689927836ce735d6e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.v2.out
@@ -0,0 +1,2 @@
+# cabal v2-sdist
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/uv-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.v2.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..2df773c55104c4c36c288000f20851c84af76017
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.dot-uv.v2.test.hs
@@ -0,0 +1,6 @@
+import Test.Cabal.Prelude
+
+-- cabal.dot-uv.project has "packages: .". That package is uv.cabal and "cabal
+-- v2-sdist" writes sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz. That is correct.
+main = cabalTest . withProjectFile "cabal.dot-uv.project" $ do
+    cabal "v2-sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.out
new file mode 100644
index 0000000000000000000000000000000000000000..c4b60109a9899efc64e76c906b6fef04a1f54810
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.out
@@ -0,0 +1,2 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.ignore-project.dist/work/./dist/sdist/uv-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..6b77d12d2fe37103be408df7cbd0924066d29b8a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- This test correctly writes sdist/uv-0.1.tar.gz for the uv.cabal package.
+main = cabalTest $ do
+    cabal "sdist" ["all", "--ignore-project"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..f44e24e9567eb3ff2306ac17e7cf320ec3f16ff9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.v2.out
@@ -0,0 +1,3 @@
+# cabal v2-sdist
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/p-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.v2.patch b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.v2.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.v2.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..e98c7717e4d58f2b2b41f8fba369c3d86cb3bc78
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.ignore-project.v2.test.hs
@@ -0,0 +1,7 @@
+import Test.Cabal.Prelude
+
+-- This test doesn't ignore the project. It should have written
+-- sdist/uv-0.1.tar.gz for the uv.cabal package but instead it wrote
+-- sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz.
+main = cabalTest $ do
+    cabal "v2-sdist" ["all", "--ignore-project"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.out
new file mode 100644
index 0000000000000000000000000000000000000000..83f4cf0c16087c386e762ddb1fe63bac66d24e32
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.out
@@ -0,0 +1,3 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.no-project.dist/work/./dist/sdist/p-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/cabal.no-project.dist/work/./dist/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..1699b269a2cb181f4bdf78874c561671c1834542
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.test.hs
@@ -0,0 +1,10 @@
+import Test.Cabal.Prelude
+
+-- When no project is given, "cabal sdist" finds a default cabal.project that
+-- has "packages: p/ q/" and writes sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz.
+-- This is correct.
+--
+-- TODO: Check that the code is behaving the same as it would have if
+-- "--project-file=cabal.project" was given or if it is using project probing.
+main = cabalTest $ do
+    cabal "sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..f44e24e9567eb3ff2306ac17e7cf320ec3f16ff9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.v2.out
@@ -0,0 +1,3 @@
+# cabal v2-sdist
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/p-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.v2.patch b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.v2.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.v2.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..10ffa0c5a4d91635400648348a88e4d20b771b78
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.no-project.v2.test.hs
@@ -0,0 +1,7 @@
+import Test.Cabal.Prelude
+
+-- When no project is given, "cabal v2-sdist" finds a default cabal.project that
+-- has "packages: p/ q/" and writes sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz.
+-- This is correct.
+main = cabalTest $ do
+    cabal "v2-sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project
new file mode 100644
index 0000000000000000000000000000000000000000..36c6791d8c2fd574872159b3f0922c9504a30ce9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project
@@ -0,0 +1 @@
+packages: p/ q/
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.out
new file mode 100644
index 0000000000000000000000000000000000000000..b699a53c853d4b7a41d760e6bd2ea55c282aa94b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.out
@@ -0,0 +1,3 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.project.dist/work/./dist/sdist/p-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/cabal.project.dist/work/./dist/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..6be41cfc24fa822a0bc571b2074e7978a4cda4f4
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.test.hs
@@ -0,0 +1,7 @@
+import Test.Cabal.Prelude
+
+-- The given cabal.project has has "packages: p/ q/" and "cabal sdist" writes
+-- sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz.  This is correct but likely
+-- accidental as the default cabal.project has the same packages.
+main = cabalTest . withProjectFile "cabal.project" $ do
+    cabal "sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..f44e24e9567eb3ff2306ac17e7cf320ec3f16ff9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.v2.out
@@ -0,0 +1,3 @@
+# cabal v2-sdist
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/p-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.v2.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..f94f478f6aede5595c23c3659b660b982a3d202b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.project.v2.test.hs
@@ -0,0 +1,6 @@
+import Test.Cabal.Prelude
+
+-- The given cabal.project has has "packages: p/ q/" and "cabal v2-sdist" writes
+-- sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz.  This is correct.
+main = cabalTest . withProjectFile "cabal.project" $ do
+    cabal "v2-sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.out
new file mode 100644
index 0000000000000000000000000000000000000000..12dcc1217e09cda9021b532ef6815fe6557ce501
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.out
@@ -0,0 +1,3 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.sub-pq.dist/work/./dist/sdist/p-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/cabal.sub-pq.dist/work/./dist/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.project b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.project
new file mode 100644
index 0000000000000000000000000000000000000000..36c6791d8c2fd574872159b3f0922c9504a30ce9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.project
@@ -0,0 +1 @@
+packages: p/ q/
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..92995d4994b06696e9b9931c35e6370b41b2a64f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.test.hs
@@ -0,0 +1,6 @@
+import Test.Cabal.Prelude
+
+-- cabal.sub-pq.project has "packages: p/ q/" and "cabal sdist" writes
+-- sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz. This is correct.
+main = cabalTest . withProjectFile "cabal.sub-pq.project" $ do
+    cabal "sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..f44e24e9567eb3ff2306ac17e7cf320ec3f16ff9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.v2.out
@@ -0,0 +1,3 @@
+# cabal v2-sdist
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/p-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.v2.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..aec079838452bb35f42daf863db086632155ca5f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-pq.v2.test.hs
@@ -0,0 +1,6 @@
+import Test.Cabal.Prelude
+
+-- cabal.sub-pq.project has "packages: p/ q/" and "cabal v2-sdist" writes
+-- sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz. This is correct.
+main = cabalTest . withProjectFile "cabal.sub-pq.project" $ do
+    cabal "v2-sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.out
new file mode 100644
index 0000000000000000000000000000000000000000..264d9e001ee22ca9153f89300991e11c2914c2c2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.out
@@ -0,0 +1,3 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/p-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/q-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.patch b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.patch
new file mode 100644
index 0000000000000000000000000000000000000000..de09911d55aed47d168e4be62411895d4f195740
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.patch
@@ -0,0 +1,10 @@
+diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.out
+index 264d9e001..b4cced990 100644
+--- a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.out
++++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.out
+@@ -1,3 +1,3 @@
+ # cabal sdist
+-Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/p-0.1.tar.gz
+-Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/q-0.1.tar.gz
++Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/r-0.1.tar.gz
++Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/s-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.project b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.project
new file mode 100644
index 0000000000000000000000000000000000000000..6a0bc8f2249ec416201a41bb15916347f66d2614
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.project
@@ -0,0 +1 @@
+packages: r/ s/
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e20c7337d49ef97753d3663503b0a7dda6fe3737
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.test.hs
@@ -0,0 +1,12 @@
+import Test.Cabal.Prelude
+
+-- cabal.sub-rs.project has "packages: r/ s/" but "cabal sdist" writes
+-- sdist/p-0.1.tar.gz and sdist/q-0.1.tar.gz instead of the expected
+-- sdist/r-0.1.tar.gz and sdist/s-0.1.tar.gz. That is wrong, "cabal sdist"
+-- should respect the "--project-file" option but instead picks up the default
+-- "cabal.project" that has "packages: p/ q/".
+--
+-- TODO: Fix this behaviour and apply the patch cabal.sub-rs.patch to update the
+-- expected output to what we'd expect if "cabal sdist" respected the project.
+main = cabalTest . withProjectFile "cabal.sub-rs.project" $ do
+    cabal "sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..f6ee642cc692c4149e8ba5182c78657c62eb3804
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.v2.out
@@ -0,0 +1,3 @@
+# cabal v2-sdist
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/r-0.1.tar.gz
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/s-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.v2.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..239f91b1e28e40800ff508a7a3e80fbda9f7f817
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/cabal.sub-rs.v2.test.hs
@@ -0,0 +1,6 @@
+import Test.Cabal.Prelude
+
+-- cabal.sub-rs.project has "packages: r/ s/" and "cabal v2-sdist" writes
+-- sdist/r-0.1.tar.gz and sdist/s-0.1.tar.gz. That is correct.
+main = cabalTest . withProjectFile "cabal.sub-rs.project" $ do
+    cabal "v2-sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/p/P.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/p/P.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/p/p.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/p/p.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..6a10e9f99853db42106ff5894a4d998dd0443acb
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/p/p.cabal
@@ -0,0 +1,8 @@
+name: p
+version: 0.1
+build-type: Simple
+cabal-version: >= 1.2
+
+library
+  exposed-modules: P
+  build-depends: base
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/q/Q.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/q/Q.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/q/q.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/q/q.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..3033151742599769187f458482a21f8a2c49e56c
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/q/q.cabal
@@ -0,0 +1,8 @@
+name: q
+version: 0.1
+build-type: Simple
+cabal-version: >= 1.2
+
+library
+  exposed-modules: Q
+  build-depends: base
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/r/R.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/r/R.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/r/r.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/r/r.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..8143b51865f6305b85ef0445d3c61ce390952536
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/r/r.cabal
@@ -0,0 +1,8 @@
+name: r
+version: 0.1
+build-type: Simple
+cabal-version: >= 1.2
+
+library
+  exposed-modules: R
+  build-depends: base
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/s/S.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/s/S.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/s/s.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/s/s.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..e30a1595f81ba7567a0dee65d9e1c6e35ca7cd9a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/s/s.cabal
@@ -0,0 +1,8 @@
+name: s
+version: 0.1
+build-type: Simple
+cabal-version: >= 1.2
+
+library
+  exposed-modules: S
+  build-depends: base
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/uv.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/uv.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..3205e54e0ba768b4885baaa98a49d149c1397941
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-Yes/uv.cabal
@@ -0,0 +1,14 @@
+cabal-version: 3.0
+name: uv
+version: 0.1
+build-type: Simple
+
+library U
+  visibility: public
+  exposed-modules: U
+  build-depends: base
+
+library V
+  visibility: public
+  exposed-modules: V
+  build-depends: base
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/README.md b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..0b3da4f90900fc36dc93e63d10604b1b04727706
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/README.md
@@ -0,0 +1,85 @@
+# Tests of sdist with `--project-file`
+
+```
+$ tree -P '*.project|*.test.hs' --prune
+.
+├── cabal.ignore-project.test.hs
+├── cabal.ignore-project.v2.test.hs
+├── cabal.no-project.test.hs
+├── cabal.no-project.v2.test.hs
+├── cabal.project
+├── Projects-Default-No
+│   ├── cabal.dot-uv.project
+│   ├── cabal.dot-uv.test.hs
+│   ├── cabal.dot-uv.v2.test.hs
+│   ├── cabal.ignore-project.test.hs
+│   ├── cabal.ignore-project.v2.test.hs
+│   ├── cabal.no-project.test.hs
+│   ├── cabal.no-project.v2.test.hs
+│   ├── cabal.sub-pq.project
+│   ├── cabal.sub-pq.test.hs
+│   ├── cabal.sub-pq.v2.test.hs
+│   ├── cabal.sub-rs.project
+│   ├── cabal.sub-rs.test.hs
+│   └── cabal.sub-rs.v2.test.hs
+└── Projects-Default-Yes
+    ├── cabal.dot-uv.project
+    ├── cabal.dot-uv.test.hs
+    ├── cabal.dot-uv.v2.test.hs
+    ├── cabal.ignore-project.test.hs
+    ├── cabal.ignore-project.v2.test.hs
+    ├── cabal.no-project.test.hs
+    ├── cabal.no-project.v2.test.hs
+    ├── cabal.project
+    ├── cabal.project.test.hs
+    ├── cabal.project.v2.test.hs
+    ├── cabal.sub-pq.project
+    ├── cabal.sub-pq.test.hs
+    ├── cabal.sub-pq.v2.test.hs
+    ├── cabal.sub-rs.project
+    ├── cabal.sub-rs.test.hs
+    └── cabal.sub-rs.v2.test.hs
+
+3 directories, 34 files
+```
+
+There are of the two subdirectories, one has a `cabal.project` and the other
+doesn't. This is the default project. There are three important things to notice
+with these tests.
+
+1. All the tests with a supplied `--project-file` option pick up a default
+   `cabal.project` instead; either the one one in the current directory or the
+   one from the parent directory, one level up. I think this behaviour is wrong
+   and the supplied `--project-file` option should be respected.
+   
+   Before I'd put a project there, one level up, the project probing had gone
+   all the way up to Cabal's own `cabal.project` as can be seen by this diff
+   after that change:
+
+    ```diff
+    $ git diff
+    ...
+    --- a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.out
+    +++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Projects-Default-No/cabal.sub-rs.out
+    @@ -1,12 +1,2 @@
+    # cabal sdist
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/Cabal-3.11.0.0.tar.gz
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/cabal-testsuite-3.tar.gz
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/Cabal-syntax-3.11.0.0.tar.gz
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/cabal-install-3.11.0.0.tar.gz
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/cabal-install-solver-3.11.0.0.tar.gz
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/solver-benchmarks-3.tar.gz
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/Cabal-QuickCheck-3.11.0.0.tar.gz
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/Cabal-tree-diff-3.11.0.0.tar.gz
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/Cabal-described-3.11.0.0.tar.gz
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/Cabal-tests-3.tar.gz
+    -Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/cabal-benchmarks-3.tar.gz
+    +Wrote tarball sdist to <ROOT>/cabal.sub-rs.dist/work/./dist/sdist/p-0.1.tar.gz
+    ```
+
+2. The `--ignore-project` option works, as witnessed by each
+   `cabal.ignore-project.test.hs` when the package in the same directory as the
+   test is used.
+
+3. The `*.v2.test.hs` are the same as their `*.test.hs` sibling tests but they
+   exercise the `v2-sdist` command instead of the `sdist` command.
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Z.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/Z.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.out
new file mode 100644
index 0000000000000000000000000000000000000000..bba241f8f36761bb5aec750d78eac0dcab83e13f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.out
@@ -0,0 +1,2 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.ignore-project.dist/work/./dist/sdist/z-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..7d3628c2b43b1bc19b27a55b72f29cd462d149d4
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- This test correctly writes sdist/z-0.1.tar.gz for the z.cabal package.
+main = cabalTest $ do
+    cabal "sdist" ["all", "--ignore-project"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..dc7f939f86b3faa2f51481862a2c3074bdf71638
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.v2.out
@@ -0,0 +1,2 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.ignore-project.v2.dist/work/./dist/sdist/z-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.v2.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..7d3628c2b43b1bc19b27a55b72f29cd462d149d4
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.ignore-project.v2.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- This test correctly writes sdist/z-0.1.tar.gz for the z.cabal package.
+main = cabalTest $ do
+    cabal "sdist" ["all", "--ignore-project"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.out
new file mode 100644
index 0000000000000000000000000000000000000000..da8d99d249f682dc7dd505b3e69b293bacf4890f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.out
@@ -0,0 +1,2 @@
+# cabal sdist
+Wrote tarball sdist to <ROOT>/cabal.no-project.dist/work/./dist/sdist/p-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..defb9406c3c75b9feed97274e363e6a517d02d61
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.test.hs
@@ -0,0 +1,7 @@
+import Test.Cabal.Prelude
+
+-- When no project is given, "cabal sdist" finds a default cabal.project that
+-- has "packages: Projects-Default-No/p" and writes sdist/p-0.1.tar.gz.  This is
+-- correct.
+main = cabalTest $ do
+    cabal "sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.v2.out b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..63c0f0c36f1740d58f02782c9fd706cb0a2ba1f2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.v2.out
@@ -0,0 +1,2 @@
+# cabal v2-sdist
+Wrote tarball sdist to <ROOT>/dist-newstyle/sdist/p-0.1.tar.gz
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.v2.test.hs b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.v2.test.hs
new file mode 100755
index 0000000000000000000000000000000000000000..d86a679245805060ac820e2edeacc4c3b9d92a45
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.no-project.v2.test.hs
@@ -0,0 +1,7 @@
+import Test.Cabal.Prelude
+
+-- When no project is given, "cabal v2-sdist" finds a default cabal.project that
+-- has "packages: Projects-Default-No/p" and writes sdist/p-0.1.tar.gz.  This is
+-- correct.
+main = cabalTest $ do
+    cabal "v2-sdist" ["all"]
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.project b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.project
new file mode 100644
index 0000000000000000000000000000000000000000..c46fad9d90b31198210c5a927fa9c55c25deb996
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/cabal.project
@@ -0,0 +1 @@
+packages: Projects-Default-No/p
\ No newline at end of file
diff --git a/cabal-testsuite/PackageTests/SDist/Respect-Project-File/z.cabal b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/z.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..9a0cada3b71ececefed386ad64e421a1076e6caa
--- /dev/null
+++ b/cabal-testsuite/PackageTests/SDist/Respect-Project-File/z.cabal
@@ -0,0 +1,8 @@
+name: z
+version: 0.1
+build-type: Simple
+cabal-version: >= 1.2
+
+library
+  exposed-modules: Z
+  build-depends: base