Skip to content

Commit 9557e89

Browse files
committed
get fixture tests going
1 parent 0b3226a commit 9557e89

File tree

7 files changed

+67
-49
lines changed

7 files changed

+67
-49
lines changed

.ci/esy-build-steps.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ steps:
88
- script: esy build
99
displayName: 'esy build'
1010
# Run tests or any additional steps here
11-
# - script: esy b dune runtest
11+
- script: esy dune exec AllTests
1212
- bash: ./_build/default/src/analyze_example_tests/ExamplesTests.exe
1313
- bash: ./_build/default/util_tests/UtilTests.exe
1414
- bash: mkdir -p rls-release

.vscode/launch.json

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -99,25 +99,25 @@
9999
"sourceMaps": false,
100100
},
101101
{
102-
"name": "Esy Dune 4.06",
102+
"name": "Launch Esy Dune Project",
103103
"type": "extensionHost",
104104
"request": "launch",
105105
"runtimeExecutable": "${execPath}",
106106
"args": [
107107
"--extensionDevelopmentPath=${workspaceRoot}/editor-extensions/vscode",
108-
"${workspaceRoot}/../esy-dune-4.06"
108+
"${workspaceRoot}/examples/example-esy-dune-project"
109109
],
110110
"stopOnEntry": false,
111111
"sourceMaps": false,
112112
},
113113
{
114-
"name": "Esy",
114+
"name": "Launch Opam Dune Project",
115115
"type": "extensionHost",
116116
"request": "launch",
117117
"runtimeExecutable": "${execPath}",
118118
"args": [
119119
"--extensionDevelopmentPath=${workspaceRoot}/editor-extensions/vscode",
120-
"${workspaceRoot}/examples/markdown-reason-react"
120+
"${workspaceRoot}/examples/example-opam-dune-project"
121121
],
122122
"stopOnEntry": false,
123123
"sourceMaps": false,
@@ -134,29 +134,5 @@
134134
"stopOnEntry": false,
135135
"sourceMaps": false,
136136
},
137-
{
138-
"name": "Launch Esy Dune Project",
139-
"type": "extensionHost",
140-
"request": "launch",
141-
"runtimeExecutable": "${execPath}",
142-
"args": [
143-
"--extensionDevelopmentPath=${workspaceRoot}/editor-extensions/vscode",
144-
"${workspaceRoot}/examples/example-esy-dune-project"
145-
],
146-
"stopOnEntry": false,
147-
"sourceMaps": false,
148-
},
149-
{
150-
"name": "Launch Opam Dune Project",
151-
"type": "extensionHost",
152-
"request": "launch",
153-
"runtimeExecutable": "${execPath}",
154-
"args": [
155-
"--extensionDevelopmentPath=${workspaceRoot}/editor-extensions/vscode",
156-
"${workspaceRoot}/examples/example-opam-dune-project"
157-
],
158-
"stopOnEntry": false,
159-
"sourceMaps": false,
160-
},
161137
]
162138
}

editor-extensions/vscode/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/example-esy-dune-project/lib/More.re

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
/** Some contents */
44
let contnets = "here";
55

6+
let x = 10;
7+
8+
let y = x;
9+
610
let inner = 20;
711

812
let n = 10;

src/analyze/BuildSystem.re

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,9 @@ let inferPackageManager = projectRoot => {
347347
| Ok(v) =>
348348
Log.log("Detected `esy` dependency manager for local use");
349349
Ok(Esy(v));
350-
| _ => Error("Couldn't get esy version")
350+
| Error(err) =>
351+
Log.log(err);
352+
Error("Couldn't get esy version")
351353
};
352354
} else {
353355
switch (opam) {

src/analyze_fixture_tests/AllTests.re

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@ let tests: list((module Test)) = [
1313
];
1414

1515
let args = Array.to_list(Sys.argv);
16-
let (args, debug) = {
17-
let rec loop = (items, ok, verbose) => switch items {
18-
| ["-v" | "--verbose", ...rest] => loop(rest, ok, true)
19-
| [one, ...rest] => loop(rest, [one, ...ok], verbose)
20-
| [] => (ok, verbose)
16+
let (args, debug, update) = {
17+
let rec loop = (items, ok, verbose, update) => switch items {
18+
| ["-v" | "--verbose", ...rest] => loop(rest, ok, true, update)
19+
| ["-u" | "--update", ...rest] => loop(rest, ok, verbose, true)
20+
| [one, ...rest] => loop(rest, [one, ...ok], verbose, update)
21+
| [] => (ok, verbose, update)
2122
};
22-
loop(args |> List.rev, [], false)
23+
loop(args |> List.rev, [], false, false)
2324
};
2425

2526
// Util.Log.spamError := true;
@@ -37,15 +38,35 @@ if (debug) {
3738
};
3839

3940
print_endline("Test dir: " ++ TestUtils.tmp);
41+
let failures = ref([])
42+
let total = ref(0)
4043
tests |. Belt.List.forEach(m => {
4144
Files.removeDeep(TestUtils.tmp);
4245
Files.mkdirp(TestUtils.tmp);
4346
module M = (val m);
4447
if (suite == None || suite == Some(M.name)) {
4548
print_endline("## " ++ M.name);
4649
let fileName = "./src/analyze_fixture_tests/" ++ M.name ++ ".txt";
47-
let output = Files.readFileExn(fileName) |> Utils.splitLines |. TestUtils.process(M.getOutput) |> String.concat("\n");
48-
Files.writeFileExn(fileName, output);
50+
let expected = Files.readFileExn(fileName);
51+
let (sections, failed_items, total_items) = expected |> Utils.splitLines |. TestUtils.process(M.getOutput);
52+
failures := failures^ @ (failed_items -> Belt.List.map(item => (M.name, item)));
53+
let actual = sections |> String.concat("\n");
54+
total := total^ + total_items;
55+
if (failed_items != []) {
56+
if (update) {
57+
Files.writeFileExn(fileName, actual);
58+
}
59+
}
4960
}
5061
});
5162

63+
if (failures^ == []) {
64+
print_endline("All clear!")
65+
exit(0)
66+
} else if (update) {
67+
print_endline(Printf.sprintf("Updated %d/%d fixtures", List.length(failures^), total^))
68+
} else {
69+
print_endline(Printf.sprintf("%d/%d fixtures failed!", List.length(failures^), total^));
70+
exit(1)
71+
}
72+

src/analyze_fixture_tests/lib/TestUtils.re

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ let getPackage = (localModules) => {
2020
opens: [],
2121
tmpPath: tmp,
2222
compilationFlags: "",
23-
compilerVersion: BuildSystem.V407,
23+
compilerVersion: BuildSystem.V408,
2424
rebuildTimer: 0.,
2525
includeDirectories: [],
2626
compilerPath,
@@ -236,20 +236,35 @@ let process = (lines, getResult) => {
236236
| `Test(name, _, _, _) => Utils.startsWith(name, "*")
237237
| _ => false
238238
});
239-
sections |> List.map(section => switch section {
240-
| `Header(name) => "### " ++ name ++ "\n"
239+
let totalTests = sections->Belt.List.keep(s => switch s { | `Test(_) => true | _ => false})|> List.length;
240+
let results = sections |> List.map(section => switch section {
241+
| `Header(name) => ("### " ++ name ++ "\n", None)
241242
| `Test(name, mainFile, files, result) => {
242243
if (hasOnly && !Utils.startsWith(name, "*")) {
243-
"=== " ++ name ++ "\n" ++ TestParser.printFiles(mainFile, files) ++ "\n"
244-
++ (result == [] ? "" : "-->\n" ++ String.concat("\n", result))
244+
("=== " ++ name ++ "\n" ++ TestParser.printFiles(mainFile, files) ++ "\n"
245+
++ (result == [] ? "" : "-->\n" ++ String.concat("\n", result)), None)
245246
} else {
246-
print_endline("-----[ " ++ name ++ " ]-----");
247+
let newResult = getResult(files, mainFile);
248+
let failed = newResult->String.trim != String.concat("\n", result)->String.trim;
249+
if (failed) {
250+
print_endline("❌ " ++ name);
251+
} else {
252+
print_endline("✅ " ++ name);
253+
};
254+
// print_endline("-----[ " ++ name ++ " ]-----");
247255
/* print_endline("Running " ++ name); */
248256
/* files |> List.iter(((name, _)) => print_endline("File: " ++ name)); */
249-
let newResult = getResult(files, mainFile);
250-
"=== " ++ name ++ "\n" ++ TestParser.printFiles(mainFile, files) ++ "\n"
251-
++ (newResult == "" ? "" : "-->\n" ++ newResult ++ "\n")
257+
("=== " ++ name ++ "\n" ++ TestParser.printFiles(mainFile, files) ++ "\n"
258+
++ (newResult == "" ? "" : "-->\n" ++ newResult ++ "\n"), failed ? Some(name) : None)
252259
}
253260
}
254-
})
261+
});
262+
let (sections, failures) = results -> Belt.List.reduce(([], []), ((sections, failures), (section, failure)) => (
263+
[section, ...sections],
264+
switch (failure) {
265+
| None => failures
266+
| Some(failure) => [failure, ...failures]
267+
}
268+
));
269+
(sections->List.rev, failures->List.rev, totalTests)
255270
};

0 commit comments

Comments
 (0)