From 3ad0e47d736b0a28632c7d78b50ef2527e15af3b Mon Sep 17 00:00:00 2001
From: Oleg Grenrus <oleg.grenrus@iki.fi>
Date: Thu, 28 Nov 2019 04:36:23 +0200
Subject: [PATCH] fetchRepoTarball output is non-deterministic

This could solve some non-determinism in output of cabal-testsuite
which we experienced on appveyor, i.e.
https://github.com/haskell/cabal/issues/6271
---
 cabal-install/Distribution/Client/FetchUtils.hs            | 7 ++++---
 .../PackageTests/Backpack/Includes2/cabal-external.test.hs | 1 -
 .../PackageTests/Backpack/Includes2/cabal-internal.test.hs | 1 -
 .../PackageTests/Backpack/Includes3/cabal-external.test.hs | 1 -
 .../PackageTests/Backpack/Includes3/cabal-internal.test.hs | 1 -
 .../PackageTests/Backpack/bkpcabal01/cabal.test.hs         | 1 -
 .../PackageTests/Regression/T5309/cabal.test.hs            | 1 -
 .../PackageTests/Regression/T5677/cabal.test.hs            | 1 -
 8 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/cabal-install/Distribution/Client/FetchUtils.hs b/cabal-install/Distribution/Client/FetchUtils.hs
index ae2e271796..1099c91d72 100644
--- a/cabal-install/Distribution/Client/FetchUtils.hs
+++ b/cabal-install/Distribution/Client/FetchUtils.hs
@@ -162,7 +162,7 @@ fetchPackage verbosity repoCtxt loc = case loc of
 -- | Fetch a repo package if we don't have it already.
 --
 fetchRepoTarball :: Verbosity -> RepoContext -> Repo -> PackageId -> IO FilePath
-fetchRepoTarball verbosity repoCtxt repo pkgid = do
+fetchRepoTarball verbosity' repoCtxt repo pkgid = do
   fetched <- doesFileExist (packageFile repo pkgid)
   if fetched
     then do info verbosity $ display pkgid ++ " has already been downloaded."
@@ -171,9 +171,10 @@ fetchRepoTarball verbosity repoCtxt repo pkgid = do
             res <- downloadRepoPackage
             progressMessage verbosity ProgressDownloaded (display pkgid)
             return res
-
-
   where
+    -- whether we download or not is non-deterministic
+    verbosity' = verboseUnmarkOutput verbosity'
+
     downloadRepoPackage = case repo of
       RepoLocal{..} -> return (packageFile repo pkgid)
 
diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external.test.hs b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external.test.hs
index d07a96756a..3e9936d856 100644
--- a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external.test.hs
+++ b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external.test.hs
@@ -2,7 +2,6 @@ import Test.Cabal.Prelude
 
 main = cabalTest $ do
     skipUnless =<< ghcVersionIs (>= mkVersion [8,1])
-    skipIf =<< isWindows -- TODO: https://github.com/haskell/cabal/issues/6271
     withProjectFile "cabal.external.project" $ do
         cabal "v2-build" ["exe"]
         withPlan $ do
diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal.test.hs b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal.test.hs
index 8aa865addb..ed5c0978c7 100644
--- a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal.test.hs
+++ b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal.test.hs
@@ -2,7 +2,6 @@ import Test.Cabal.Prelude
 
 main = cabalTest $ do
     skipUnless =<< ghcVersionIs (>= mkVersion [8,1])
-    skipIf =<< isWindows -- TODO: https://github.com/haskell/cabal/issues/6271
     withProjectFile "cabal.internal.project" $ do
         cabal "v2-build" ["exe"]
         withPlan $ do
diff --git a/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-external.test.hs b/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-external.test.hs
index 1e247c8ce6..2940109161 100644
--- a/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-external.test.hs
+++ b/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-external.test.hs
@@ -2,7 +2,6 @@ import Test.Cabal.Prelude
 
 main = cabalTest $ do
     skipUnless =<< ghcVersionIs (>= mkVersion [8,1])
-    skipIf =<< isWindows -- TODO: https://github.com/haskell/cabal/issues/6271
     withProjectFile "cabal.external.project" $ do
         cabal "v2-build" ["exe"]
         withPlan $ do
diff --git a/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-internal.test.hs b/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-internal.test.hs
index ebf0589111..56c49c6e97 100644
--- a/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-internal.test.hs
+++ b/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-internal.test.hs
@@ -2,7 +2,6 @@ import Test.Cabal.Prelude
 
 main = cabalTest $ do
     skipUnless =<< ghcVersionIs (>= mkVersion [8,1])
-    skipIf =<< isWindows -- TODO: https://github.com/haskell/cabal/issues/6271
     withProjectFile "cabal.internal.project" $ do
         cabal "v2-build" ["exe"]
         withPlan $ do
diff --git a/cabal-testsuite/PackageTests/Backpack/bkpcabal01/cabal.test.hs b/cabal-testsuite/PackageTests/Backpack/bkpcabal01/cabal.test.hs
index ae7e000f4c..08cbbd3c80 100644
--- a/cabal-testsuite/PackageTests/Backpack/bkpcabal01/cabal.test.hs
+++ b/cabal-testsuite/PackageTests/Backpack/bkpcabal01/cabal.test.hs
@@ -2,5 +2,4 @@ import Test.Cabal.Prelude
 main = cabalTest $ do
     -- GHC 8.2.2 had a regression ("unknown package: hole"), see also #4908
     skipUnless =<< ghcVersionIs (\v -> v >= mkVersion [8,2] && v /= mkVersion [8,2,2])
-    skipIf =<< isWindows -- TODO: https://github.com/haskell/cabal/issues/6271
     cabal "v2-build" ["all"]
diff --git a/cabal-testsuite/PackageTests/Regression/T5309/cabal.test.hs b/cabal-testsuite/PackageTests/Regression/T5309/cabal.test.hs
index 71f5f7a9b3..c7d8b1760d 100644
--- a/cabal-testsuite/PackageTests/Regression/T5309/cabal.test.hs
+++ b/cabal-testsuite/PackageTests/Regression/T5309/cabal.test.hs
@@ -1,6 +1,5 @@
 import Test.Cabal.Prelude
 main = cabalTest $ do
-  skipIf =<< isWindows -- TODO: https://github.com/haskell/cabal/issues/6271
   cabal "v2-build" ["all"]
   cabal "v2-test"  ["all"]
   cabal "v2-bench" ["all"]
diff --git a/cabal-testsuite/PackageTests/Regression/T5677/cabal.test.hs b/cabal-testsuite/PackageTests/Regression/T5677/cabal.test.hs
index 133f492145..cf2a0b01cd 100644
--- a/cabal-testsuite/PackageTests/Regression/T5677/cabal.test.hs
+++ b/cabal-testsuite/PackageTests/Regression/T5677/cabal.test.hs
@@ -2,5 +2,4 @@ import Test.Cabal.Prelude
 main = cabalTest $ do
   -- -Wmissing-export-lists is new in 8.4.
   skipUnless =<< ghcVersionIs (>= mkVersion [8,3])
-  skipIf =<< isWindows -- TODO: https://github.com/haskell/cabal/issues/6271
   cabal "v2-build" ["all"]
-- 
GitLab