Skip to content

Commit aa33b59

Browse files
committed
tests: NixLanguageTests: refactor
A light refactor, abstract-explained a helper function.
1 parent 5937436 commit aa33b59

File tree

1 file changed

+41
-42
lines changed

1 file changed

+41
-42
lines changed

tests/NixLanguageTests.hs

Lines changed: 41 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,14 @@ genTests = do
7575
. filter ((`Set.notMember` newFailingTests) . takeBaseName)
7676
. filter ((/= ".xml") . takeExtension)
7777
<$> 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
78+
let
79+
testsByName = groupBy (takeFileName . dropExtensions) testFiles
80+
testsByType = groupBy testType (Map.toList testsByName)
81+
testGroups = mkTestGroup <$> Map.toList testsByType
82+
pure $ localOption (mkTimeout 2000000) $
83+
testGroup
84+
"Nix (upstream) language tests"
85+
testGroups
8486
where
8587
testType (fullpath, _files) = take 2 $ splitOn "-" $ takeFileName fullpath
8688
mkTestGroup (kind, tests) =
@@ -126,53 +128,50 @@ assertLangOk opts file = do
126128

127129
assertLangOkXml :: Options -> FilePath -> Assertion
128130
assertLangOkXml opts file = do
129-
actual <- stringIgnoreContext . toXML <$> hnixEvalFile
130-
opts
131-
(file <> ".nix")
131+
actual <- stringIgnoreContext . toXML <$> hnixEvalFile opts (file <> ".nix")
132132
expected <- Text.readFile $ file <> ".exp.xml"
133133
assertEqual "" expected actual
134134

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

164-
fixup ("--arg" : x : y : rest) = "--arg" : (x <> "=" <> y) : fixup rest
167+
fixup :: [Text] -> [Text]
168+
fixup ("--arg" : x : y : rest) = "--arg" : (x <> "=" <> y) : fixup rest
165169
fixup ("--argstr" : x : y : rest) = "--argstr" : (x <> "=" <> y) : fixup rest
166-
fixup (x : rest) = x : fixup rest
170+
fixup (x : rest) = x : fixup rest
167171
fixup [] = mempty
168172

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

0 commit comments

Comments
 (0)