Skip to content

Commit

Permalink
get fixture tests going
Browse files Browse the repository at this point in the history
  • Loading branch information
jaredly committed Dec 8, 2019
1 parent 0b3226a commit 9557e89
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 49 deletions.
2 changes: 1 addition & 1 deletion .ci/esy-build-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ steps:
- script: esy build
displayName: 'esy build'
# Run tests or any additional steps here
# - script: esy b dune runtest
- script: esy dune exec AllTests
- bash: ./_build/default/src/analyze_example_tests/ExamplesTests.exe
- bash: ./_build/default/util_tests/UtilTests.exe
- bash: mkdir -p rls-release
Expand Down
32 changes: 4 additions & 28 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,25 +99,25 @@
"sourceMaps": false,
},
{
"name": "Esy Dune 4.06",
"name": "Launch Esy Dune Project",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceRoot}/editor-extensions/vscode",
"${workspaceRoot}/../esy-dune-4.06"
"${workspaceRoot}/examples/example-esy-dune-project"
],
"stopOnEntry": false,
"sourceMaps": false,
},
{
"name": "Esy",
"name": "Launch Opam Dune Project",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceRoot}/editor-extensions/vscode",
"${workspaceRoot}/examples/markdown-reason-react"
"${workspaceRoot}/examples/example-opam-dune-project"
],
"stopOnEntry": false,
"sourceMaps": false,
Expand All @@ -134,29 +134,5 @@
"stopOnEntry": false,
"sourceMaps": false,
},
{
"name": "Launch Esy Dune Project",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceRoot}/editor-extensions/vscode",
"${workspaceRoot}/examples/example-esy-dune-project"
],
"stopOnEntry": false,
"sourceMaps": false,
},
{
"name": "Launch Opam Dune Project",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceRoot}/editor-extensions/vscode",
"${workspaceRoot}/examples/example-opam-dune-project"
],
"stopOnEntry": false,
"sourceMaps": false,
},
]
}
2 changes: 1 addition & 1 deletion editor-extensions/vscode/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions examples/example-esy-dune-project/lib/More.re
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
/** Some contents */
let contnets = "here";

let x = 10;

let y = x;

let inner = 20;

let n = 10;
Expand Down
4 changes: 3 additions & 1 deletion src/analyze/BuildSystem.re
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,9 @@ let inferPackageManager = projectRoot => {
| Ok(v) =>
Log.log("Detected `esy` dependency manager for local use");
Ok(Esy(v));
| _ => Error("Couldn't get esy version")
| Error(err) =>
Log.log(err);
Error("Couldn't get esy version")
};
} else {
switch (opam) {
Expand Down
37 changes: 29 additions & 8 deletions src/analyze_fixture_tests/AllTests.re
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,14 @@ let tests: list((module Test)) = [
];

let args = Array.to_list(Sys.argv);
let (args, debug) = {
let rec loop = (items, ok, verbose) => switch items {
| ["-v" | "--verbose", ...rest] => loop(rest, ok, true)
| [one, ...rest] => loop(rest, [one, ...ok], verbose)
| [] => (ok, verbose)
let (args, debug, update) = {
let rec loop = (items, ok, verbose, update) => switch items {
| ["-v" | "--verbose", ...rest] => loop(rest, ok, true, update)
| ["-u" | "--update", ...rest] => loop(rest, ok, verbose, true)
| [one, ...rest] => loop(rest, [one, ...ok], verbose, update)
| [] => (ok, verbose, update)
};
loop(args |> List.rev, [], false)
loop(args |> List.rev, [], false, false)
};

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

print_endline("Test dir: " ++ TestUtils.tmp);
let failures = ref([])
let total = ref(0)
tests |. Belt.List.forEach(m => {
Files.removeDeep(TestUtils.tmp);
Files.mkdirp(TestUtils.tmp);
module M = (val m);
if (suite == None || suite == Some(M.name)) {
print_endline("## " ++ M.name);
let fileName = "./src/analyze_fixture_tests/" ++ M.name ++ ".txt";
let output = Files.readFileExn(fileName) |> Utils.splitLines |. TestUtils.process(M.getOutput) |> String.concat("\n");
Files.writeFileExn(fileName, output);
let expected = Files.readFileExn(fileName);
let (sections, failed_items, total_items) = expected |> Utils.splitLines |. TestUtils.process(M.getOutput);
failures := failures^ @ (failed_items -> Belt.List.map(item => (M.name, item)));
let actual = sections |> String.concat("\n");
total := total^ + total_items;
if (failed_items != []) {
if (update) {
Files.writeFileExn(fileName, actual);
}
}
}
});

if (failures^ == []) {
print_endline("All clear!")
exit(0)
} else if (update) {
print_endline(Printf.sprintf("Updated %d/%d fixtures", List.length(failures^), total^))
} else {
print_endline(Printf.sprintf("%d/%d fixtures failed!", List.length(failures^), total^));
exit(1)
}

35 changes: 25 additions & 10 deletions src/analyze_fixture_tests/lib/TestUtils.re
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ let getPackage = (localModules) => {
opens: [],
tmpPath: tmp,
compilationFlags: "",
compilerVersion: BuildSystem.V407,
compilerVersion: BuildSystem.V408,
rebuildTimer: 0.,
includeDirectories: [],
compilerPath,
Expand Down Expand Up @@ -236,20 +236,35 @@ let process = (lines, getResult) => {
| `Test(name, _, _, _) => Utils.startsWith(name, "*")
| _ => false
});
sections |> List.map(section => switch section {
| `Header(name) => "### " ++ name ++ "\n"
let totalTests = sections->Belt.List.keep(s => switch s { | `Test(_) => true | _ => false})|> List.length;
let results = sections |> List.map(section => switch section {
| `Header(name) => ("### " ++ name ++ "\n", None)
| `Test(name, mainFile, files, result) => {
if (hasOnly && !Utils.startsWith(name, "*")) {
"=== " ++ name ++ "\n" ++ TestParser.printFiles(mainFile, files) ++ "\n"
++ (result == [] ? "" : "-->\n" ++ String.concat("\n", result))
("=== " ++ name ++ "\n" ++ TestParser.printFiles(mainFile, files) ++ "\n"
++ (result == [] ? "" : "-->\n" ++ String.concat("\n", result)), None)
} else {
print_endline("-----[ " ++ name ++ " ]-----");
let newResult = getResult(files, mainFile);
let failed = newResult->String.trim != String.concat("\n", result)->String.trim;
if (failed) {
print_endline("❌ " ++ name);
} else {
print_endline("✅ " ++ name);
};
// print_endline("-----[ " ++ name ++ " ]-----");
/* print_endline("Running " ++ name); */
/* files |> List.iter(((name, _)) => print_endline("File: " ++ name)); */
let newResult = getResult(files, mainFile);
"=== " ++ name ++ "\n" ++ TestParser.printFiles(mainFile, files) ++ "\n"
++ (newResult == "" ? "" : "-->\n" ++ newResult ++ "\n")
("=== " ++ name ++ "\n" ++ TestParser.printFiles(mainFile, files) ++ "\n"
++ (newResult == "" ? "" : "-->\n" ++ newResult ++ "\n"), failed ? Some(name) : None)
}
}
})
});
let (sections, failures) = results -> Belt.List.reduce(([], []), ((sections, failures), (section, failure)) => (
[section, ...sections],
switch (failure) {
| None => failures
| Some(failure) => [failure, ...failures]
}
));
(sections->List.rev, failures->List.rev, totalTests)
};

0 comments on commit 9557e89

Please sign in to comment.