From c1caede32392fd3fc846e58bb68e4dae949bcfd5 Mon Sep 17 00:00:00 2001
From: "Edward Z. Yang" <ezyang@cs.stanford.edu>
Date: Fri, 25 Nov 2016 22:36:06 -0500
Subject: [PATCH] Port custom-setup/new_build_requires_Cabal_1_20 to new test
 suite.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
---
 .../custom-setup/new_build_requires_Cabal_1_20.sh      |  9 ---------
 .../PackageTests/Regression/T3932}/Setup.hs            |  0
 .../PackageTests/Regression/T3932/cabal.project        |  1 +
 .../PackageTests/Regression/T3932/cabal.test.hs        | 10 ++++++++++
 .../Regression/T3932}/custom-setup-old-cabal.cabal     |  0
 .../Regression/T3932/repo/Cabal-1.18.0.0/Cabal.cabal   |  6 ++++++
 cabal-testsuite/Test/Cabal/Prelude.hs                  |  4 ++++
 7 files changed, 21 insertions(+), 9 deletions(-)
 delete mode 100644 cabal-install/tests/IntegrationTests/custom-setup/new_build_requires_Cabal_1_20.sh
 rename {cabal-install/tests/IntegrationTests/custom-setup/custom-setup-old-cabal => cabal-testsuite/PackageTests/Regression/T3932}/Setup.hs (100%)
 create mode 100644 cabal-testsuite/PackageTests/Regression/T3932/cabal.project
 create mode 100644 cabal-testsuite/PackageTests/Regression/T3932/cabal.test.hs
 rename {cabal-install/tests/IntegrationTests/custom-setup/custom-setup-old-cabal => cabal-testsuite/PackageTests/Regression/T3932}/custom-setup-old-cabal.cabal (100%)
 create mode 100644 cabal-testsuite/PackageTests/Regression/T3932/repo/Cabal-1.18.0.0/Cabal.cabal

diff --git a/cabal-install/tests/IntegrationTests/custom-setup/new_build_requires_Cabal_1_20.sh b/cabal-install/tests/IntegrationTests/custom-setup/new_build_requires_Cabal_1_20.sh
deleted file mode 100644
index bf1275acb2..0000000000
--- a/cabal-install/tests/IntegrationTests/custom-setup/new_build_requires_Cabal_1_20.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-# Regression test for issue #3932
-
-. ./common.sh
-
-cd custom-setup-old-cabal
-! cabal new-build > output 2>&1
-
-cat output
-grep -q "(issue #3932) requires >=1.20" output || die "Expect constraint failure"
diff --git a/cabal-install/tests/IntegrationTests/custom-setup/custom-setup-old-cabal/Setup.hs b/cabal-testsuite/PackageTests/Regression/T3932/Setup.hs
similarity index 100%
rename from cabal-install/tests/IntegrationTests/custom-setup/custom-setup-old-cabal/Setup.hs
rename to cabal-testsuite/PackageTests/Regression/T3932/Setup.hs
diff --git a/cabal-testsuite/PackageTests/Regression/T3932/cabal.project b/cabal-testsuite/PackageTests/Regression/T3932/cabal.project
new file mode 100644
index 0000000000..e6fdbadb43
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T3932/cabal.project
@@ -0,0 +1 @@
+packages: .
diff --git a/cabal-testsuite/PackageTests/Regression/T3932/cabal.test.hs b/cabal-testsuite/PackageTests/Regression/T3932/cabal.test.hs
new file mode 100644
index 0000000000..867cd707d2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T3932/cabal.test.hs
@@ -0,0 +1,10 @@
+import Test.Cabal.Prelude
+main = cabalTest $
+    -- This repository contains a Cabal-1.18.0.0 option, which would
+    -- normally would satisfy the repository, except for new-build's
+    -- extra constraint that setup Cabal must be 1.20.  If we don't
+    -- have a choice like this available, the unsatisfied constraint
+    -- won't be reported.
+    withRepo "repo" $ do
+        fails (cabal' "new-build" []) >>=
+            assertOutputContains "(issue #3932) requires >=1.20"
diff --git a/cabal-install/tests/IntegrationTests/custom-setup/custom-setup-old-cabal/custom-setup-old-cabal.cabal b/cabal-testsuite/PackageTests/Regression/T3932/custom-setup-old-cabal.cabal
similarity index 100%
rename from cabal-install/tests/IntegrationTests/custom-setup/custom-setup-old-cabal/custom-setup-old-cabal.cabal
rename to cabal-testsuite/PackageTests/Regression/T3932/custom-setup-old-cabal.cabal
diff --git a/cabal-testsuite/PackageTests/Regression/T3932/repo/Cabal-1.18.0.0/Cabal.cabal b/cabal-testsuite/PackageTests/Regression/T3932/repo/Cabal-1.18.0.0/Cabal.cabal
new file mode 100644
index 0000000000..363db88cf3
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T3932/repo/Cabal-1.18.0.0/Cabal.cabal
@@ -0,0 +1,6 @@
+name: Cabal
+version: 1.18.0.0
+build-type: Simple
+cabal-version: >= 1.10
+
+library
diff --git a/cabal-testsuite/Test/Cabal/Prelude.hs b/cabal-testsuite/Test/Cabal/Prelude.hs
index 5099098c6f..dc0889ae41 100644
--- a/cabal-testsuite/Test/Cabal/Prelude.hs
+++ b/cabal-testsuite/Test/Cabal/Prelude.hs
@@ -96,6 +96,10 @@ withDirectory f = withReaderT
 withEnv :: [(String, Maybe String)] -> TestM a -> TestM a
 withEnv e = withReaderT (\env -> env { testEnvironment = testEnvironment env ++ e })
 
+-- HACK please don't use me
+withEnvFilter :: (String -> Bool) -> TestM a -> TestM a
+withEnvFilter p = withReaderT (\env -> env { testEnvironment = filter (p . fst) (testEnvironment env) })
+
 ------------------------------------------------------------------------
 -- * Running Setup
 
-- 
GitLab