on master help sign in
Expected output tests for Debug.crash.
d7c2354Laszlo Pandy
tests/Test/Compiler.hs+35−4
@@ -18,7 +18,10 @@ import Test.HUnit (Assertion, assertFailure, assertBool, assertEqual)
18
18
19import qualified Elm.Compiler as Compiler
19import qualified Elm.Compiler as Compiler
20import qualified Elm.Package as Package
20import qualified Elm.Package as Package
21−
21+import qualified AST.Module as Module
22+import qualified AST.Module.Name as ModuleName
23+import qualified AST.Variable as Variable
24+import qualified AST.Type as Type
22
25
23
26
24writeExpectedJsEnvVarName :: String
27writeExpectedJsEnvVarName :: String
@@ -68,12 +71,40 @@ convertToExpectedJsFilePath expectedJsDir filePath =
68-- TEST HELPERS
71-- TEST HELPERS
69
72
70
73
74+essentialInterfaces :: Module.Interfaces
75+essentialInterfaces =
76+ Map.fromList
77+ [
78+ (ModuleName.inCore ["Debug"],
79+ buildCoreInterface
80+ [
81+ ("crash", Type.Lambda (Type.Var "String") (Type.Var "a"))
82+ ]
83+ )
84+ ]
85+
86+
87+buildCoreInterface :: [(String, Type.Canonical)] -> Module.Interface
88+buildCoreInterface members =
89+ let exports = map (Variable.Value . fst) members
90+ imports = []
91+ types = Map.fromList members
92+ adts = Map.empty
93+ aliases = Map.empty
94+ fixities = []
95+ ports = []
96+ in
97+ Module.Interface Compiler.version Package.coreName exports types imports adts aliases fixities ports
98+
99+
71compileString :: FilePath -> String -> Either String Compiler.Result
100compileString :: FilePath -> String -> Either String Compiler.Result
72compileString filePath source =
101compileString filePath source =
102+ let dependentModuleNames =
103+ Map.keys essentialInterfaces
73− let context =
104+ context =
74− Compiler.Context Package.coreName True False []
105+ Compiler.Context Package.coreName True False dependentModuleNames
75 (dealiaser, _warnings, result) =
106 (dealiaser, _warnings, result) =
76− Compiler.compile context source Map.empty
107+ Compiler.compile context source essentialInterfaces
77 formatErrors errors =
108 formatErrors errors =
78 concatMap (Compiler.errorToString dealiaser filePath source) errors
109 concatMap (Compiler.errorToString dealiaser filePath source) errors
79 in
110 in
tests/test-files/good-expected-js/Crash/CrashCase.elm.jsnew file+20
@@ -0,0 +1,20 @@
1+Elm.Main = Elm.Main || {};
2+Elm.Main.make = function (_elm) {
3+ "use strict";
4+ _elm.Main = _elm.Main || {};
5+ if (_elm.Main.values) return _elm.Main.values;
6+ var _U = Elm.Native.Utils.make(_elm),
7+ $Debug = Elm.Debug.make(_elm);
8+ var _op = {};
9+ var test = function (x) {
10+ var _p0 = x;
11+ if (_p0 === 1) {
12+ return 2;
13+ } else {
14+ return _U.crashCase("Main",
15+ {start: {line: 5,column: 5},end: {line: 9,column: 43}},
16+ _p0)("unexpected value");
17+ }
18+ };
19+ return _elm.Main.values = {_op: _op,test: test};
20+};
tests/test-files/good-expected-js/Crash/CrashIf.elm.jsnew file+15
@@ -0,0 +1,15 @@
1+Elm.Main = Elm.Main || {};
2+Elm.Main.make = function (_elm) {
3+ "use strict";
4+ _elm.Main = _elm.Main || {};
5+ if (_elm.Main.values) return _elm.Main.values;
6+ var _U = Elm.Native.Utils.make(_elm),
7+ $Debug = Elm.Debug.make(_elm);
8+ var _op = {};
9+ var test = function (x) {
10+ return x ? 2 : _U.crash("Main",
11+ {start: {line: 8,column: 9}
12+ ,end: {line: 8,column: 20}})("unexpected value");
13+ };
14+ return _elm.Main.values = {_op: _op,test: test};
15+};
tests/test-files/good/Crash/CrashCase.elmnew file+9
@@ -0,0 +1,9 @@
1+
2+import Debug
3+
4+test x =
5+ case x of
6+ 1 ->
7+ 2
8+ _ ->
9+ Debug.crash "unexpected value"
tests/test-files/good/Crash/CrashIf.elmnew file+8
@@ -0,0 +1,8 @@
1+
2+import Debug
3+
4+test x =
5+ if x then
6+ 2
7+ else
8+ Debug.crash "unexpected value"