mirror of
https://git.sr.ht/~bryan_bennett/flake_env
synced 2025-12-19 16:01:25 +01:00
WIP
This commit is contained in:
parent
31cac9373c
commit
5e505b178b
13 changed files with 486 additions and 165 deletions
7
tests/dune
Normal file
7
tests/dune
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
(tests
|
||||
(names
|
||||
flake_env_test_versions
|
||||
flake_env_test_watches
|
||||
flake_env_test_util)
|
||||
(instrumentation (backend bisect_ppx))
|
||||
(libraries lib alcotest))
|
||||
39
tests/flake_env_test_util.re
Normal file
39
tests/flake_env_test_util.re
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
open Core;
|
||||
module Unix = Core_unix;
|
||||
|
||||
open Lib.Util;
|
||||
|
||||
let pp_exit_or_signal = (pp_fmt) => (e) => Fmt.pf(pp_fmt, "%s", Unix.Exit_or_signal.to_string_hum(e));
|
||||
let exit_or_signal_eq = (a, b) => Unix.Exit_or_signal.compare(a, b) == 0;
|
||||
let testable_exit_or_signal = Alcotest.testable(pp_exit_or_signal, exit_or_signal_eq);
|
||||
|
||||
let test_run_process_success = () =>
|
||||
Alcotest.(check(Alcotest.pair(testable_exit_or_signal, string)))(
|
||||
"Returns expected",
|
||||
(Ok(), ""),
|
||||
run_process("true", []));
|
||||
|
||||
let test_run_process_failure = () =>
|
||||
Alcotest.(check(Alcotest.pair(testable_exit_or_signal, string)))(
|
||||
"Returns expected",
|
||||
(Error(`Exit_non_zero(1)), ""),
|
||||
run_process("false", []));
|
||||
|
||||
let test_run_process_stdout = () =>
|
||||
Alcotest.(check(Alcotest.pair(testable_exit_or_signal, string)))(
|
||||
"Returns expected",
|
||||
(Ok(), "echoed\n"),
|
||||
run_process("echo", ["echoed"]));
|
||||
|
||||
let () =
|
||||
Alcotest.(
|
||||
run(
|
||||
"Watches",
|
||||
[("run_process",
|
||||
[
|
||||
test_case("Capture's Stdout", `Quick, test_run_process_stdout),
|
||||
test_case("Success", `Quick, test_run_process_success),
|
||||
test_case("Failure", `Quick, test_run_process_failure),
|
||||
]),
|
||||
]),
|
||||
);
|
||||
118
tests/flake_env_test_versions.re
Normal file
118
tests/flake_env_test_versions.re
Normal 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),
|
||||
],
|
||||
)
|
||||
])
|
||||
);
|
||||
41
tests/flake_env_test_watches.re
Normal file
41
tests/flake_env_test_watches.re
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
open Lib.Watches;
|
||||
|
||||
let test_get_path_removes_prefix = () => {
|
||||
let input = `Assoc([
|
||||
("path", `String("aaaaaaaaaaabbbbb"))
|
||||
]);
|
||||
Alcotest.(check(string))("Prefix removed", "bbbbb", get_path(input))
|
||||
};
|
||||
|
||||
let test_get_paths_from_doc = () => {
|
||||
let input = `Assoc([
|
||||
("path", `String("aaaaaaaaaaabbbbb")),
|
||||
("inputs", `Assoc([
|
||||
("foo", `Assoc([
|
||||
("path", `String("aaaaaaaaaaaccccc")),
|
||||
("inputs", `Assoc([
|
||||
("bar", `Assoc([
|
||||
("path", `String("aaaaaaaaaaaddddd")),
|
||||
("inputs", `Assoc([]))
|
||||
]))
|
||||
]))
|
||||
]))
|
||||
]))
|
||||
]);
|
||||
Alcotest.(check(list(string)))("Gathers all inputs", ["bbbbb", "ccccc", "ddddd"], get_paths_from_doc(input, []))
|
||||
};
|
||||
|
||||
let () =
|
||||
Alcotest.(
|
||||
run(
|
||||
"Watches",
|
||||
[("get_path",
|
||||
[
|
||||
test_case("Removes prefix", `Quick, test_get_path_removes_prefix),
|
||||
]),
|
||||
("get_paths_from_doc",
|
||||
[
|
||||
test_case("Collects all paths", `Quick, test_get_paths_from_doc),
|
||||
])
|
||||
]),
|
||||
);
|
||||
Loading…
Add table
Add a link
Reference in a new issue