packages feed

cabal-install 2.0.0.0 → 2.0.0.1

raw patch · 23 files changed

+719/−74 lines, 23 filesdep ~Cabaldep ~tastydep ~tasty-hunit

Dependency ranges changed: Cabal, tasty, tasty-hunit

Files

Distribution/Client/Config.hs view
@@ -228,7 +228,8 @@         globalIgnoreSandbox     = combine globalIgnoreSandbox,         globalIgnoreExpiry      = combine globalIgnoreExpiry,         globalHttpTransport     = combine globalHttpTransport,-        globalNix               = combine globalNix+        globalNix               = combine globalNix,+        globalStoreDir          = combine globalStoreDir         }         where           combine        = combine'        savedGlobalFlags
Distribution/Client/Configure.hs view
@@ -141,7 +141,7 @@       warn verbosity $            "solver failed to find a solution:\n"         ++ message-        ++ "Trying configure anyway."+        ++ "\nTrying configure anyway."       setupWrapper verbosity (setupScriptOptions installedPkgIndex Nothing)         Nothing configureCommand (const configFlags) extraArgs 
Distribution/Client/DistDirLayout.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE RecordWildCards #-} --- | +-- | -- -- The layout of the .\/dist\/ directory where cabal keeps all of it's state -- and build artifacts.@@ -18,7 +18,8 @@      -- * 'CabalDirLayout'     CabalDirLayout(..),-    defaultCabalDirLayout,+    mkCabalDirLayout,+    defaultCabalDirLayout ) where  import Data.Maybe (fromMaybe)@@ -243,12 +244,16 @@  defaultCabalDirLayout :: FilePath -> CabalDirLayout defaultCabalDirLayout cabalDir =+    mkCabalDirLayout cabalDir Nothing Nothing++mkCabalDirLayout :: FilePath -- ^ Cabal directory+                 -> Maybe FilePath -- ^ Store directory+                 -> Maybe FilePath -- ^ Log directory+                 -> CabalDirLayout+mkCabalDirLayout cabalDir mstoreDir mlogDir =     CabalDirLayout {..}   where--    cabalStoreDirLayout = defaultStoreDirLayout (cabalDir </> "store")--    cabalLogsDirectory = cabalDir </> "logs"-+    cabalStoreDirLayout =+        defaultStoreDirLayout (fromMaybe (cabalDir </> "store") mstoreDir)+    cabalLogsDirectory = fromMaybe (cabalDir </> "logs") mlogDir     cabalWorldFile = cabalDir </> "world"-
Distribution/Client/GlobalFlags.hs view
@@ -68,7 +68,8 @@     globalIgnoreSandbox     :: Flag Bool,     globalIgnoreExpiry      :: Flag Bool,    -- ^ Ignore security expiry dates     globalHttpTransport     :: Flag String,-    globalNix               :: Flag Bool  -- ^ Integrate with Nix+    globalNix               :: Flag Bool,  -- ^ Integrate with Nix+    globalStoreDir          :: Flag FilePath   } deriving Generic  defaultGlobalFlags :: GlobalFlags@@ -87,7 +88,8 @@     globalIgnoreSandbox     = Flag False,     globalIgnoreExpiry      = Flag False,     globalHttpTransport     = mempty,-    globalNix               = Flag False+    globalNix               = Flag False,+    globalStoreDir          = mempty   }  instance Monoid GlobalFlags where
Distribution/Client/IndexUtils.hs view
@@ -2,6 +2,7 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE BangPatterns #-}+{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE GADTs #-}  -----------------------------------------------------------------------------@@ -53,7 +54,8 @@ import Distribution.Types.Dependency import Distribution.Simple.PackageIndex (InstalledPackageIndex) import Distribution.PackageDescription-         ( GenericPackageDescription )+         ( GenericPackageDescription(..)+         , PackageDescription(..), emptyPackageDescription ) import Distribution.Simple.Compiler          ( Compiler, PackageDBStack ) import Distribution.Simple.Program@@ -61,7 +63,7 @@ import qualified Distribution.Simple.Configure as Configure          ( getInstalledPackages, getInstalledPackagesMonitorFiles ) import Distribution.Version-         ( mkVersion, intersectVersionRanges )+         ( Version, mkVersion, intersectVersionRanges, versionNumbers ) import Distribution.Text          ( display, simpleParse ) import Distribution.Simple.Utils@@ -94,6 +96,7 @@ import qualified Data.ByteString.Lazy as BS import qualified Data.ByteString.Lazy.Char8 as BS.Char8 import qualified Data.ByteString.Char8 as BSS+import qualified Data.ByteString as BSW8 import Data.ByteString.Lazy (ByteString) import Distribution.Client.GZipUtils (maybeDecompress) import Distribution.Client.Utils ( byteStringToFilePath@@ -678,7 +681,7 @@       -- Most of the time we only need the package id.       ~(pkg, pkgtxt) <- unsafeInterleaveIO $ do         pkgtxt <- getEntryContent blockno-        pkg    <- readPackageDescription pkgtxt+        pkg    <- readPackageDescription pkgid pkgtxt         return (pkg, pkgtxt)       case mode of         ReadPackageIndexLazyIO -> pure ()@@ -710,22 +713,102 @@           -> return content         _ -> interror "unexpected tar entry type" -    readPackageDescription :: ByteString -> IO GenericPackageDescription-    readPackageDescription content =+    interror :: String -> IO a+    interror msg = die' verbosity $ "internal error when reading package index: " ++ msg+                      ++ "The package index or index cache is probably "+                      ++ "corrupt. Running cabal update might fix it."++    readPackageDescription pkgid content = do+        case parseGenericPackageDescription' content of+            ParseGPDOk gpd     -> return gpd+            ParseError (Just specVer) | specVer >= mkVersion [2,0]+                               -> return (dummyPackageDescription specVer)+            ParseError _       -> interror "failed to parse .cabal file"+      where+        dummyPackageDescription :: Version -> GenericPackageDescription+        dummyPackageDescription specVer = GenericPackageDescription+            { packageDescription = emptyPackageDescription+                                   { specVersionRaw = Left specVer+                                   , package        = pkgid+                                   , synopsis       = dummySynopsis+                                   }+            , genPackageFlags  = []+            , condLibrary      = Nothing+            , condSubLibraries = []+            , condForeignLibs  = []+            , condExecutables  = []+            , condTestSuites   = []+            , condBenchmarks   = []+            }++        dummySynopsis = "<could not be parsed due to unsupported CABAL spec-version>"++-- | Result of 'parseGenericPackageDescription''+data ParseGPDResult = ParseGPDOk GenericPackageDescription+                      -- ^ parsing succeeded (may still have unsupported spec-version)+                    | ParseError !(Maybe Version)+                      -- ^ parsing failed, but we were able to recover+                      --   a new-style spec-version declaration++-- | Variant of 'parseGenericPackageDescription' which is able to+-- extract new-style spec-version in case of parser errors+parseGenericPackageDescription' :: ByteString -> ParseGPDResult+parseGenericPackageDescription' content =+    case parseGPDMaybe of+      Just gpd -> ParseGPDOk gpd+      Nothing  -> ParseError (scanSpecVersion content)+  where+    parseGPDMaybe = #ifdef CABAL_PARSEC-      case parseGenericPackageDescriptionMaybe (BS.toStrict content) of-        Just gpd -> return gpd-        Nothing  -> interror "failed to parse .cabal file"+      parseGenericPackageDescriptionMaybe (BS.toStrict content) #else       case parseGenericPackageDescription . ignoreBOM . fromUTF8 . BS.Char8.unpack $ content of-        ParseOk _ d -> return d-        _           -> interror "failed to parse .cabal file"+        ParseOk _ d -> Just d+        _           -> Nothing #endif -    interror :: String -> IO a-    interror msg = die' verbosity $ "internal error when reading package index: " ++ msg-                      ++ "The package index or index cache is probably "-                      ++ "corrupt. Running cabal update might fix it."+-- | Quickly scan new-style spec-version+--+-- A new-style spec-version declaration begins the .cabal file and+-- follow the following case-insensitive grammar (expressed in+-- RFC5234 ABNF):+--+-- newstyle-spec-version-decl = "cabal-version" *WS ":" *WS newstyle-pec-version *WS+--+-- spec-version               = NUM "." NUM [ "." NUM ]+--+-- NUM    = DIGIT0 / DIGITP 1*DIGIT0+-- DIGIT0 = %x30-39+-- DIGITP = %x31-39+-- WS = %20+--+-- TODO: move into lib:Cabal+scanSpecVersion :: ByteString -> Maybe Version+scanSpecVersion bs = do+    fstline':_ <- pure (BS.Char8.lines bs)++    -- parse <newstyle-spec-version-decl>+    -- normalise: remove all whitespace, convert to lower-case+    let fstline = BSW8.map toLowerW8 $ BSW8.filter (/= 0x20) $ BS.toStrict fstline'+    ["cabal-version",vers] <- pure (BSS.split ':' fstline)++    -- parse <spec-version>+    --+    -- This is currently more tolerant regarding leading 0 digits.+    --+    ver <- simpleParse (BSS.unpack vers)+    guard $ case versionNumbers ver of+              [_,_]   -> True+              [_,_,_] -> True+              _       -> False++    pure ver+  where+    -- | Translate ['A'..'Z'] to ['a'..'z']+    toLowerW8 :: Word8 -> Word8+    toLowerW8 w | 0x40 < w && w < 0x5b = w+0x20+                | otherwise            = w+  ------------------------------------------------------------------------ -- Index cache data structure
Distribution/Client/Install.hs view
@@ -168,7 +168,7 @@ import Distribution.Text          ( display ) import Distribution.Verbosity as Verbosity-         ( Verbosity, normal, verbose )+         ( Verbosity, modifyVerbosity, normal, verbose ) import Distribution.Simple.BuildPaths ( exeExtension )  --TODO:@@ -550,8 +550,9 @@   let breaksPkgs         = not (null newBrokenPkgs)    let adaptedVerbosity-        | containsReinstalls && not overrideReinstall = verbosity `max` verbose-        | otherwise                                   = verbosity+        | containsReinstalls+        , not overrideReinstall  = modifyVerbosity (max verbose) verbosity+        | otherwise              = verbosity    -- We print the install plan if we are in a dry-run or if we are confronted   -- with a dangerous install plan.@@ -1149,7 +1150,7 @@         -- If the user has specified --remote-build-reporting=detailed or         -- --build-log, use more verbose logging.         loggingVerbosity :: Verbosity-        loggingVerbosity | overrideVerbosity = max Verbosity.verbose verbosity+        loggingVerbosity | overrideVerbosity = modifyVerbosity (max verbose) verbosity                          | otherwise         = verbosity          useDefaultTemplate :: Bool
Distribution/Client/ProjectConfig.hs view
@@ -105,7 +105,7 @@ import Distribution.Utils.NubList          ( fromNubList ) import Distribution.Verbosity-         ( Verbosity, verbose )+         ( Verbosity, modifyVerbosity, verbose ) import Distribution.Text import Distribution.ParseUtils          ( ParseResult(..), locatedErrorMsg, showPWarning )@@ -334,7 +334,7 @@     -- --build-log, use more verbose logging.     --     buildSettingLogVerbosity-      | overrideVerbosity = max verbose verbosity+      | overrideVerbosity = modifyVerbosity (max verbose) verbosity       | otherwise         = verbosity      overrideVerbosity
Distribution/Client/ProjectConfig/Legacy.hs view
@@ -395,7 +395,8 @@       globalLogsDir           = projectConfigLogsDir,       globalWorldFile         = _,       globalHttpTransport     = projectConfigHttpTransport,-      globalIgnoreExpiry      = projectConfigIgnoreExpiry+      globalIgnoreExpiry      = projectConfigIgnoreExpiry,+      globalStoreDir          = projectConfigStoreDir     } = globalFlags      ConfigFlags {@@ -475,7 +476,8 @@       globalIgnoreSandbox     = mempty,       globalIgnoreExpiry      = projectConfigIgnoreExpiry,       globalHttpTransport     = projectConfigHttpTransport,-      globalNix               = mempty+      globalNix               = mempty,+      globalStoreDir          = projectConfigStoreDir     }      configFlags = mempty {@@ -800,7 +802,7 @@       ]   . filterFields       [ "remote-repo-cache"-      , "logs-dir", "ignore-expiry", "http-transport"+      , "logs-dir", "store-dir", "ignore-expiry", "http-transport"       ]   . commandOptionsToFields   ) (commandOptions (globalCommand []) ParseArgs)@@ -809,13 +811,13 @@       legacyConfigureShFlags       (\flags conf -> conf { legacyConfigureShFlags = flags })   . addFields-      [ simpleField "allow-older"+      [ monoidField "allow-older"         (maybe mempty dispRelaxDeps) (fmap Just parseRelaxDeps)         (fmap unAllowOlder . configAllowOlder)         (\v conf -> conf { configAllowOlder = fmap AllowOlder v })       ]   . addFields-      [ simpleField "allow-newer"+      [ monoidField "allow-newer"         (maybe mempty dispRelaxDeps) (fmap Just parseRelaxDeps)         (fmap unAllowNewer . configAllowNewer)         (\v conf -> conf { configAllowNewer = fmap AllowNewer v })@@ -1255,6 +1257,15 @@   where     set' xs b = set (get' b ++ xs) b     showF'    = separator . map showF++-- | Parser combinator for simple fields which uses the field type's+-- 'Monoid' instance for combining multiple occurences of the field.+monoidField :: Monoid a => String -> (a -> Doc) -> ReadP a a+            -> (b -> a) -> (a -> b -> b) -> FieldDescr b+monoidField name showF readF get' set =+  liftField get' set' $ ParseUtils.field name showF readF+  where+    set' xs b = set (get' b `mappend` xs) b  --TODO: [code cleanup] local redefinition that should replace the version in -- D.ParseUtils. This version avoid parse ambiguity for list element parsers
Distribution/Client/ProjectConfig/Types.hs view
@@ -143,7 +143,8 @@        projectConfigHttpTransport         :: Flag String,        projectConfigIgnoreExpiry          :: Flag Bool,        projectConfigCacheDir              :: Flag FilePath,-       projectConfigLogsDir               :: Flag FilePath+       projectConfigLogsDir               :: Flag FilePath,+       projectConfigStoreDir              :: Flag FilePath      }   deriving (Eq, Show, Generic) 
Distribution/Client/ProjectOrchestration.hs view
@@ -164,8 +164,7 @@     projectRoot <- either throwIO return =<<                    findProjectRoot Nothing mprojectFile -    let cabalDirLayout = defaultCabalDirLayout cabalDir-        distDirLayout  = defaultDistDirLayout projectRoot+    let distDirLayout  = defaultDistDirLayout projectRoot                                               mdistDirectory      (projectConfig, localPackages) <-@@ -173,7 +172,16 @@                            distDirLayout                            cliConfig -    let buildSettings = resolveBuildTimeSettings+    let ProjectConfigBuildOnly {+          projectConfigLogsDir,+          projectConfigStoreDir+        } = projectConfigBuildOnly projectConfig++        mlogsDir = Setup.flagToMaybe projectConfigLogsDir+        mstoreDir = Setup.flagToMaybe projectConfigStoreDir+        cabalDirLayout = mkCabalDirLayout cabalDir mstoreDir mlogsDir++        buildSettings = resolveBuildTimeSettings                           verbosity cabalDirLayout                           projectConfig 
Distribution/Client/Setup.hs view
@@ -366,6 +366,11 @@          "The location of the world file"          globalWorldFile (\v flags -> flags { globalWorldFile = v })          (reqArgFlag "FILE")++      ,option [] ["store-dir"]+         "The location of the nix-local-build store"+         globalStoreDir (\v flags -> flags { globalStoreDir = v })+         (reqArgFlag "DIR")       ]  -- ------------------------------------------------------------
Distribution/Client/SetupWrapper.hs view
@@ -708,6 +708,9 @@   installedCabalVersion :: SetupScriptOptions -> Compiler -> ProgramDb                         -> IO (Version, Maybe InstalledPackageId                               ,SetupScriptOptions)+  installedCabalVersion options' _ _ | packageName pkg == mkPackageName "Cabal"+                                       && bt == Custom =+    return (packageVersion pkg, Nothing, options')   installedCabalVersion options' compiler progdb = do     index <- maybeGetInstalledPackages options' compiler progdb     let cabalDep   = Dependency (mkPackageName "Cabal") (useCabalVersion options')
Distribution/Client/Upload.hs view
@@ -102,6 +102,15 @@               , "/docs"               ]         }+        packageUri = targetRepoURI {+            uriPath = rootIfEmpty (uriPath targetRepoURI)+                      FilePath.Posix.</> concat+              [ "package/", pkgid+              , case isCandidate of+                  IsCandidate -> "/candidate"+                  IsPublished -> ""+              ]+        }         (reverseSuffix, reversePkgid) = break (== '-')                                         (reverse (takeFileName path))         pkgid = reverse $ tail reversePkgid@@ -122,13 +131,23 @@       -- Hackage responds with 204 No Content when docs are uploaded       -- successfully.       (code,_) | code `elem` [200,204] -> do-        notice verbosity "Ok"+        notice verbosity $ okMessage packageUri       (code,err)  -> do         notice verbosity $ "Error uploading documentation "                         ++ path ++ ": "                         ++ "http code " ++ show code ++ "\n"                         ++ err         exitFailure+  where+    okMessage packageUri = case isCandidate of+      IsCandidate ->+        "Documentation successfully uploaded for package candidate. "+        ++ "You can now preview the result at '" ++ show packageUri+        ++ "'. To upload non-candidate documentation, use 'cabal upload --publish'."+      IsPublished ->+        "Package documentation successfully published. You can now view it at '"+        ++ show packageUri ++ "'."+  promptUsername :: IO Username promptUsername = do
Distribution/Solver/Modular/IndexConversion.hs view
@@ -13,6 +13,7 @@ import Distribution.InstalledPackageInfo as IPI import Distribution.Package                          -- from Cabal import Distribution.Simple.BuildToolDepends          -- from Cabal+import Distribution.Simple.Utils (cabalVersion)      -- from Cabal import Distribution.Types.ExeDependency              -- from Cabal import Distribution.Types.PkgconfigDependency        -- from Cabal import Distribution.Types.ComponentName              -- from Cabal@@ -186,8 +187,36 @@             (L.map  (\(nm, ds) -> conv (ComponentBench nm) benchmarkBuildInfo ds) benchs)        ++ maybe []    (convSetupBuildInfo pi)    (setupBuildInfo pkg) +    -- | We infer the maximally supported spec-version from @lib:Cabal@'s version+    --+    -- As we cannot predict the future, we can only properly support+    -- spec-versions predating (and including) the @lib:Cabal@ version+    -- used by @cabal-install@.+    --+    -- This relies on 'cabalVersion' having always at least 3 components to avoid+    -- comparisons like @2.0.0 > 2.0@ which would result in confusing results.+    --+    -- NOTE: Before we can switch to a /normalised/ spec-version+    -- comparison (e.g. by truncating to 3 components, and removing+    -- trailing zeroes) we'd have to make sure all other places where+    -- the spec-version is compared against a bound do it+    -- consistently.+    maxSpecVer = cabalVersion++    -- | Required/declared spec-version of the package+    --+    -- We don't truncate patch-levels, as specifying a patch-level+    -- spec-version is discouraged and not supported anymore starting+    -- with spec-version 2.2.+    reqSpecVer = specVersion pkg++    -- | A too-new specVersion is turned into a global 'FailReason'+    -- which prevents the solver from selecting this release (and if+    -- forced to, emit a meaningful solver error message).+    fr | reqSpecVer > maxSpecVer = Just (UnsupportedSpecVer reqSpecVer)+       | otherwise               = Nothing   in-    PInfo flagged_deps fds Nothing+    PInfo flagged_deps fds fr  -- | Create a flagged dependency tree from a list @fds@ of flagged -- dependencies, using @f@ to form the tree node (@f@ will be
Distribution/Solver/Modular/Message.hs view
@@ -144,6 +144,7 @@ showFR _ MultipleInstances                = " (multiple instances)" showFR c (DependenciesNotLinked msg)      = " (dependencies not linked: " ++ msg ++ "; conflict set: " ++ showConflictSet c ++ ")" showFR c CyclicDependencies               = " (cyclic dependencies; conflict set: " ++ showConflictSet c ++ ")"+showFR _ (UnsupportedSpecVer ver)         = " (unsupported spec-version " ++ display ver ++ ")" -- The following are internal failures. They should not occur. In the -- interest of not crashing unnecessarily, we still just print an error -- message though.
Distribution/Solver/Modular/Tree.hs view
@@ -111,6 +111,7 @@                 | MultipleInstances                 | DependenciesNotLinked String                 | CyclicDependencies+                | UnsupportedSpecVer Ver   deriving (Eq, Show)  -- | Functor for the tree type. 'a' is the type of nodes' children. 'd' and 'c'
bootstrap.sh view
@@ -233,7 +233,7 @@                        # >= 2.0 && < 2.7 NETWORK_URI_VER="2.6.1.0"; NETWORK_URI_VER_REGEXP="2\.6\."                        # >= 2.6 && < 2.7-CABAL_VER="2.0.0.2";  CABAL_VER_REGEXP="2\.0\.[0-9]"+CABAL_VER="2.0.1.0";  CABAL_VER_REGEXP="2\.0\.[0-9]"                        # >= 2.0 && < 2.1 TRANS_VER="0.5.4.0";   TRANS_VER_REGEXP="0\.[45]\."                        # >= 0.2.* && < 0.6
cabal-install.cabal view
@@ -1,5 +1,5 @@ Name:               cabal-install-Version:            2.0.0.0+Version:            2.0.0.1 Synopsis:           The command-line interface for Cabal and Hackage. Description:     The \'cabal\' command-line program simplifies the process of managing@@ -410,8 +410,8 @@         random,         tagged,         tar,-        tasty,-        tasty-hunit,+        tasty >= 0.12,+        tasty-hunit >= 0.10,         tasty-quickcheck,         time,         zlib@@ -425,7 +425,107 @@   hs-source-dirs: tests, .   ghc-options: -Wall -fwarn-tabs -main-is UnitTests   other-modules:+    Distribution.Client.BuildReports.Anonymous+    Distribution.Client.BuildReports.Storage+    Distribution.Client.BuildReports.Types+    Distribution.Client.Compat.ExecutablePath     Distribution.Client.Compat.FileLock+    Distribution.Client.Compat.FilePerms+    Distribution.Client.Compat.Prelude+    Distribution.Client.Compat.Semaphore+    Distribution.Client.Config+    Distribution.Client.Configure+    Distribution.Client.Dependency+    Distribution.Client.Dependency.Types+    Distribution.Client.DistDirLayout+    Distribution.Client.FetchUtils+    Distribution.Client.FileMonitor+    Distribution.Client.GZipUtils+    Distribution.Client.Glob+    Distribution.Client.GlobalFlags+    Distribution.Client.Haddock+    Distribution.Client.HttpUtils+    Distribution.Client.IndexUtils+    Distribution.Client.IndexUtils.Timestamp+    Distribution.Client.Init.Types+    Distribution.Client.Install+    Distribution.Client.InstallPlan+    Distribution.Client.InstallSymlink+    Distribution.Client.JobControl+    Distribution.Client.PackageUtils+    Distribution.Client.ParseUtils+    Distribution.Client.ProjectConfig+    Distribution.Client.ProjectConfig.Legacy+    Distribution.Client.ProjectConfig.Types+    Distribution.Client.RebuildMonad+    Distribution.Client.Sandbox+    Distribution.Client.Sandbox.Index+    Distribution.Client.Sandbox.PackageEnvironment+    Distribution.Client.Sandbox.Timestamp+    Distribution.Client.Sandbox.Types+    Distribution.Client.SavedFlags+    Distribution.Client.Security.DNS+    Distribution.Client.Security.HTTP+    Distribution.Client.Setup+    Distribution.Client.SetupWrapper+    Distribution.Client.SolverInstallPlan+    Distribution.Client.SrcDist+    Distribution.Client.Store+    Distribution.Client.Tar+    Distribution.Client.Targets+    Distribution.Client.Types+    Distribution.Client.Utils+    Distribution.Client.Utils.Assertion+    Distribution.Client.Win32SelfUpgrade+    Distribution.Client.World+    Distribution.Solver.Modular+    Distribution.Solver.Modular.Assignment+    Distribution.Solver.Modular.Builder+    Distribution.Solver.Modular.Configured+    Distribution.Solver.Modular.ConfiguredConversion+    Distribution.Solver.Modular.ConflictSet+    Distribution.Solver.Modular.Cycles+    Distribution.Solver.Modular.Dependency+    Distribution.Solver.Modular.Explore+    Distribution.Solver.Modular.Flag+    Distribution.Solver.Modular.Index+    Distribution.Solver.Modular.IndexConversion+    Distribution.Solver.Modular.LabeledGraph+    Distribution.Solver.Modular.Linking+    Distribution.Solver.Modular.Log+    Distribution.Solver.Modular.Message+    Distribution.Solver.Modular.PSQ+    Distribution.Solver.Modular.Package+    Distribution.Solver.Modular.Preference+    Distribution.Solver.Modular.RetryLog+    Distribution.Solver.Modular.Solver+    Distribution.Solver.Modular.Tree+    Distribution.Solver.Modular.Validate+    Distribution.Solver.Modular.Var+    Distribution.Solver.Modular.Version+    Distribution.Solver.Modular.WeightedPSQ+    Distribution.Solver.Types.ComponentDeps+    Distribution.Solver.Types.ConstraintSource+    Distribution.Solver.Types.DependencyResolver+    Distribution.Solver.Types.Flag+    Distribution.Solver.Types.InstSolverPackage+    Distribution.Solver.Types.InstalledPreference+    Distribution.Solver.Types.LabeledPackageConstraint+    Distribution.Solver.Types.OptionalStanza+    Distribution.Solver.Types.PackageConstraint+    Distribution.Solver.Types.PackageFixedDeps+    Distribution.Solver.Types.PackageIndex+    Distribution.Solver.Types.PackagePath+    Distribution.Solver.Types.PackagePreferences+    Distribution.Solver.Types.PkgConfigDb+    Distribution.Solver.Types.Progress+    Distribution.Solver.Types.ResolverPackage+    Distribution.Solver.Types.Settings+    Distribution.Solver.Types.SolverId+    Distribution.Solver.Types.SolverPackage+    Distribution.Solver.Types.SourcePackage+    Distribution.Solver.Types.Variable+    Paths_cabal_install     UnitTests.Distribution.Client.ArbitraryInstances     UnitTests.Distribution.Client.FileMonitor     UnitTests.Distribution.Client.GZipUtils@@ -470,8 +570,8 @@         binary,         random,         hackage-security,-        tasty,-        tasty-hunit,+        tasty >= 0.12,+        tasty-hunit >= 0.10,         tasty-quickcheck,         tagged,         QuickCheck >= 2.8.2@@ -517,6 +617,72 @@   hs-source-dirs: tests, .   ghc-options: -Wall -fwarn-tabs "-with-rtsopts=-M4M -K1K" -main-is MemoryUsageTests   other-modules:+    Distribution.Client.Compat.Prelude+    Distribution.Client.Dependency+    Distribution.Client.Dependency.Types+    Distribution.Client.FetchUtils+    Distribution.Client.GZipUtils+    Distribution.Client.GlobalFlags+    Distribution.Client.HttpUtils+    Distribution.Client.PackageUtils+    Distribution.Client.Sandbox.Types+    Distribution.Client.Security.DNS+    Distribution.Client.Security.HTTP+    Distribution.Client.SolverInstallPlan+    Distribution.Client.Tar+    Distribution.Client.Targets+    Distribution.Client.Types+    Distribution.Client.Utils+    Distribution.Client.Utils.Assertion+    Distribution.Client.World+    Distribution.Solver.Modular+    Distribution.Solver.Modular.Assignment+    Distribution.Solver.Modular.Builder+    Distribution.Solver.Modular.Configured+    Distribution.Solver.Modular.ConfiguredConversion+    Distribution.Solver.Modular.ConflictSet+    Distribution.Solver.Modular.Cycles+    Distribution.Solver.Modular.Dependency+    Distribution.Solver.Modular.Explore+    Distribution.Solver.Modular.Flag+    Distribution.Solver.Modular.Index+    Distribution.Solver.Modular.IndexConversion+    Distribution.Solver.Modular.LabeledGraph+    Distribution.Solver.Modular.Linking+    Distribution.Solver.Modular.Log+    Distribution.Solver.Modular.Message+    Distribution.Solver.Modular.PSQ+    Distribution.Solver.Modular.Package+    Distribution.Solver.Modular.Preference+    Distribution.Solver.Modular.RetryLog+    Distribution.Solver.Modular.Solver+    Distribution.Solver.Modular.Tree+    Distribution.Solver.Modular.Validate+    Distribution.Solver.Modular.Var+    Distribution.Solver.Modular.Version+    Distribution.Solver.Modular.WeightedPSQ+    Distribution.Solver.Types.ComponentDeps+    Distribution.Solver.Types.ConstraintSource+    Distribution.Solver.Types.DependencyResolver+    Distribution.Solver.Types.Flag+    Distribution.Solver.Types.InstSolverPackage+    Distribution.Solver.Types.InstalledPreference+    Distribution.Solver.Types.LabeledPackageConstraint+    Distribution.Solver.Types.OptionalStanza+    Distribution.Solver.Types.PackageConstraint+    Distribution.Solver.Types.PackageFixedDeps+    Distribution.Solver.Types.PackageIndex+    Distribution.Solver.Types.PackagePath+    Distribution.Solver.Types.PackagePreferences+    Distribution.Solver.Types.PkgConfigDb+    Distribution.Solver.Types.Progress+    Distribution.Solver.Types.ResolverPackage+    Distribution.Solver.Types.Settings+    Distribution.Solver.Types.SolverId+    Distribution.Solver.Types.SolverPackage+    Distribution.Solver.Types.SourcePackage+    Distribution.Solver.Types.Variable+    Paths_cabal_install     UnitTests.Distribution.Solver.Modular.DSL     UnitTests.Distribution.Solver.Modular.DSL.TestCaseUtils     UnitTests.Distribution.Solver.Modular.MemoryUsage@@ -544,8 +710,8 @@         random,         hackage-security,         tagged,-        tasty,-        tasty-hunit+        tasty >= 0.12,+        tasty-hunit >= 0.10    if flag(old-directory)     build-depends: old-time@@ -588,6 +754,76 @@   hs-source-dirs: tests, .   ghc-options: -Wall -fwarn-tabs -fno-ignore-asserts -main-is SolverQuickCheck   other-modules:+    Distribution.Client.BuildReports.Types+    Distribution.Client.Compat.Prelude+    Distribution.Client.Dependency+    Distribution.Client.Dependency.Types+    Distribution.Client.FetchUtils+    Distribution.Client.GZipUtils+    Distribution.Client.GlobalFlags+    Distribution.Client.HttpUtils+    Distribution.Client.IndexUtils.Timestamp+    Distribution.Client.Init.Types+    Distribution.Client.PackageUtils+    Distribution.Client.Sandbox.Types+    Distribution.Client.Security.DNS+    Distribution.Client.Security.HTTP+    Distribution.Client.Setup+    Distribution.Client.SolverInstallPlan+    Distribution.Client.Tar+    Distribution.Client.Targets+    Distribution.Client.Types+    Distribution.Client.Utils+    Distribution.Client.Utils.Assertion+    Distribution.Client.World+    Distribution.Solver.Modular+    Distribution.Solver.Modular.Assignment+    Distribution.Solver.Modular.Builder+    Distribution.Solver.Modular.Configured+    Distribution.Solver.Modular.ConfiguredConversion+    Distribution.Solver.Modular.ConflictSet+    Distribution.Solver.Modular.Cycles+    Distribution.Solver.Modular.Dependency+    Distribution.Solver.Modular.Explore+    Distribution.Solver.Modular.Flag+    Distribution.Solver.Modular.Index+    Distribution.Solver.Modular.IndexConversion+    Distribution.Solver.Modular.LabeledGraph+    Distribution.Solver.Modular.Linking+    Distribution.Solver.Modular.Log+    Distribution.Solver.Modular.Message+    Distribution.Solver.Modular.PSQ+    Distribution.Solver.Modular.Package+    Distribution.Solver.Modular.Preference+    Distribution.Solver.Modular.RetryLog+    Distribution.Solver.Modular.Solver+    Distribution.Solver.Modular.Tree+    Distribution.Solver.Modular.Validate+    Distribution.Solver.Modular.Var+    Distribution.Solver.Modular.Version+    Distribution.Solver.Modular.WeightedPSQ+    Distribution.Solver.Types.ComponentDeps+    Distribution.Solver.Types.ConstraintSource+    Distribution.Solver.Types.DependencyResolver+    Distribution.Solver.Types.Flag+    Distribution.Solver.Types.InstSolverPackage+    Distribution.Solver.Types.InstalledPreference+    Distribution.Solver.Types.LabeledPackageConstraint+    Distribution.Solver.Types.OptionalStanza+    Distribution.Solver.Types.PackageConstraint+    Distribution.Solver.Types.PackageFixedDeps+    Distribution.Solver.Types.PackageIndex+    Distribution.Solver.Types.PackagePath+    Distribution.Solver.Types.PackagePreferences+    Distribution.Solver.Types.PkgConfigDb+    Distribution.Solver.Types.Progress+    Distribution.Solver.Types.ResolverPackage+    Distribution.Solver.Types.Settings+    Distribution.Solver.Types.SolverId+    Distribution.Solver.Types.SolverPackage+    Distribution.Solver.Types.SourcePackage+    Distribution.Solver.Types.Variable+    Paths_cabal_install     UnitTests.Distribution.Solver.Modular.DSL     UnitTests.Distribution.Solver.Modular.QuickCheck   build-depends:@@ -612,7 +848,7 @@         binary,         random,         hackage-security,-        tasty,+        tasty >= 0.12,         tasty-quickcheck,         QuickCheck >= 2.8.2,         pretty-show@@ -656,7 +892,112 @@   main-is: IntegrationTests2.hs   hs-source-dirs: tests, .   ghc-options: -Wall -fwarn-tabs -fno-ignore-asserts -main-is IntegrationTests2-  other-modules: Distribution.Client.Compat.FileLock+  other-modules:+    Distribution.Client.BuildReports.Types+    Distribution.Client.CmdBench+    Distribution.Client.CmdBuild+    Distribution.Client.CmdErrorMessages+    Distribution.Client.CmdHaddock+    Distribution.Client.CmdRepl+    Distribution.Client.CmdRun+    Distribution.Client.CmdTest+    Distribution.Client.Compat.ExecutablePath+    Distribution.Client.Compat.FileLock+    Distribution.Client.Compat.Prelude+    Distribution.Client.Compat.Semaphore+    Distribution.Client.Config+    Distribution.Client.Dependency+    Distribution.Client.Dependency.Types+    Distribution.Client.DistDirLayout+    Distribution.Client.FetchUtils+    Distribution.Client.FileMonitor+    Distribution.Client.GZipUtils+    Distribution.Client.Glob+    Distribution.Client.GlobalFlags+    Distribution.Client.HttpUtils+    Distribution.Client.IndexUtils+    Distribution.Client.IndexUtils.Timestamp+    Distribution.Client.Init.Types+    Distribution.Client.InstallPlan+    Distribution.Client.JobControl+    Distribution.Client.PackageHash+    Distribution.Client.PackageUtils+    Distribution.Client.ParseUtils+    Distribution.Client.ProjectBuilding+    Distribution.Client.ProjectBuilding.Types+    Distribution.Client.ProjectConfig+    Distribution.Client.ProjectConfig.Legacy+    Distribution.Client.ProjectConfig.Types+    Distribution.Client.ProjectOrchestration+    Distribution.Client.ProjectPlanOutput+    Distribution.Client.ProjectPlanning+    Distribution.Client.ProjectPlanning.Types+    Distribution.Client.RebuildMonad+    Distribution.Client.Sandbox.Types+    Distribution.Client.Security.DNS+    Distribution.Client.Security.HTTP+    Distribution.Client.Setup+    Distribution.Client.SetupWrapper+    Distribution.Client.SolverInstallPlan+    Distribution.Client.SourceFiles+    Distribution.Client.SrcDist+    Distribution.Client.Store+    Distribution.Client.Tar+    Distribution.Client.TargetSelector+    Distribution.Client.Targets+    Distribution.Client.Types+    Distribution.Client.Utils+    Distribution.Client.Utils.Assertion+    Distribution.Client.Utils.Json+    Distribution.Client.World+    Distribution.Solver.Modular+    Distribution.Solver.Modular.Assignment+    Distribution.Solver.Modular.Builder+    Distribution.Solver.Modular.Configured+    Distribution.Solver.Modular.ConfiguredConversion+    Distribution.Solver.Modular.ConflictSet+    Distribution.Solver.Modular.Cycles+    Distribution.Solver.Modular.Dependency+    Distribution.Solver.Modular.Explore+    Distribution.Solver.Modular.Flag+    Distribution.Solver.Modular.Index+    Distribution.Solver.Modular.IndexConversion+    Distribution.Solver.Modular.LabeledGraph+    Distribution.Solver.Modular.Linking+    Distribution.Solver.Modular.Log+    Distribution.Solver.Modular.Message+    Distribution.Solver.Modular.PSQ+    Distribution.Solver.Modular.Package+    Distribution.Solver.Modular.Preference+    Distribution.Solver.Modular.RetryLog+    Distribution.Solver.Modular.Solver+    Distribution.Solver.Modular.Tree+    Distribution.Solver.Modular.Validate+    Distribution.Solver.Modular.Var+    Distribution.Solver.Modular.Version+    Distribution.Solver.Modular.WeightedPSQ+    Distribution.Solver.Types.ComponentDeps+    Distribution.Solver.Types.ConstraintSource+    Distribution.Solver.Types.DependencyResolver+    Distribution.Solver.Types.Flag+    Distribution.Solver.Types.InstSolverPackage+    Distribution.Solver.Types.InstalledPreference+    Distribution.Solver.Types.LabeledPackageConstraint+    Distribution.Solver.Types.OptionalStanza+    Distribution.Solver.Types.PackageConstraint+    Distribution.Solver.Types.PackageFixedDeps+    Distribution.Solver.Types.PackageIndex+    Distribution.Solver.Types.PackagePath+    Distribution.Solver.Types.PackagePreferences+    Distribution.Solver.Types.PkgConfigDb+    Distribution.Solver.Types.Progress+    Distribution.Solver.Types.ResolverPackage+    Distribution.Solver.Types.Settings+    Distribution.Solver.Types.SolverId+    Distribution.Solver.Types.SolverPackage+    Distribution.Solver.Types.SourcePackage+    Distribution.Solver.Types.Variable+    Paths_cabal_install   build-depends:         async,         array,@@ -684,8 +1025,8 @@         tar,         time,         zlib,-        tasty,-        tasty-hunit,+        tasty >= 0.12,+        tasty-hunit >= 0.10,         tagged    if flag(old-bytestring)
changelog view
@@ -1,6 +1,21 @@ -*-change-log-*- +2.0.0.1 Mikhail Glushenkov <mikhail.glushenkov@gmail.com> December 2017+	* Support for GHC's numeric -g debug levels (#4673).+	* Demoted 'scope' field version check to a warning (#4714).+	* Fixed verbosity flags getting removed before being passed to+	'printPlan' (#4724).+	* Added a '--store-dir' option that can be used to configure the+	location of the build global build store (#4623).+	* Turned `allow-{newer,older}` in `cabal.project` files into an+	accumulating field to match CLI flag semantics (#4679).+	* Improve success message when `cabal upload`ing documentation+	(#4777).+	* Documentation fixes.+ 2.0.0.0 Mikhail Glushenkov <mikhail.glushenkov@gmail.com> August 2017+	* See http://coldwa.st/e/blog/2017-09-09-Cabal-2-0.html+	for more detailed release notes. 	* Removed the '--root-cmd' parameter of the 'install' command 	(#3356). 	* Deprecated 'cabal install --global' (#3356).@@ -24,7 +39,7 @@ 	'.../$pkgid.log' to '.../$compiler/$libname.log' (#3807). 	* Added a new command, 'cabal reconfigure', which re-runs 'configure' 	with the most recently used flags (#2214).-	* Added add the '--index-state' flag for requesting a specific+	* Added the '--index-state' flag for requesting a specific 	version of the package index (#3893, #4115). 	* Support for building Backpack packages.  See 	https://github.com/ezyang/ghc-proposals/blob/backpack/proposals/0000-backpack.rst@@ -32,7 +47,7 @@ 	* Support the Nix package manager (#3651). 	* Made the 'template-haskell' package non-upgradable again (#4185). 	* Fixed password echoing on MinTTY (#4128).-	* Added a new solver flag, '--install-base-libraries', that allows+	* Added a new solver flag, '--allow-boot-library-installs', that allows 	any package to be installed or upgraded (#4209). 	* New 'cabal-install' command: 'outdated', for listing outdated 	version bounds in a .cabal file or a freeze file (#4207).@@ -47,6 +62,29 @@ 	* Added a technical preview version of the 'cabal doctest' command 	(#4480). +1.24.0.2 Mikhail Glushenkov <mikhail.glushenkov@gmail.com> December 2016+	* Adapted to the revert of a PVP-noncompliant API change in+	Cabal 1.24.2.0 (#4123).+	* Bumped the directory upper bound to < 1.4 (#4158).++1.24.0.1 Ryan Thomas <ryan@ryant.org> October 2016+	* Fixed issue with passing '--enable-profiling' when invoking+	Setup scripts built with older versions of Cabal (#3873).+	* Fixed various behaviour differences between network transports+	(#3429).+	* Updated to depend on the latest hackage-security that fixes+	various issues on Windows.+	* Fixed 'new-build' to exit with a non-zero exit code on failure+	(#3506).+	* Store secure repo index data as 01-index.* (#3862).+	* Added new hackage-security root keys for distribution with+	cabal-install.+	* Fix an issue where 'cabal install' sometimes had to be run twice+	for packages with build-type: Custom and a custom-setup stanza+	(#3723).+	* 'cabal sdist' no longer ignores '--builddir' when the package's+	build-type is Custom (#3794).+ 1.24.0.0 Ryan Thomas <ryan@ryant.org> March 2016 	* If there are multiple remote repos, 'cabal update' now updates 	them in parallel (#2503).@@ -107,6 +145,39 @@ 	* Tech preview of new nix-style isolated project-based builds. 	Currently provides the commands (new-)build/repl/configure. +1.22.9.0 Ryan Thomas <ryan@ryant.org> March 2016+	* Include Cabal-1.22.8.0++1.22.8.0 Ryan Thomas <ryan@ryant.org> February 2016+	* Only Custom setup scripts should be compiled with '-i -i.'.+	* installedCabalVersion: Don't special-case Cabal anymore.+	* Bump the HTTP upper bound. See #3069.++1.22.7.0 Ryan Thomas <ryan@ryant.org> December 2015+	* Remove GZipUtils tests+	* maybeDecompress: bail on all errors at the beginning of the stream with zlib < 0.6+	* Correct maybeDecompress++1.22.6.0 Ryan Thomas <ryan@ryant.org> June 2015+	* A fix for @ezyang's fix for #2502. (Mikhail Glushenkov)++1.22.5.0 Ryan Thomas <ryan@ryant.org> June 2015+	* Reduce temporary directory name length, fixes #2502. (Edward Z. Yang)++1.22.4.0 Ryan Thomas <ryan@ryant.org> May 2015+	* Force cabal upload to always use digest auth and never basic auth.+	* Add dependency-graph information to `printPlan` output+	* bootstrap.sh: fixes linker matching to avoid cases where tested linker names appear unexpectedly in compiler output (fixes #2542)++1.22.3.0 Ryan Thomas <ryan@ryant.org> April 2015+	* Fix bash completion for sandbox subcommands - Fixes #2513 (Mikhail Glushenkov)+	* filterConfigureFlags: filter more flags (Mikhail Glushenkov)++1.22.2.0 Ryan Thomas <ryan@ryant.org> March 2015+	* Don't pass '--{en,dis}able-profiling' to old setup exes.+	* -Wall police+	* Allow filepath 1.4+ 1.22.0.0 Johan Tibell <johan.tibell@gmail.com> January 2015 	* New command: user-config (#2159). 	* Implement 'cabal repl --only' (#2016).@@ -121,6 +192,19 @@ 	* Install profiling and shared libs by default in 'bootstrap.sh' 	(#2009). +1.20.2.0 Ryan Thomas <ryan@ryant.org> February 2016+	* Only Custom setup scripts should be compiled with '-i -i.'.+	* installedCabalVersion: Don't special-case Cabal anymore.++1.20.1.0 Ryan Thomas <ryan@ryant.org> May 2015+	* Force cabal upload to always use digest auth and never basic auth.+	* bootstrap.sh: install network-uri before HTTP++1.20.0.5 Johan Tibell <johan.tibell@gmail.com> December 2014+	* Support random 1.1.+	* Fix bootstrap script after network package split.+	* Support network-2.6 in test suite.+ 1.20.0.3 Johan Tibell <johan.tibell@gmail.com> June 2014 	* Don't attempt to rename dist if it is already named correctly 	* Treat all flags of a package as interdependent.@@ -148,6 +232,28 @@ 	* Add experimental Cabal file format command 	* Add haddock section to config file 	* Add --main-is flag to init++1.18.2.0 Ryan Thomas <ryan@ryant.org> February 2016+	* Only Custom setup scripts should be compiled with '-i -i.'.+	* installedCabalVersion: Don't special-case Cabal anymore.++1.18.1.0 Ryan Thomas <ryan@ryant.org> May 2015+	* Force cabal upload to always use digest auth and never basic auth.+	* Merge pull request #2367 from juhp/patch-2+	* Fix bootstrap.sh by bumping HTTP to 4000.2.16.1++1.18.0.7 Johan Tibell <johan.tibell@gmail.com> December 2014+	* Support random 1.1.+	* Fix bootstrap script after network package split.+	* Support network-2.6 in test suite.++1.18.0.5 Johan Tibell <johan.tibell@gmail.com> July 2014+	* Make solver flag resolution more conservative.++1.18.0.4 Johan Tibell <johan.tibell@gmail.com> May 2014+	* Increase max-backjumps to 2000.+	* Fix solver bug which led to missed install plans.+	* Tweak solver heuristics to avoid reinstalls.  0.14.0 Andres Loeh <andres@well-typed.com> April 2012 	* Works with ghc-7.4
tests/IntegrationTests2.hs view
@@ -1634,7 +1634,7 @@     res <- try action     case res of       Left  e -> return e-      Right _ -> throwIO $ HUnitFailure $ "expected an exception " ++ expected+      Right _ -> throwIO $ HUnitFailure Nothing $ "expected an exception " ++ expected  expectPackagePreExisting :: ElaboratedInstallPlan -> BuildOutcomes -> PackageId                          -> IO InstalledPackageInfo@@ -1675,7 +1675,7 @@ unexpectedBuildResult :: String -> ElaboratedPlanPackage                       -> Maybe (Either BuildFailure BuildResult) -> IO a unexpectedBuildResult expected planpkg buildResult =-    throwIO $ HUnitFailure $+    throwIO $ HUnitFailure Nothing $          "expected to find " ++ display (packageId planpkg) ++ " in the "       ++ expected ++ " state, but it is actually in the " ++ actual ++ " state."   where@@ -1693,10 +1693,10 @@          | pkg <- InstallPlan.toList plan          , packageId pkg == pkgid ] of       [pkg] -> return pkg-      []    -> throwIO $ HUnitFailure $+      []    -> throwIO $ HUnitFailure Nothing $                    "expected to find " ++ display pkgid                 ++ " in the install plan but it's not there"-      _     -> throwIO $ HUnitFailure $+      _     -> throwIO $ HUnitFailure Nothing $                    "expected to find only one instance of " ++ display pkgid                 ++ " in the install plan but there's several" 
tests/UnitTests/Distribution/Client/FileMonitor.hs view
@@ -818,7 +818,7 @@   res <- checkChanged root monitor key   case res of     MonitorChanged reason -> return reason-    MonitorUnchanged _ _  -> throwIO $ HUnitFailure "expected change"+    MonitorUnchanged _ _  -> throwIO $ HUnitFailure Nothing "expected change"  expectMonitorUnchanged :: (Binary a, Binary b)                         => RootPath -> FileMonitor a b -> a@@ -826,7 +826,7 @@ expectMonitorUnchanged root monitor key = do   res <- checkChanged root monitor key   case res of-    MonitorChanged _reason   -> throwIO $ HUnitFailure "expected no change"+    MonitorChanged _reason   -> throwIO $ HUnitFailure Nothing "expected no change"     MonitorUnchanged b files -> return (b, files)  checkChanged :: (Binary a, Binary b)
tests/UnitTests/Distribution/Client/Glob.hs view
@@ -103,12 +103,12 @@ testparse s =     case simpleParse s of       Just p  -> return p-      Nothing -> throwIO $ HUnitFailure ("expected parse of: " ++ s)+      Nothing -> throwIO $ HUnitFailure Nothing ("expected parse of: " ++ s)  parseFail :: String -> Assertion parseFail s =     case simpleParse s :: Maybe FilePathGlob of-      Just _  -> throwIO $ HUnitFailure ("expected no parse of: " ++ s)+      Just _  -> throwIO $ HUnitFailure Nothing ("expected no parse of: " ++ s)       Nothing -> return ()  instance Arbitrary FilePathGlob where
tests/UnitTests/Distribution/Client/ProjectConfig.hs view
@@ -313,18 +313,46 @@         <*> arbitrary         <*> (fmap getShortToken <$> arbitrary)         <*> (fmap getShortToken <$> arbitrary)+        <*> (fmap getShortToken <$> arbitrary)       where         arbitraryNumJobs = fmap (fmap getPositive) <$> arbitrary -    shrink (ProjectConfigBuildOnly-              x00 x01 x02 x03 x04 x05 x06 x07-              x08 x09 x10 x11 x12 x13 x14 x15-              x16) =-      [ ProjectConfigBuildOnly-          x00' x01' x02' x03' x04'-          x05' x06' x07' x08' (postShrink_NumJobs x09')-          x10' x11' x12' x13  x14'-          x15  x16+    shrink ProjectConfigBuildOnly { projectConfigVerbosity = x00+                                  , projectConfigDryRun = x01+                                  , projectConfigOnlyDeps = x02+                                  , projectConfigSummaryFile = x03+                                  , projectConfigLogFile = x04+                                  , projectConfigBuildReports = x05+                                  , projectConfigReportPlanningFailure = x06+                                  , projectConfigSymlinkBinDir = x07+                                  , projectConfigOneShot = x08+                                  , projectConfigNumJobs = x09+                                  , projectConfigKeepGoing = x10+                                  , projectConfigOfflineMode = x11+                                  , projectConfigKeepTempFiles = x12+                                  , projectConfigHttpTransport = x13+                                  , projectConfigIgnoreExpiry = x14+                                  , projectConfigCacheDir = x15+                                  , projectConfigLogsDir = x16+                                  , projectConfigStoreDir = x17 } =+      [ ProjectConfigBuildOnly { projectConfigVerbosity = x00'+                               , projectConfigDryRun = x01'+                               , projectConfigOnlyDeps = x02'+                               , projectConfigSummaryFile = x03'+                               , projectConfigLogFile = x04'+                               , projectConfigBuildReports = x05'+                               , projectConfigReportPlanningFailure = x06'+                               , projectConfigSymlinkBinDir = x07'+                               , projectConfigOneShot = x08'+                               , projectConfigNumJobs = postShrink_NumJobs x09'+                               , projectConfigKeepGoing = x10'+                               , projectConfigOfflineMode = x11'+                               , projectConfigKeepTempFiles = x12'+                               , projectConfigHttpTransport = x13+                               , projectConfigIgnoreExpiry = x14'+                               , projectConfigCacheDir = x15+                               , projectConfigLogsDir = x16+                               , projectConfigStoreDir = x17}       | ((x00', x01', x02', x03', x04'),          (x05', x06', x07', x08', x09'),          (x10', x11', x12',       x14'))