Skip to content

Commit 9016a3a

Browse files
committed
Add extra-packages parsing
1 parent 3d5d582 commit 9016a3a

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

cabal-install/src/Distribution/Client/ProjectConfig/FieldGrammar.hs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,26 @@ module Distribution.Client.ProjectConfig.FieldGrammar (
44
projectConfigFieldGrammar
55
) where
66

7+
import Distribution.Compat.Prelude
78
import Distribution.Client.ProjectConfig.Legacy (ProjectConfigSkeleton)
89
import qualified Distribution.Client.ProjectConfig.Lens as L
910
import Distribution.Client.ProjectConfig.Types (ProjectConfig (..))
1011
import Distribution.FieldGrammar
12+
import Distribution.Types.PackageVersionConstraint (PackageVersionConstraint (..))
1113

1214
projectConfigFieldGrammar :: ParsecFieldGrammar' ProjectConfig
1315
projectConfigFieldGrammar = ProjectConfig
1416
<$> monoidalFieldAla "packages" (alaList' FSep Token') L.projectPackages
1517
<*> monoidalFieldAla "optional-packages" (alaList' FSep Token') L.projectPackagesOptional
18+
<*> pure mempty -- source-repository-package stanza
19+
<*> monoidalFieldAla "extra-packages" formatPackagesNamedList L.projectPackagesNamed
1620
<*> pure mempty
1721
<*> pure mempty
1822
<*> pure mempty
1923
<*> pure mempty
2024
<*> pure mempty
2125
<*> pure mempty
22-
<*> pure mempty
23-
<*> pure mempty
26+
27+
formatPackagesNamedList :: [PackageVersionConstraint] -> List CommaVCat (Identity PackageVersionConstraint) PackageVersionConstraint
28+
formatPackagesNamedList = alaList CommaVCat
29+

cabal-install/tests/IntegrationTests2/ProjectConfig/ParsecTests.hs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ import Distribution.Client.DistDirLayout
1414
import Distribution.Client.ProjectConfig
1515
import Distribution.Client.RebuildMonad (runRebuild)
1616
import Distribution.Types.CondTree (CondTree (..))
17+
import Distribution.Types.PackageName
18+
import Distribution.Types.PackageVersionConstraint (PackageVersionConstraint (..))
19+
import Distribution.Types.Version (Version, mkVersion)
20+
import Distribution.Types.VersionRange.Internal (VersionRange (..))
1721
import Distribution.Verbosity
1822

1923
-- TODO create tests:
@@ -24,6 +28,7 @@ parserTests = [
2428
-- testCase "read with legacy parser" testLegacyRead
2529
testCase "read packages" testPackages
2630
, testCase "read optional-packages" testOptionalPackages
31+
, testCase "read extra-packages" testExtraPackages
2732
]
2833

2934
-- Currently I compare the results of legacy parser with the new parser
@@ -51,7 +56,7 @@ testLegacyRead = do
5156

5257
testPackages :: Assertion
5358
testPackages = do
54-
let expected = [".", "packages/packages.cabal"] -- TODO https link, what does legacy parse?
59+
let expected = [".", "packages/packages.cabal"] -- TODO also test https link
5560
-- Note that I currently also run the legacy parser to make sure my expected values
5661
-- do not differ from the non-Parsec implementation, this will be removed in the future
5762
(config, legacy) <- readConfigDefault "packages"
@@ -63,6 +68,15 @@ testOptionalPackages = do
6368
(config, legacy) <- readConfigDefault "optional-packages"
6469
assertConfig expected config legacy (projectPackagesOptional . condTreeData)
6570

71+
testExtraPackages :: Assertion
72+
testExtraPackages = do
73+
let expected = [
74+
PackageVersionConstraint (mkPackageName "a") (OrLaterVersion (mkVersion [0])),
75+
PackageVersionConstraint (mkPackageName "b") (IntersectVersionRanges (OrLaterVersion (mkVersion [0,7,3])) (EarlierVersion (mkVersion [0,9])))
76+
]
77+
(config, legacy) <- readConfigDefault "extra-packages"
78+
assertConfig expected config legacy (projectPackagesNamed . condTreeData)
79+
6680
readConfigDefault :: FilePath -> IO (ProjectConfigSkeleton, ProjectConfigSkeleton)
6781
readConfigDefault rootFp = readConfig rootFp "cabal.project"
6882

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
extra-packages:
2+
a
3+
, b >= 0.7.3 && < 0.9,

0 commit comments

Comments
 (0)