Skip to content

Commit 24212e6

Browse files
committed
moving things over
1 parent e55b6d3 commit 24212e6

File tree

8 files changed

+136
-141
lines changed

8 files changed

+136
-141
lines changed

src/analyze_example_tests/Check.re

Whitespace-only changes.
Lines changed: 113 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,62 @@
11

2+
open TestFramework;
3+
24
open Analyze;
35

46
let checkExampleProject = (rootPath, sourcePaths) => {
5-
let state = {
6-
...TopTypes.empty(),
7-
rootPath,
8-
rootUri: Util.Utils.toUri(rootPath),
9-
};
10-
print_endline(" Project directory in " ++ rootPath);
7+
8+
let {describe, describeSkip, describeOnly} =
9+
describeConfig
10+
|> withLifecycle(testLifecycle =>
11+
testLifecycle
12+
|> beforeAll(() => {
13+
let state = {
14+
...TopTypes.empty(),
15+
rootPath,
16+
rootUri: Util.Utils.toUri(rootPath),
17+
};
18+
state
19+
})
20+
)
21+
|> build;
22+
1123
let files = sourcePaths->Belt.List.map(path => {
12-
print_endline(" Source directory " ++ path);
24+
// print_endline(" Source directory " ++ path);
1325
Files.collect(path, FindFiles.isSourceFile)
1426
})->Belt.List.toArray->Belt.List.concatMany;
15-
files->Belt.List.reduce([], (failures, path) => {
16-
let uri = Utils.toUri(path);
17-
switch (Packages.getPackage(~reportDiagnostics=(_, _) => (), uri, state)) {
18-
| Error(message) =>
19-
print_endline(" Unable to get package: " ++ uri)
20-
print_endline(message);
21-
[`PackageFail(uri, message), ...failures]
22-
| Ok(package) => switch (State.getCompilationResult(uri, state, ~package)) {
23-
| Error(message) =>
24-
print_endline(" Invalid compilation result: " ++ message);
25-
[`FileFail(uri, message), ...failures]
26-
| Ok(Success(_)) =>
27-
print_endline(" Good: " ++ uri);
28-
failures
29-
| Ok(TypeError(message, _) | SyntaxError(message, _, _)) =>
30-
print_endline(" Error compiling: " ++ uri);
31-
[`FileFail(uri, message)]
32-
}
33-
}
27+
28+
describe(rootPath, ({test}) => {
29+
files->Belt.List.forEach(path => {
30+
let uri = Utils.toUri(path);
31+
test(uri, ({expect, env: state}) => {
32+
switch (Packages.getPackage(~reportDiagnostics=(_, _) => (), uri, state)) {
33+
| Error(message) =>
34+
expect.string("Unable to get package: " ++ message).toEqual("")
35+
// print_endline(" Unable to get package: " ++ uri)
36+
// print_endline(message);
37+
// [`PackageFail(uri, message), ...failures]
38+
| Ok(package) => switch (State.getCompilationResult(uri, state, ~package)) {
39+
| Error(message) =>
40+
expect.string("Invalid compilation result: " ++ message).toEqual("")
41+
// print_endline(" Invalid compilation result: " ++ message);
42+
// [`FileFail(uri, message), ...failures]
43+
| Ok(Success(_)) =>
44+
expect.bool(true).toBeTrue()
45+
// print_endline(" Good: " ++ uri);
46+
// failures
47+
| Ok(TypeError(message, _) | SyntaxError(message, _, _)) =>
48+
expect.string("Error compiling: " ++ message).toEqual("")
49+
// print_endline(" Error compiling: " ++ uri);
50+
// [`FileFail(uri, message)]
51+
}
52+
}
53+
})
54+
})
3455
})
56+
57+
// print_endline(" Project directory in " ++ rootPath);
58+
// files->Belt.List.reduce([], (failures, path) => {
59+
// })
3560
};
3661

3762
let esyProjects = [
@@ -49,47 +74,69 @@ let projects = (Sys.os_type == "Unix" ? esyProjects : []) @ [
4974
("bs-3.1.5", ["src"], "npm install"),
5075
];
5176

77+
// let main = (baseDir, _verbose, args) => {
78+
// print_endline("Checking each example project to make sure we can analyze each source file...");
79+
let baseDir = Sys.getcwd();
80+
projects->Belt.List.forEach(((root, sourcePaths, prepareCommand)) => {
81+
// if (args == [] || List.mem(root, args)) {
82+
describe(root, ({test}) => {
83+
let root = Filename.concat(baseDir, Filename.concat("examples", root));
5284

53-
let main = (baseDir, _verbose, args) => {
54-
print_endline("Checking each example project to make sure we can analyze each source file...");
55-
projects->Belt.List.reduce([], (failures, (root, sourcePaths, prepareCommand)) => {
56-
if (args == [] || List.mem(root, args)) {
57-
print_endline("\027[43;30m# Example " ++ root ++ "\027[0m");
58-
let root = Filename.concat(baseDir, Filename.concat("examples", root));
59-
print_endline("Running \027[32m" ++ prepareCommand ++ "\027[0m in " ++ root);
60-
let (stdout, stderr, success) = Util.Commands.execFull(~pwd=root, prepareCommand);
61-
if (!success) {
62-
[`Project(root, prepareCommand, stdout @ stderr), ...failures]
63-
} else {
64-
let sourcePaths = sourcePaths->Belt.List.map(Filename.concat(root));
65-
checkExampleProject(root, sourcePaths) @ failures
66-
}
67-
} else {
68-
failures
69-
}
85+
let {describe, describeSkip, describeOnly} =
86+
describeConfig
87+
|> withLifecycle(testLifecycle =>
88+
testLifecycle
89+
|> beforeEach(() => {
90+
let (stdout, stderr, success) = Util.Commands.execFull(~pwd=root, prepareCommand);
91+
if (!success) {
92+
failwith("Unable to run " ++ prepareCommand ++ " in " ++ root)
93+
}
94+
})
95+
)
96+
|> build;
97+
98+
// print_endline("\027[43;30m# Example " ++ root ++ "\027[0m");
99+
// print_endline("Running \027[32m" ++ prepareCommand ++ "\027[0m in " ++ root);
100+
// test("Setup Project", ({expect}) => {
101+
// expect.bool(success).toBeTrue()
102+
// });
103+
// if (!success) {
104+
// [`Project(root, prepareCommand, stdout @ stderr), ...failures]
105+
// } else {
106+
let sourcePaths = sourcePaths->Belt.List.map(Filename.concat(root));
107+
// sourcePaths->Belt.List.forEach(sourcePath => {
108+
// describe(sourcePath, ({test}) => checkExampleProject(root, sourcePath))
109+
// })
110+
checkExampleProject(root, sourcePaths)
111+
// }
112+
})
113+
// } else {
114+
// failures
115+
// }
70116
})
71-
};
117+
// };
72118

73-
let (verbose, args) = Belt.List.reduce(Belt.List.fromArray(Sys.argv)->List.tl, (false, []), ((verbose, args), arg) => switch arg {
74-
| "-v" | "--verbose" => (true, args)
75-
| _ => (verbose, [arg, ...args])
76-
});
77-
if (verbose) {
78-
Util.Log.spamError := true;
79-
};
80-
let failures = main(Sys.getcwd(), verbose, List.rev(args));
119+
// let (verbose, args) = Belt.List.reduce(Belt.List.fromArray(Sys.argv)->List.tl, (false, []), ((verbose, args), arg) => switch arg {
120+
// | "-v" | "--verbose" => (true, args)
121+
// | _ => (verbose, [arg, ...args])
122+
// });
123+
124+
// if (verbose) {
125+
// Util.Log.spamError := true;
126+
// };
127+
// let failures = main(Sys.getcwd(), verbose, List.rev(args));
81128

82-
if (failures == []) {
83-
print_endline("\n\027[42;30m## All clear! ##\027[0m");
84-
exit(0);
85-
} else {
86-
print_endline("\n\027[41;30m## Tests failed! ##\027[0m");
87-
failures->Belt.List.forEach(failure => switch failure {
88-
| `Project(root, prepareCommand, output) =>
89-
print_endline("- Project prepare failed: " ++ root ++ " : " ++ prepareCommand);
90-
print_endline(" " ++ String.concat("\n ", output));
91-
| `PackageFail(uri, message) => print_endline("- Failed to get package for " ++ uri ++ " : " ++ message)
92-
| `FileFail(uri, message) => print_endline("- Failed to get compilation info for " ++ uri ++ " : " ++ message)
93-
});
94-
exit(10)
95-
}
129+
// if (failures == []) {
130+
// print_endline("\n\027[42;30m## All clear! ##\027[0m");
131+
// exit(0);
132+
// } else {
133+
// print_endline("\n\027[41;30m## Tests failed! ##\027[0m");
134+
// failures->Belt.List.forEach(failure => switch failure {
135+
// | `Project(root, prepareCommand, output) =>
136+
// print_endline("- Project prepare failed: " ++ root ++ " : " ++ prepareCommand);
137+
// print_endline(" " ++ String.concat("\n ", output));
138+
// | `PackageFail(uri, message) => print_endline("- Failed to get package for " ++ uri ++ " : " ++ message)
139+
// | `FileFail(uri, message) => print_endline("- Failed to get compilation info for " ++ uri ++ " : " ++ message)
140+
// });
141+
// exit(10)
142+
// }

src/analyze_example_tests/dune

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,8 @@
11

2-
(executable
2+
(library
33
(name ExamplesTests)
4-
(public_name ExamplesTests)
54
(modules ExamplesTests)
6-
(libraries Belt str Core Util Analyze)
7-
(flags :standard -open Util -w -9)
8-
(preprocess (pps Belt_ppx Ppx_monads))
9-
)
10-
11-
(executable
12-
(name Check)
13-
(public_name Check)
14-
(modules Check)
15-
(libraries Belt str Core Util Analyze)
5+
(libraries Belt str Core Util Analyze rely.lib TestFramework)
166
(flags :standard -open Util -w -9)
177
(preprocess (pps Belt_ppx Ppx_monads))
188
)

src/analyze_fixture_tests/AnalyzeFixtureTests.re

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ Printexc.record_backtrace(true);
3333
let projectDirs = ["./examples/bs-3.1.5", "./examples/dune", "./examples/example-react"];
3434

3535
projectDirs->Belt.List.forEach(projectDir => {
36-
describe(projectDir, ({describe}) => {
36+
// describe(projectDir, ({describe}) => {
3737
tests->Belt.List.forEach(m => {
3838
module M = (val m);
3939
describe(
40-
M.name,
40+
M.name ++ " in dir " ++ projectDir,
4141
({describe}) => {
4242
let fileName = "./src/analyze_fixture_tests/" ++ M.name ++ ".txt";
4343
let expected = Files.readFileExn(fileName);
@@ -61,5 +61,5 @@ projectDirs->Belt.List.forEach(projectDir => {
6161
},
6262
);
6363
})
64-
})
64+
// })
6565
});

test/RunTests.re

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1+
include ExamplesTests;
12
include AnalyzeFixtureTests;
3+
include UtilTests;
24
TestFramework.cli()

test/dune

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
(name RunTests)
88
(public_name RunTests.exe)
99
(modules RunTests)
10-
(libraries AnalyzeFixtureTests))
10+
(libraries AnalyzeFixtureTests UtilTests ExamplesTests))

util_tests/UtilTests.re

Lines changed: 13 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
2-
type test =
3-
| Single(string, unit => option(string))
4-
| Multiple(string, 'a => option(string), list('a)) : test;
5-
6-
let tests = ref([]);
7-
let addTest = test => tests := [test, ...tests^];
8-
let single = (name, fn) => addTest(Single(name, fn));
9-
let multiple = (name, fn, items) => addTest(Multiple(name, fn, items));
1+
open TestFramework;
102

113
let duneFile = {|
124
(library
@@ -21,14 +13,11 @@ let duneFile = {|
2113
)
2214
|};
2315

24-
single("DuneFile", () => {
25-
switch (Util.JbuildFile.parse(duneFile)) {
26-
| exception Failure(message) => {
27-
Some("Unable to parse dune file: " ++ message)
28-
}
29-
| _ => None
30-
};
31-
})
16+
describe("DuneFile", ({test}) => {
17+
test("Complex dune file", ({expect}) => {
18+
expect.fn(() => Util.JbuildFile.parse(duneFile)).not.toThrow()
19+
})
20+
});
3221

3322
let relpathFixtures = [
3423
(("/a/b/c", "/a/b/d"), "../d"),
@@ -55,42 +44,10 @@ let caseInsensitiveFixtures = [
5544
// Linux is case sensitive
5645
let relpathFixtures = Sys.os_type == "Linux" ? relpathFixtures : relpathFixtures @ caseInsensitiveFixtures;
5746

58-
multiple("relpath", (((base, path), expected)) => {
59-
let output = Util.Files.relpath(base, path);
60-
if (output == expected) {
61-
None
62-
} else {
63-
Some(Printf.sprintf("%s + %s => %s :: expected %s", base, path, output, expected))
64-
}
65-
}, relpathFixtures);
66-
67-
let (failures, total) = tests^ |> List.fold_left(((failures, total), test) => {
68-
switch test {
69-
| Single(name, fn) =>
70-
let (res, message) = switch (fn()) {
71-
| None => ((failures, total + 1), "✔️")
72-
| Some(message) => ((failures + 1, total + 1), "❌ " ++ message)
73-
};
74-
print_endline(name ++ " :: " ++ message);
75-
res
76-
| Multiple(name, fn, items) =>
77-
let (f2, t2) = items |> List.fold_left(((failures, total), item) => {
78-
let (res, message) = switch (fn(item)) {
79-
| None => ((failures, total + 1), "✔️")
80-
| Some(message) => ((failures + 1, total + 1), "❌ " ++ message)
81-
};
82-
Printf.printf("%s (%2d) :: %s\n", name, total, message);
83-
res
84-
}, (0, 0));
85-
(f2 + failures, t2 + total)
86-
}
87-
}, (0, 0));
88-
89-
if (failures == 0) {
90-
Printf.printf("✅ All tests passed! %d/%d\n", total, total);
91-
exit(0)
92-
} else {
93-
Printf.printf("❌ Failures: %d/%d\n", failures, total);
94-
exit(0)
95-
96-
}
47+
describe("relpath", ({test}) => {
48+
relpathFixtures |> List.iter((((base, path), expected)) => {
49+
test(base ++ " + " ++ path, ({expect}) => {
50+
expect.string(Util.Files.relpath(base, path)).toEqual(expected)
51+
})
52+
})
53+
})

util_tests/dune

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
(executable
1+
(library
22
(name UtilTests)
3-
(public_name UtilTests.exe)
4-
(libraries Util)
3+
(libraries Util rely.lib TestFramework)
54
)

0 commit comments

Comments
 (0)