@@ -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
127129assertLangOkXml :: Options -> FilePath -> Assertion
128130assertLangOkXml 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
135135assertEval :: 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
169173assertEvalFail :: FilePath -> Assertion
170174assertEvalFail 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.\n The evaluation result was `"
177- <> evalResult
178- <> " `."
177+ evalResult `seq` assertFailure $ " File: ''" <> file <> " '' should not evaluate.\n The evaluation result was `" <> evalResult <> " `."
0 commit comments