@@ -1,13 +1,17 @@
11{-# OPTIONS_GHC -W #-}
2+{-# LANGUAGE OverloadedStrings #-}
23{-# LANGUAGE ScopedTypeVariables #-}
34module Test.Compiler (compilerTests) where
45
56import Control.Exception (try, IOException)
67
7−import qualified Data.Text.Lazy as Text
8−import qualified Data.Text.Lazy.IO as Text
8+import qualified Data.Text.Lazy as LText
9+import qualified Data.Text.Lazy.IO as LText
910import qualified Data.Map as Map
1011import Data.Maybe (isJust)
12+import qualified Data.Text as Text
13+import qualified Data.Text.IO as Text
14+import Data.Text (Text)
1115
1216import System.Directory (createDirectoryIfMissing)
1317import System.Environment (lookupEnv)
@@ -77,7 +81,7 @@ essentialInterfaces :: Module.Interfaces
7781essentialInterfaces =
7882 Map.fromList
7983 [
80− (ModuleName.inCore ["Debug"],
84+ (ModuleName.inCore "Debug",
8185 buildCoreInterface
8286 [
8387 ("crash", Type.Lambda (Type.Var "String") (Type.Var "a"))
@@ -86,7 +90,7 @@ essentialInterfaces =
8690 ]
8791
8892
89−buildCoreInterface :: [(String, Type.Canonical)] -> Module.Interface
93+buildCoreInterface :: [(Text, Type.Canonical)] -> Module.Interface
9094buildCoreInterface members =
9195 let
9296 exports = map (Variable.Value . fst) members
@@ -99,8 +103,8 @@ buildCoreInterface members =
99103 Module.Interface Compiler.version Package.core exports imports types adts aliases fixities
100104
101105
102−compileString :: FilePath -> String -> Either String Compiler.Result
103−compileString filePath source =
106+compile :: FilePath -> Text -> Either String Compiler.Result
107+compile filePath source =
104108 let dependentModuleNames =
105109 Map.keys essentialInterfaces
106110 context =
@@ -108,7 +112,7 @@ compileString filePath source =
108112 (dealiaser, _warnings, result) =
109113 Compiler.compile context source essentialInterfaces
110114 formatErrors errors =
111− concatMap (Compiler.errorToString dealiaser filePath source) errors
115+ concatMap (Compiler.errorToString dealiaser filePath (Text.unpack source)) errors
112116 in
113117 either (Left . formatErrors) Right result
114118
@@ -134,8 +138,8 @@ testIf
134138 -> IO [Test]
135139testIf handleResult filePaths =
136140 let doTest filePath =
137− do source <- readFile filePath
138− let formattedResult = compileString filePath source
141+ do source <- Text.readFile filePath
142+ let formattedResult = compile filePath source
139143 return $ testCase filePath (handleResult formattedResult)
140144 in
141145 traverse doTest filePaths
@@ -143,10 +147,10 @@ testIf handleResult filePaths =
143147
144148doMatchesExpectedTest :: String -> FilePath -> IO Test
145149doMatchesExpectedTest expectedJsDir filePath =
146− do source <- readFile filePath
150+ do source <- Text.readFile filePath
147151 expectedJs <- readFileOrErrorStr (convertToExpectedJsFilePath expectedJsDir filePath)
148152
149− let formattedResult = compileString filePath source
153+ let formattedResult = compile filePath source
150154 let assertion = matchesExpected expectedJs formattedResult
151155
152156 return $ testCase filePath assertion
@@ -154,8 +158,8 @@ doMatchesExpectedTest expectedJsDir filePath =
154158
155159doWriteNewExpectedTest :: String -> FilePath -> IO Test
156160doWriteNewExpectedTest expectedJsDir filePath =
157− do source <- readFile filePath
158− let formattedResult = compileString filePath source
161+ do source <- Text.readFile filePath
162+ let formattedResult = compile filePath source
159163 let expectedFilePath = convertToExpectedJsFilePath expectedJsDir filePath
160164 let assertion =
161165 case formattedResult of
@@ -164,8 +168,8 @@ doWriteNewExpectedTest expectedJsDir filePath =
164168 -- Force the evaluation of `js` before `writeFile`
165169 -- so that if an error is raised we do not unintentionally write an empty file.
166170 -- NB: `js` can be an empty string in the case of NoExpressions.elm
167− assertBool "" (Text.length js >= 0)
168− Text.writeFile expectedFilePath js
171+ assertBool "" (LText.length js >= 0)
172+ LText.writeFile expectedFilePath js
169173 assertFailure ("Wrote new expected js: " ++ expectedFilePath)
170174
171175 _ ->
@@ -212,7 +216,7 @@ matchesExpected :: String -> Either String Compiler.Result -> Assertion
212216matchesExpected expectedJs result =
213217 case result of
214218 Right (Compiler.Result _ _ js) ->
215− assertEqual matchFailureMessage (Text.pack expectedJs) js
219+ assertEqual matchFailureMessage (LText.pack expectedJs) js
216220
217221 Left errorMessages ->
218222 assertFailure $ "Compile failed:\n" ++ errorMessages