Skip to content

Commit 0f32a08

Browse files
Merge #971: tests: NixLanguageTests: enable test 'eval-okay-context-introspection'
2 parents 2183d00 + 6811ab0 commit 0f32a08

File tree

1 file changed

+45
-47
lines changed

1 file changed

+45
-47
lines changed

tests/NixLanguageTests.hs

Lines changed: 45 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -61,26 +61,27 @@ newFailingTests :: Set String
6161
newFailingTests = Set.fromList
6262
[ "eval-okay-hash"
6363
, "eval-okay-hashfile"
64-
, "eval-okay-path"
64+
, "eval-okay-path" -- #128
6565
, "eval-okay-types"
6666
, "eval-okay-fromTOML"
67-
, "eval-okay-context-introspection"
6867
]
6968

7069
genTests :: IO TestTree
7170
genTests = do
7271
testFiles <-
7372
sort
74-
-- jww (2018-05-07): Temporarily disable this test until #128 is fixed.
75-
. filter ((`Set.notMember` newFailingTests) . takeBaseName)
76-
. filter ((/= ".xml") . takeExtension)
73+
-- Disabling the not yet done tests cases.
74+
. filter ((`Set.notMember` newFailingTests) . takeBaseName)
75+
. filter ((/= ".xml") . takeExtension)
7776
<$> globDir1 (compile "*-*-*.*") "data/nix/tests/lang"
78-
let testsByName = groupBy (takeFileName . dropExtensions) testFiles
79-
let testsByType = groupBy testType (Map.toList testsByName)
80-
let testGroups = mkTestGroup <$> Map.toList testsByType
81-
pure $ localOption (mkTimeout 2000000) $ testGroup
82-
"Nix (upstream) language tests"
83-
testGroups
77+
let
78+
testsByName = groupBy (takeFileName . dropExtensions) testFiles
79+
testsByType = groupBy testType (Map.toList testsByName)
80+
testGroups = mkTestGroup <$> Map.toList testsByType
81+
pure $ localOption (mkTimeout 2000000) $
82+
testGroup
83+
"Nix (upstream) language tests"
84+
testGroups
8485
where
8586
testType (fullpath, _files) = take 2 $ splitOn "-" $ takeFileName fullpath
8687
mkTestGroup (kind, tests) =
@@ -126,53 +127,50 @@ assertLangOk opts file = do
126127

127128
assertLangOkXml :: Options -> FilePath -> Assertion
128129
assertLangOkXml opts file = do
129-
actual <- stringIgnoreContext . toXML <$> hnixEvalFile
130-
opts
131-
(file <> ".nix")
130+
actual <- stringIgnoreContext . toXML <$> hnixEvalFile opts (file <> ".nix")
132131
expected <- Text.readFile $ file <> ".exp.xml"
133132
assertEqual "" expected actual
134133

135134
assertEval :: Options -> [FilePath] -> Assertion
136-
assertEval _opts files = do
137-
time <- liftIO getCurrentTime
138-
let opts = defaultOptions time
139-
case delete ".nix" $ sort $ fmap takeExtensions files of
140-
[] -> () <$ hnixEvalFile opts (name <> ".nix")
141-
[".exp" ] -> assertLangOk opts name
142-
[".exp.xml" ] -> assertLangOkXml opts name
143-
[".exp.disabled"] -> pass
144-
[".exp-disabled"] -> pass
145-
[".exp", ".flags"] -> do
146-
liftIO $ setEnv "NIX_PATH" "lang/dir4:lang/dir5"
147-
flags <- Text.readFile (name <> ".flags")
148-
let flags' | Text.last flags == '\n' = Text.init flags
149-
| otherwise = flags
150-
case
151-
Opts.execParserPure
152-
Opts.defaultPrefs
153-
(nixOptionsInfo time)
154-
(fixup (fmap toString (Text.splitOn " " flags')))
155-
of
156-
Opts.Failure err -> errorWithoutStackTrace $ "Error parsing flags from " <> name <> ".flags: " <> show err
157-
Opts.Success opts' -> assertLangOk opts' name
158-
Opts.CompletionInvoked _ -> fail "unused"
159-
_ -> assertFailure $ "Unknown test type " <> show files
135+
assertEval _opts files =
136+
do
137+
time <- liftIO getCurrentTime
138+
let opts = defaultOptions time
139+
case delete ".nix" $ sort $ toText . takeExtensions <$> files of
140+
[] -> void $ hnixEvalFile opts (name <> ".nix")
141+
[".exp" ] -> assertLangOk opts name
142+
[".exp.xml" ] -> assertLangOkXml opts name
143+
[".exp.disabled" ] -> pass
144+
[".exp-disabled" ] -> pass
145+
[".exp", ".flags"] ->
146+
do
147+
liftIO $ setEnv "NIX_PATH" "lang/dir4:lang/dir5"
148+
flags <- Text.readFile $ name <> ".flags"
149+
let flags' | Text.last flags == '\n' = Text.init flags
150+
| otherwise = flags
151+
case runParserGetResult time flags' of
152+
Opts.Failure err -> errorWithoutStackTrace $ "Error parsing flags from " <> name <> ".flags: " <> show err
153+
Opts.CompletionInvoked _ -> fail "unused"
154+
Opts.Success opts' -> assertLangOk opts' name
155+
_ -> assertFailure $ "Unknown test type " <> show files
160156
where
157+
runParserGetResult time flags' =
158+
Opts.execParserPure
159+
Opts.defaultPrefs
160+
(nixOptionsInfo time)
161+
(fmap toString $ fixup $ Text.splitOn " " flags')
162+
161163
name =
162-
"data/nix/tests/lang/" <> the (fmap (takeFileName . dropExtensions) files)
164+
"data/nix/tests/lang/" <> the (takeFileName . dropExtensions <$> files)
163165

164-
fixup ("--arg" : x : y : rest) = "--arg" : (x <> "=" <> y) : fixup rest
166+
fixup :: [Text] -> [Text]
167+
fixup ("--arg" : x : y : rest) = "--arg" : (x <> "=" <> y) : fixup rest
165168
fixup ("--argstr" : x : y : rest) = "--argstr" : (x <> "=" <> y) : fixup rest
166-
fixup (x : rest) = x : fixup rest
169+
fixup (x : rest) = x : fixup rest
167170
fixup [] = mempty
168171

169172
assertEvalFail :: FilePath -> Assertion
170173
assertEvalFail file = (`catch` (\(_ :: SomeException) -> pass)) $ do
171174
time <- liftIO getCurrentTime
172175
evalResult <- printNix <$> hnixEvalFile (defaultOptions time) file
173-
evalResult `seq`
174-
assertFailure $
175-
file
176-
<> " should not evaluate.\nThe evaluation result was `"
177-
<> evalResult
178-
<> "`."
176+
evalResult `seq` assertFailure $ "File: ''" <> file <> "'' should not evaluate.\nThe evaluation result was `" <> evalResult <> "`."

0 commit comments

Comments
 (0)