on master help sign in
Update Test.Compiler / make it a bit easier to read
beac4f6Evan Czaplicki
tests/Test/Compiler.hs+34−15
@@ -29,6 +29,10 @@ import qualified AST.Variable as Variable
29import qualified AST.Type as Type
29import qualified AST.Type as Type
30
30
31
31
32+
33+-- TESTS
34+
35+
32writeExpectedJsEnvVarName :: String
36writeExpectedJsEnvVarName :: String
33writeExpectedJsEnvVarName =
37writeExpectedJsEnvVarName =
34 "ELM_WRITE_NEW_EXPECTED"
38 "ELM_WRITE_NEW_EXPECTED"
@@ -64,6 +68,7 @@ testsDir :: FilePath
64testsDir =
68testsDir =
65 "tests" </> "test-files"
69 "tests" </> "test-files"
66
70
71+
67convertToExpectedJsFilePath :: String -> FilePath -> FilePath
72convertToExpectedJsFilePath :: String -> FilePath -> FilePath
68convertToExpectedJsFilePath expectedJsDir filePath =
73convertToExpectedJsFilePath expectedJsDir filePath =
69 testsDir
74 testsDir
@@ -73,11 +78,35 @@ convertToExpectedJsFilePath expectedJsDir filePath =
73
78
74
79
75
80
76−-- TEST HELPERS
81+-- COMPILE HELPERS
82+
83+
84+compile :: FilePath -> Text -> Either String Compiler.Result
85+compile filePath source =
86+ let
87+ context =
88+ Compiler.Context Package.core False importDict interfaces
89+
90+ (dealiaser, _warnings, result) =
91+ Compiler.compile context source
92+
93+ formatErrors errors =
94+ concatMap (Compiler.errorToString dealiaser filePath source) errors
95+ in
96+ either (Left . formatErrors) Right result
97+
98+
99+importDict :: Map.Map ModuleName.Raw ModuleName.Canonical
100+importDict =
101+ let
102+ toPair name =
103+ ( ModuleName._module name, name )
104+ in
105+ Map.fromList $ map toPair $ Map.keys interfaces
77
106
78
107
79−essentialInterfaces :: Module.Interfaces
108+interfaces :: Module.Interfaces
80−essentialInterfaces =
109+interfaces =
81 Map.fromList
110 Map.fromList
82 [
111 [
83 (ModuleName.inCore "Debug",
112 (ModuleName.inCore "Debug",
@@ -102,18 +131,8 @@ buildCoreInterface members =
102 Module.Interface Compiler.version Package.core exports imports types adts aliases fixities
131 Module.Interface Compiler.version Package.core exports imports types adts aliases fixities
103
132
104
133
105−compile :: FilePath -> Text -> Either String Compiler.Result
134+
106−compile filePath source =
135+-- FILE HELPER
107− let dependentModuleNames =
108− Map.keys essentialInterfaces
109− context =
110− Compiler.Context Package.core False dependentModuleNames
111− (dealiaser, _warnings, result) =
112− Compiler.compile context source essentialInterfaces
113− formatErrors errors =
114− concatMap (Compiler.errorToString dealiaser filePath source) errors
115− in
116− either (Left . formatErrors) Right result
117
136
118
137
119readFileOrErrorStr :: FilePath -> IO String
138readFileOrErrorStr :: FilePath -> IO String