From 27a2d5ad1afb7baac317672620ff138f9802ccbf Mon Sep 17 00:00:00 2001 From: Shon Feder Date: Tue, 17 Jan 2017 03:31:28 -0500 Subject: T231: Add a function for loading interface definitions from a directory (#5) * T231: Load directory of interface definitions * T231: Add ounit package to merlin config * T231: Add tests for loading dir of definitions * squash! T231: Load directory of interface definitions * squash! T231: Add tests for loading dir of definitions --- test/data/interface_definitions/login_sample.xml | 23 +++++++++ test/data/interface_definitions/system_sample.xml | 63 +++++++++++++++++++++++ test/reference_tree_test.ml | 19 +++++++ 3 files changed, 105 insertions(+) create mode 100644 test/data/interface_definitions/login_sample.xml create mode 100644 test/data/interface_definitions/system_sample.xml (limited to 'test') diff --git a/test/data/interface_definitions/login_sample.xml b/test/data/interface_definitions/login_sample.xml new file mode 100644 index 0000000..b74a415 --- /dev/null +++ b/test/data/interface_definitions/login_sample.xml @@ -0,0 +1,23 @@ + + + + + + + User name + + [a-z][a-zA-Z0-9]+ + + User name must start with a letter and consist of letters and digits + + + + + User full name + + + + + + + diff --git a/test/data/interface_definitions/system_sample.xml b/test/data/interface_definitions/system_sample.xml new file mode 100644 index 0000000..c6185c0 --- /dev/null +++ b/test/data/interface_definitions/system_sample.xml @@ -0,0 +1,63 @@ + + + + + + + + + + User name + + [a-zA-Z][a-zA-Z0-9\-]+ + + User name must start with a letter and consist of letters and digits + + + + + User full name + + + + + + + A password + + + + + + + + + [a-zA-Z][a-zA-Z0-9\-] + + + + + + NTP server address + + + + + + + + Reboot automatically if kernel panic occurs + + + + + + Enable dangerous features + + + + + + + + diff --git a/test/reference_tree_test.ml b/test/reference_tree_test.ml index 8002bdf..a3125be 100644 --- a/test/reference_tree_test.ml +++ b/test/reference_tree_test.ml @@ -3,6 +3,10 @@ open Reference_tree let get_dir test_ctxt = in_testdata_dir test_ctxt ["validators"] +let ok_or_failure result = match result with + | Ok value -> value + | Error msg -> assert_failure msg + let raises_validation_error f = try ignore @@ f (); false with Validation_error _ -> true @@ -158,6 +162,19 @@ let test_get_help_string_default test_ctxt = let r = load_from_xml r (in_testdata_dir test_ctxt ["interface_definition_sample.xml"]) in assert_equal (get_help_string r ["system"; "host-name"]) ("No help available") +let test_load_interface_definitions_children test_ctxt = + let interface_definitions_dir = in_testdata_dir test_ctxt ["interface_definitions"] in + let r = ok_or_failure (load_interface_definitions interface_definitions_dir) in + let children = Vytree.list_children r in + assert_equal children ["system"; "login"] + +let test_load_interface_definitions_leaves test_ctxt = + let interface_definitions_dir = in_testdata_dir test_ctxt ["interface_definitions"] in + let r = ok_or_failure (load_interface_definitions interface_definitions_dir) in + let has_system_leaf = is_leaf r ["system"; "login"; "user"; "full-name"] in + let has_login_leaf = is_leaf r ["login"; "user"; "full-name"] in + assert_equal (has_system_leaf && has_login_leaf) true + let suite = "Util tests" >::: [ "test_load_valid_definition" >:: test_load_valid_definition; @@ -189,6 +206,8 @@ let suite = "test_get_owner_invalid" >:: test_get_owner_invalid; "test_get_help_string_valid" >:: test_get_help_string_valid; "test_get_help_string_default" >:: test_get_help_string_default; + "test_load_interface_definitions_children " >:: test_load_interface_definitions_children; + "test_load_interface_definitions_leaves" >:: test_load_interface_definitions_leaves ] let () = -- cgit v1.2.3