summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
cbe80b2)
Using IfAvailable "featurename" we allow individual tests to
only run if the feature is available in the daemon.
This will allow us to extend testing to a lot more optional
features such as NTFS.
(* As for 'If' but the test runs _unless_ the code returns true. *)
| Unless of string
(* As for 'If' but the test runs _unless_ the code returns true. *)
| Unless of string
+ (* Run the test only if 'string' is available in the daemon. *)
+ | IfAvailable of string
+
(* Some initial scenarios for testing. *)
and test_init =
(* Do nothing, block devices could contain random stuff including
(* Some initial scenarios for testing. *)
and test_init =
(* Do nothing, block devices could contain random stuff including
fun (_, _, _, _, tests, _, _) ->
let tests = filter_map (
function
fun (_, _, _, _, tests, _, _) ->
let tests = filter_map (
function
- | (_, (Always|If _|Unless _), test) -> Some test
+ | (_, (Always|If _|Unless _|IfAvailable _), test) -> Some test
| (_, Disabled, _) -> None
) tests in
let seq = List.concat (List.map seq_of_test tests) in
| (_, Disabled, _) -> None
) tests in
let seq = List.concat (List.map seq_of_test tests) in
" test_name name (String.uppercase test_name) (String.uppercase name);
(match prereq with
" test_name name (String.uppercase test_name) (String.uppercase name);
(match prereq with
- | Disabled | Always -> ()
+ | Disabled | Always | IfAvailable _ -> ()
| If code | Unless code ->
pr "static int %s_prereq (void)\n" test_name;
pr "{\n";
| If code | Unless code ->
pr "static int %s_prereq (void)\n" test_name;
pr "{\n";
pr " }\n";
pr "\n";
generate_one_test_body name i test_name init test;
pr " }\n";
pr "\n";
generate_one_test_body name i test_name init test;
+ | IfAvailable group ->
+ pr " if (!is_available (\"%s\")) {\n" group;
+ pr " printf (\" %%s skipped (reason: %%s not available)\\n\", \"%s\", \"%s\");\n" test_name group;
+ pr " return 0;\n";
+ pr " }\n";
+ pr "\n";
+ generate_one_test_body name i test_name init test;
| Always ->
generate_one_test_body name i test_name init test
);
| Always ->
generate_one_test_body name i test_name init test
);