@@ -61,26 +61,27 @@ newFailingTests :: Set String
6161newFailingTests = 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
7069genTests :: IO TestTree
7170genTests = 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
127128assertLangOkXml :: Options -> FilePath -> Assertion
128129assertLangOkXml 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
135134assertEval :: 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
169172assertEvalFail :: FilePath -> Assertion
170173assertEvalFail 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.\n The evaluation result was `"
177- <> evalResult
178- <> " `."
176+ evalResult `seq` assertFailure $ " File: ''" <> file <> " '' should not evaluate.\n The evaluation result was `" <> evalResult <> " `."
0 commit comments