This commit is contained in:
Bryan Bennett 2024-01-05 06:25:13 -05:00
parent 31cac9373c
commit 5e505b178b
No known key found for this signature in database
GPG key ID: EE149E4215408DE9
13 changed files with 486 additions and 165 deletions

View file

@ -0,0 +1,118 @@
open Lib;
let test_compare_equal = () => {
let a = Versions.init(1,0,0);
Alcotest.(check(int))("equal", 0, Versions.compare(a, a))
};
let test_compare_first_major_greater = () => {
let a = Versions.init(2,0,0);
let b = Versions.init(1, 0, 0);
Alcotest.(check(int))("First major greater", 1, Versions.compare(a, b))
};
let test_compare_first_minor_greater = () => {
let a = Versions.init(1,1,0);
let b = Versions.init(1, 0, 0);
Alcotest.(check(int))("First minor greater", 1, Versions.compare(a, b))
};
let test_compare_first_point_greater = () => {
let a = Versions.init(1, 0, 1);
let b = Versions.init(1,0,0);
Alcotest.(check(int))("First point greater", 1, Versions.compare(a, b))
};
let test_compare_second_major_greater = () => {
let a = Versions.init(1,0,0);
let b = Versions.init(2, 0, 0);
Alcotest.(check(int))("Second major greater", -1, Versions.compare(a, b))
};
let test_compare_second_minor_greater = () => {
let a = Versions.init(1,0,0);
let b = Versions.init(1, 1, 0);
Alcotest.(check(int))("Second minor greater", -1, Versions.compare(a, b))
};
let test_compare_second_point_greater = () => {
let a = Versions.init(1,0,0);
let b = Versions.init(1, 0, 1);
Alcotest.(check(int))("Second point greater", -1, Versions.compare(a, b))
};
let test_ine_cur_newer = () => {
let a = Ok(Versions.init(2,0,0));
let b = Versions.init(1, 0, 0);
let ine = Versions.is_new_enough(a, b);
Alcotest.(check(bool))("Curr newer", true, ine |> Result.get_ok)
};
let test_ine_cur_older = () => {
let a = Ok(Versions.init(1,0,0));
let b = Versions.init(2, 0, 0);
let ine = Versions.is_new_enough(a, b);
Alcotest.(check(bool))("Curr older", false, ine |> Result.get_ok)
};
let test_ine_cur_equal = () => {
let a = Versions.init(1,0,0);
let ine = Versions.is_new_enough(Ok(a), a);
Alcotest.(check(bool))("Curr equal", true, ine |> Result.get_ok)
};
// TODO: figure out typing of `Alcotest.check` here.
// I think we just add a `pprint` and `equal` function, but that is verbose
// let test_ine_error = () => {
// let a = Error("foobarbaz");
// let ine = Versions.is_new_enough(a, Versions.init(1, 0, 0));
// Alcotest.(check())("Error bubbled", Error("foobarbaz"), ine)
// };
let test_in_direnv_true = () => {
Core_unix.putenv(~key="direnv", ~data="direnv");
Alcotest.(check(bool))("In direnv", true, Versions.in_direnv())
};
let test_in_direnv_false = () => {
Core_unix.unsetenv("direnv");
Alcotest.(check(bool))("Not in direnv", false, Versions.in_direnv())
};
// 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.(
run(
"Versions",
[
(
"compare",
[
test_case("Versions Equal", `Quick, test_compare_equal),
test_case("First Major Greater", `Quick, test_compare_first_major_greater),
test_case("First Minor Greater", `Quick, test_compare_first_minor_greater),
test_case("First Point Greater", `Quick, test_compare_first_point_greater),
test_case("Second Major Greater", `Quick, test_compare_second_major_greater),
test_case("Second Minor Greater", `Quick, test_compare_second_minor_greater),
test_case("Second Point Greater", `Quick, test_compare_second_point_greater),
],
),
(
"is_new_enough",
[
test_case("Curr Newer", `Quick, test_ine_cur_newer),
test_case("Curr Older", `Quick, test_ine_cur_older),
test_case("Curr Equal", `Quick, test_ine_cur_equal),
]
),
(
"in_direnv",
[
test_case("true", `Quick, test_in_direnv_true),
test_case("false", `Quick, test_in_direnv_false),
],
)
])
);