Skip to content

Commit

Permalink
(Fourmolu formatting)
Browse files Browse the repository at this point in the history
  • Loading branch information
alt-romes committed Dec 4, 2023
1 parent 697a6a8 commit 6b9c481
Show file tree
Hide file tree
Showing 13 changed files with 84 additions and 74 deletions.
1 change: 0 additions & 1 deletion Cabal/src/Distribution/Simple/Flag.hs
Expand Up @@ -149,7 +149,6 @@ mergeListFlag :: Flag [a] -> Flag [a] -> Flag [a]
mergeListFlag currentFlags v =
Flag $ concat (flagToList currentFlags ++ flagToList v)


-- | Types that represent boolean flags.
class BooleanFlag a where
asBool :: a -> Bool
Expand Down
11 changes: 5 additions & 6 deletions Cabal/src/Distribution/Simple/Hpc.hs
@@ -1,6 +1,6 @@
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RankNTypes #-}

-----------------------------------------------------------------------------

Expand Down Expand Up @@ -35,20 +35,20 @@ import Distribution.PackageDescription
)
import qualified Distribution.PackageDescription as PD
import Distribution.Pretty
import Distribution.Simple.Flag (fromFlagOrDefault)
import Distribution.Simple.LocalBuildInfo (LocalBuildInfo (..))
import Distribution.Simple.Program
( hpcProgram
, requireProgramVersion
)
import Distribution.Simple.Program.Hpc (markup, union)
import Distribution.Simple.Setup (TestFlags (..))
import Distribution.Simple.Utils (notice)
import Distribution.Types.UnqualComponentName
import Distribution.Verbosity (Verbosity ())
import Distribution.Version (anyVersion)
import System.Directory (createDirectoryIfMissing, doesFileExist)
import System.FilePath
import Distribution.Simple.Setup (TestFlags(..))
import Distribution.Simple.Flag (fromFlagOrDefault)

-- -------------------------------------------------------------------------
-- Haskell Program Coverage
Expand Down Expand Up @@ -152,14 +152,14 @@ markupPackage verbosity TestFlags{testCoverageDistPrefs, testCoverageLibsModules
tixFilePath testDistPref way testName'
-- And call 'markupPackage' once per `test` invocation with all the
-- testsuites to run, which results in multiple tix files being considered
_ -> do
_ -> do
let excluded = concatMap testModules suites ++ [main]
pkgName = prettyShow $ PD.package pkg_descr
summedTixFile = tixFilePath testDistPref way pkgName
createDirectoryIfMissing True $ takeDirectory summedTixFile
union hpc verbosity tixFiles summedTixFile excluded
return summedTixFile

markup hpc hpcVer verbosity tixFile mixDirs htmlDir' included
notice verbosity $
"Package coverage report written to "
Expand All @@ -170,4 +170,3 @@ markupPackage verbosity TestFlags{testCoverageDistPrefs, testCoverageLibsModules
testNames = fmap (unUnqualComponentName . testName) suites
mixDirs = map (`mixDir` way) (fromFlagOrDefault [] testCoverageDistPrefs)
included = fromFlagOrDefault [] testCoverageLibsModules

61 changes: 31 additions & 30 deletions Cabal/src/Distribution/Simple/Setup/Test.hs
Expand Up @@ -40,8 +40,8 @@ import Distribution.Simple.Utils
import Distribution.Verbosity
import qualified Text.PrettyPrint as Disp

import Distribution.Simple.Setup.Common
import Distribution.ModuleName (ModuleName)
import Distribution.Simple.Setup.Common

-- ------------------------------------------------------------

Expand Down Expand Up @@ -98,7 +98,6 @@ data TestFlags = TestFlags
-- excludes indefinite libraries and instantiations because HPC does not
-- support backpack - Nov. 2023). Cabal uses these paths as dist prefixes to
-- determine the path to the `mix` dirs of each component to cover.

, -- TODO: think about if/how options are passed to test exes
testOptions :: [PathTemplate]
}
Expand Down Expand Up @@ -223,35 +222,37 @@ testOptions' showOrParseArgs =
(\v flags -> flags{testFailWhenNoTestSuites = v})
trueArg
, option
[]
["coverage-module"]
"Module of a project-local library to include in the HPC report"
testCoverageLibsModules
(\v flags ->
flags{ testCoverageLibsModules =
mergeListFlag (testCoverageLibsModules flags) v
}
)
( reqArg'
"MODULE"
(Flag . (: []) . fromString)
(fmap prettyShow . fromFlagOrDefault [])
)
[]
["coverage-module"]
"Module of a project-local library to include in the HPC report"
testCoverageLibsModules
( \v flags ->
flags
{ testCoverageLibsModules =
mergeListFlag (testCoverageLibsModules flags) v
}
)
( reqArg'
"MODULE"
(Flag . (: []) . fromString)
(fmap prettyShow . fromFlagOrDefault [])
)
, option
[]
["coverage-dist-dir"]
"The directory where Cabal puts generated build files of an HPC enabled component"
testCoverageDistPrefs
(\v flags ->
flags{ testCoverageDistPrefs =
mergeListFlag (testCoverageDistPrefs flags) v
}
)
( reqArg'
"DIR"
(Flag . (: []))
(fromFlagOrDefault [])
)
[]
["coverage-dist-dir"]
"The directory where Cabal puts generated build files of an HPC enabled component"
testCoverageDistPrefs
( \v flags ->
flags
{ testCoverageDistPrefs =
mergeListFlag (testCoverageDistPrefs flags) v
}
)
( reqArg'
"DIR"
(Flag . (: []))
(fromFlagOrDefault [])
)
, option
[]
["test-options"]
Expand Down
2 changes: 1 addition & 1 deletion cabal-install/src/Distribution/Client/ProjectBuilding.hs
Expand Up @@ -1099,7 +1099,7 @@ unpackPackageTarball verbosity tarball parentdir pkgid pkgTextOverride =
parentdir
</> pkgsubdir
</> prettyShow pkgname
<.> "cabal"
<.> "cabal"
pkgsubdir = prettyShow pkgid
pkgname = packageName pkgid

Expand Down
32 changes: 18 additions & 14 deletions cabal-install/src/Distribution/Client/ProjectPlanning.hs
Expand Up @@ -7,7 +7,8 @@
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE NoMonoLocalBinds #-} -- MUST come after TypeFamilies because TypeFamilies imply MonoLocalBinds
-- MUST come after TypeFamilies because TypeFamilies imply MonoLocalBinds
{-# LANGUAGE NoMonoLocalBinds #-}

-- | Planning how to build everything in a project.
module Distribution.Client.ProjectPlanning
Expand Down Expand Up @@ -148,10 +149,11 @@ import Distribution.Simple.Program.Db
import Distribution.Simple.Program.Find
import Distribution.Simple.Setup
( Flag (..)
, TestFlags (testCoverageDistPrefs)
, flagToList
, flagToMaybe
, fromFlagOrDefault
, toFlag, TestFlags (testCoverageDistPrefs)
, toFlag
)
import qualified Distribution.Simple.Setup as Cabal
import Distribution.System
Expand Down Expand Up @@ -1724,7 +1726,7 @@ elaborateInstallPlan
dieProgress $
text "Internal libraries only supported with per-component builds."
$$ text "Per-component builds were disabled because"
<+> fsep (punctuate comma reasons)
<+> fsep (punctuate comma reasons)
-- TODO: Maybe exclude Backpack too

elab0 = elaborateSolverToCommon spkg
Expand Down Expand Up @@ -4306,7 +4308,7 @@ setupHsTestFlags plan (ElaboratedConfiguredPackage{..}) sharedConfig verbosity d
covLibsDistPref = map (distBuildDirectory distDirLayout . elabDistDirParams sharedConfig) librariesToCover
-- The list of modules from libraries to consider in hpc, that Cabal passes to the hpc markup call
-- This list includes all modules, not only the exposed ones.
covIncludeModules = concatMap (\ElaboratedConfiguredPackage{elabModuleShape=modShape} -> Map.keys $ modShapeProvides modShape) librariesToCover
covIncludeModules = concatMap (\ElaboratedConfiguredPackage{elabModuleShape = modShape} -> Map.keys $ modShapeProvides modShape) librariesToCover

-- The list of non-pre-existing libraries without module holes, i.e. the
-- main library and sub-libraries components of all the local packages in
Expand All @@ -4316,18 +4318,21 @@ setupHsTestFlags plan (ElaboratedConfiguredPackage{..}) sharedConfig verbosity d
-- this seemingly includes the packages that are not local to the project?!
-- Weird, because we filter on localToProject!
-- Try it on cabal-install: cabal test --enable-coverage cabal-install
librariesToCover
= mapMaybe (\case
InstallPlan.Installed elab@ElaboratedConfiguredPackage{elabModuleShape=modShape}
librariesToCover =
mapMaybe
( \case
InstallPlan.Installed elab@ElaboratedConfiguredPackage{elabModuleShape = modShape}
| elabLocalToProject
, not (isIndefiniteOrInstantiation modShape)
-> Just elab
InstallPlan.Configured elab@ElaboratedConfiguredPackage{elabModuleShape=modShape}
, not (isIndefiniteOrInstantiation modShape) ->
Just elab
InstallPlan.Configured elab@ElaboratedConfiguredPackage{elabModuleShape = modShape}
| elabLocalToProject
, not (isIndefiniteOrInstantiation modShape)
-> Just elab
, not (isIndefiniteOrInstantiation modShape) ->
Just elab
_ -> Nothing
) $ Graph.toList $ InstallPlan.toGraph plan
)
$ Graph.toList
$ InstallPlan.toGraph plan

isIndefiniteOrInstantiation :: ModuleShape -> Bool
isIndefiniteOrInstantiation = not . Set.null . modShapeRequires
Expand Down Expand Up @@ -4465,7 +4470,6 @@ setupHsHaddockArgs :: ElaboratedConfiguredPackage -> [String]
setupHsHaddockArgs elab =
map (showComponentTarget (packageId elab)) (elabHaddockTargets elab)


------------------------------------------------------------------------------

-- * Sharing installed packages
Expand Down
@@ -1,5 +1,6 @@
import Test.Cabal.Prelude

main = cabalTest $ do
skipUnlessGhcVersion ">= 8.1"
-- #6397
cabal "test" ["--enable-coverage"]
skipUnlessGhcVersion ">= 8.1"
-- #6397
cabal "test" ["--enable-coverage"]
@@ -1,7 +1,11 @@
import Test.Cabal.Prelude
main = cabalTest $
cabal' "v2-run" ["pkg-abc:program"] >>= assertOutputContains "pkg-def:publib"

-- # #8609
cabal' "v2-test" ["--enable-coverage", "all"]

main =
cabalTest $
cabal' "v2-run" ["pkg-abc:program"]
>>= assertOutputContains
"pkg-def:publib"
-- # #8609
cabal'
"v2-test"
["--enable-coverage", "all"]
@@ -1,3 +1,3 @@
import Test.Cabal.Prelude
main = cabalTest $ cabal "test" ["--enable-coverage"]

main = cabalTest $ cabal "test" ["--enable-coverage"]
@@ -1,3 +1,3 @@
module U2F.Types where

data Curve = SEC_p256r1 deriving Show
data Curve = SEC_p256r1 deriving (Show)
Expand Up @@ -3,4 +3,3 @@ import U2F.Types

main = print ourCurve
main :: IO ()

@@ -1,2 +1,3 @@
import Test.Cabal.Prelude

main = cabalTest $ cabal "test" ["--enable-coverage"]
1 change: 1 addition & 0 deletions cabal-testsuite/PackageTests/Regression/T6440/src/Top.hs
@@ -1,4 +1,5 @@
module Top where

import Inn

foo :: String
Expand Down
@@ -1,16 +1,17 @@
import Test.Cabal.Prelude
import Distribution.Simple.Hpc
import Test.Cabal.Prelude

-- Ensures that even if a .tix file happens to be left around
-- markup isn't generated.
main = setupAndCabalTest $ do
dist_dir <- fmap testDistDir getTestEnv
let tixFile = tixFilePath dist_dir Vanilla "test-Short"
withEnv [("HPCTIXFILE", Just tixFile)] $ do
setup_build
[ "--enable-tests"
, "--ghc-option=-fhpc"
, "--ghc-option=-hpcdir"
, "--ghc-option=" ++ dist_dir ++ "/hpc/vanilla" ]
setup "test" ["test-Short", "--show-details=direct"]
shouldNotExist $ htmlDir dist_dir Vanilla </> "hpc_index.html"
dist_dir <- fmap testDistDir getTestEnv
let tixFile = tixFilePath dist_dir Vanilla "test-Short"
withEnv [("HPCTIXFILE", Just tixFile)] $ do
setup_build
[ "--enable-tests"
, "--ghc-option=-fhpc"
, "--ghc-option=-hpcdir"
, "--ghc-option=" ++ dist_dir ++ "/hpc/vanilla"
]
setup "test" ["test-Short", "--show-details=direct"]
shouldNotExist $ htmlDir dist_dir Vanilla </> "hpc_index.html"

0 comments on commit 6b9c481

Please sign in to comment.