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:
|
||||
@dune build
|
||||
|
||||
test:
|
||||
@dune test -f
|
||||
@bisect-ppx-report html
|
||||
@bisect-ppx-report summary --per-file
|
||||
|
||||
fmt:
|
||||
@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"])) {
|
||||
| (Ok(), stdout) when String.length(stdout) > 0 => {
|
||||
let substrings = Re.exec(semver_re, stdout);
|
||||
| (Ok (), stdout) when String.length(stdout) > 0 =>
|
||||
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);
|
||||
if ((groups |> Array.length) == 4) {
|
||||
Ok({
|
||||
major: groups[1] |> int_of_string,
|
||||
minor: groups[2] |> int_of_string,
|
||||
point: groups[3] |> int_of_string
|
||||
})
|
||||
} else {
|
||||
Error(Printf.sprintf("Stdout did not contain a version number for `%s --version`", cmd))
|
||||
}
|
||||
Ok({
|
||||
major: groups[1] |> int_of_string,
|
||||
minor: groups[2] |> int_of_string,
|
||||
point: groups[3] |> int_of_string,
|
||||
});
|
||||
}
|
||||
| _ => Error(Printf.sprintf("Failed executing '%s'\n", cmd))
|
||||
}
|
||||
| _ => Error(Printf.sprintf("Failed executing '%s'", cmd))
|
||||
};
|
||||
};
|
||||
|
||||
let is_new_enough = (cur, needed) => {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
flake_env_test_versions
|
||||
flake_env_test_watches
|
||||
flake_env_test_util)
|
||||
(deps spit_version.sh)
|
||||
(deps spit_version.sh spit_gibberish.sh)
|
||||
(libraries
|
||||
lib
|
||||
alcotest
|
||||
|
|
|
|||
|
|
@ -103,8 +103,18 @@ let test_extract_version_number_success = () => {
|
|||
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:
|
||||
// * extract_version_number: impure, don't know how to get a concrete version number to test against
|
||||
// * preflight_versions? impure, but m
|
||||
let () =
|
||||
Alcotest.(
|
||||
|
|
@ -167,6 +177,8 @@ let () =
|
|||
"extract_version_number",
|
||||
[
|
||||
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