Skip to content

Commit c5bdc36

Browse files
committed
Add early version ParsecTests (haskell#6101)
1 parent eebeeea commit c5bdc36

File tree

4 files changed

+68
-3
lines changed

4 files changed

+68
-3
lines changed

cabal-install/cabal-install.cabal

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,9 @@ test-suite integration-tests2
374374
hs-source-dirs: tests
375375
default-language: Haskell2010
376376

377+
other-modules:
378+
IntegrationTests2.ProjectConfig.ParsecTests
379+
377380
build-depends:
378381
bytestring,
379382
cabal-install,

cabal-install/tests/IntegrationTests2.hs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ import Distribution.Client.GlobalFlags (GlobalFlags, globalNix)
7979
import Distribution.Simple.Flag (Flag (Flag, NoFlag))
8080
import Data.Maybe (fromJust)
8181

82+
import IntegrationTests2.ProjectConfig.ParsecTests
83+
8284
#if !MIN_VERSION_directory(1,2,7)
8385
removePathForcibly :: FilePath -> IO ()
8486
removePathForcibly = removeDirectoryRecursive
@@ -89,9 +91,11 @@ main =
8991
defaultMainWithIngredients
9092
(defaultIngredients ++ [includingOptions projectConfigOptionDescriptions])
9193
(withProjectConfig $ \config ->
92-
testGroup "Integration tests (internal)"
93-
(tests config))
94-
94+
testGroup "Integration tests"
95+
[
96+
testGroup "ProjectConfig Parsec Tests" parserTests
97+
, testGroup "Integration tests (internal)" (tests config)
98+
])
9599

96100
tests :: ProjectConfig -> [TestTree]
97101
tests config =
@@ -1676,6 +1680,7 @@ type ProjDetails = (DistDirLayout,
16761680
[PackageSpecifier UnresolvedSourcePackage],
16771681
BuildTimeSettings)
16781682

1683+
-- TODO STRT 6101 configureProject for integration tests
16791684
configureProject :: FilePath -> ProjectConfig -> IO ProjDetails
16801685
configureProject testdir cliConfig = do
16811686
cabalDirLayout <- defaultCabalDirLayout
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
-- | Integration Tests related to parsing of ProjectConfigs
2+
3+
module IntegrationTests2.ProjectConfig.ParsecTests (parserTests) where
4+
5+
import qualified Data.ByteString as BS
6+
import System.Directory
7+
import System.FilePath
8+
import Test.Tasty
9+
import Test.Tasty.HUnit
10+
import Test.Tasty.Options
11+
12+
import Distribution.Client.HttpUtils
13+
import Distribution.Client.DistDirLayout
14+
import Distribution.Client.ProjectConfig
15+
import Distribution.Client.RebuildMonad (runRebuild)
16+
import Distribution.Verbosity
17+
18+
-- TODO create tests:
19+
-- - parser tests to read and compare to expected values
20+
-- - golden tests for warnings and errors
21+
parserTests :: [TestTree]
22+
parserTests = [
23+
testCase "read with legacy parser" testLegacyRead
24+
]
25+
26+
testLegacyRead :: Assertion
27+
testLegacyRead = do
28+
httpTransport <- configureTransport verbosity [] Nothing
29+
let testdir = "ProjectConfig/files/"
30+
projectRootDir <- canonicalizePath (basedir </> testdir)
31+
32+
-- let projectRoot = ProjectRootImplicit projectRootDir
33+
let projectFileName = "cabal-minimal.project"
34+
projectRoot = ProjectRootExplicit projectRootDir projectFileName
35+
extensionName = ""
36+
distDirLayout = defaultDistDirLayout projectRoot Nothing
37+
extensionDescription = "description"
38+
distProjectConfigFp = distProjectFile distDirLayout extensionName
39+
print distProjectConfigFp
40+
exists <- doesFileExist distProjectConfigFp
41+
print $ exists
42+
projectConfigSkeletonLegacy <- runRebuild projectRootDir $
43+
readProjectFileSkeletonLegacy verbosity httpTransport distDirLayout extensionName extensionDescription
44+
projectConfigSkeleton <- runRebuild projectRootDir $
45+
readProjectFileSkeleton verbosity httpTransport distDirLayout extensionName extensionDescription
46+
projectConfigSkeleton @?= projectConfigSkeletonLegacy
47+
48+
-- | Test Utilities
49+
emptyProjectConfig :: ProjectConfig
50+
emptyProjectConfig = mempty
51+
52+
verbosity :: Verbosity
53+
verbosity = minBound --normal --verbose --maxBound --minBound
54+
55+
basedir :: FilePath
56+
basedir = "tests" </> "IntegrationTests2"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
packages: .

0 commit comments

Comments
 (0)