mirror of
https://git.sr.ht/~bryan_bennett/flake_env
synced 2025-12-16 22:51:24 +01:00
More tests for version.extract_version_number
This commit is contained in:
parent
04109672f0
commit
5d0923569f
5 changed files with 40 additions and 16 deletions
5
Justfile
5
Justfile
|
|
@ -1,5 +1,10 @@
|
||||||
build:
|
build:
|
||||||
@dune build
|
@dune build
|
||||||
|
|
||||||
|
test:
|
||||||
|
@dune test -f
|
||||||
|
@bisect-ppx-report html
|
||||||
|
@bisect-ppx-report summary --per-file
|
||||||
|
|
||||||
fmt:
|
fmt:
|
||||||
@dune build @fmt --auto-promote
|
@dune build @fmt --auto-promote
|
||||||
|
|
|
||||||
|
|
@ -30,23 +30,27 @@ let compare = (a, b) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let extract_version_number = (cmd) => {
|
let extract_version_number = cmd => {
|
||||||
switch (Util.run_process(cmd, ["--version"])) {
|
switch (Util.run_process(cmd, ["--version"])) {
|
||||||
| (Ok(), stdout) when String.length(stdout) > 0 => {
|
| (Ok (), stdout) when String.length(stdout) > 0 =>
|
||||||
let substrings = Re.exec(semver_re, stdout);
|
switch (Re.exec(semver_re, stdout)) {
|
||||||
|
| exception Stdlib.Not_found =>
|
||||||
|
Error(
|
||||||
|
Printf.sprintf(
|
||||||
|
"Stdout did not contain a version number for `%s --version`",
|
||||||
|
cmd,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
| substrings =>
|
||||||
let groups = Re.Group.all(substrings);
|
let groups = Re.Group.all(substrings);
|
||||||
if ((groups |> Array.length) == 4) {
|
Ok({
|
||||||
Ok({
|
major: groups[1] |> int_of_string,
|
||||||
major: groups[1] |> int_of_string,
|
minor: groups[2] |> int_of_string,
|
||||||
minor: groups[2] |> int_of_string,
|
point: groups[3] |> int_of_string,
|
||||||
point: groups[3] |> int_of_string
|
});
|
||||||
})
|
|
||||||
} else {
|
|
||||||
Error(Printf.sprintf("Stdout did not contain a version number for `%s --version`", cmd))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
| _ => Error(Printf.sprintf("Failed executing '%s'\n", cmd))
|
| _ => Error(Printf.sprintf("Failed executing '%s'", cmd))
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
let is_new_enough = (cur, needed) => {
|
let is_new_enough = (cur, needed) => {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
flake_env_test_versions
|
flake_env_test_versions
|
||||||
flake_env_test_watches
|
flake_env_test_watches
|
||||||
flake_env_test_util)
|
flake_env_test_util)
|
||||||
(deps spit_version.sh)
|
(deps spit_version.sh spit_gibberish.sh)
|
||||||
(libraries
|
(libraries
|
||||||
lib
|
lib
|
||||||
alcotest
|
alcotest
|
||||||
|
|
|
||||||
|
|
@ -103,8 +103,18 @@ let test_extract_version_number_success = () => {
|
||||||
check_version("Versions", Ok(Versions.init(1, 1, 1)), result);
|
check_version("Versions", Ok(Versions.init(1, 1, 1)), result);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let test_extract_version_number_no_version = () => {
|
||||||
|
let result = Versions.extract_version_number("../tests/spit_gibberish.sh");
|
||||||
|
check_version("Versions", Error("Stdout did not contain a version number for `../tests/spit_gibberish.sh --version`"), result);
|
||||||
|
};
|
||||||
|
|
||||||
|
let test_extract_version_number_nonexistent = () => {
|
||||||
|
let result = Versions.extract_version_number("nonexistent.sh");
|
||||||
|
check_version("Versions", Error("Failed executing 'nonexistent.sh'"), result);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// TODO: Test:
|
// TODO: Test:
|
||||||
// * extract_version_number: impure, don't know how to get a concrete version number to test against
|
|
||||||
// * preflight_versions? impure, but m
|
// * preflight_versions? impure, but m
|
||||||
let () =
|
let () =
|
||||||
Alcotest.(
|
Alcotest.(
|
||||||
|
|
@ -167,6 +177,8 @@ let () =
|
||||||
"extract_version_number",
|
"extract_version_number",
|
||||||
[
|
[
|
||||||
test_case("success", `Quick, test_extract_version_number_success),
|
test_case("success", `Quick, test_extract_version_number_success),
|
||||||
|
test_case("no version number", `Quick, test_extract_version_number_no_version),
|
||||||
|
test_case("missing binary", `Quick, test_extract_version_number_nonexistent),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
||||||
3
tests/spit_gibberish.sh
Executable file
3
tests/spit_gibberish.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
echo "sdlfkjdsfweiojlsjslfj.dofiwoksdj/sfowiefjw0";
|
||||||
Loading…
Add table
Add a link
Reference in a new issue