diff options
-rw-r--r-- | src/reference_tree.ml | 5 | ||||
-rw-r--r-- | src/value_checker.ml | 5 | ||||
-rw-r--r-- | src/value_checker.mli | 2 | ||||
-rw-r--r-- | test/value_checker_test.ml | 8 |
4 files changed, 12 insertions, 8 deletions
diff --git a/src/reference_tree.ml b/src/reference_tree.ml index 87ab881..26b14b9 100644 --- a/src/reference_tree.ml +++ b/src/reference_tree.ml @@ -51,7 +51,10 @@ let load_constraint_from_xml d c = let cs = (Value_checker.Regex s) :: d.constraints in {d with constraints=cs} | Xml.Element ("validator", [("name", n); ("argument", a)], _) -> - let cs = (Value_checker.External (n, a)) :: d.constraints in + let cs = (Value_checker.External (n, Some a)) :: d.constraints in + {d with constraints=cs} + | Xml.Element ("validator", [("name", n)], _) -> + let cs = (Value_checker.External (n, None)) :: d.constraints in {d with constraints=cs} | _ -> raise (Bad_interface_definition "Malformed constraint") in Xml.fold aux d c diff --git a/src/value_checker.ml b/src/value_checker.ml index d4f0ddd..dad4596 100644 --- a/src/value_checker.ml +++ b/src/value_checker.ml @@ -1,6 +1,6 @@ module F = Filename -type value_constraint = Regex of string | External of string * string +type value_constraint = Regex of string | External of string * string option exception Bad_validator of string @@ -16,7 +16,8 @@ let validate_value dir value_constraint value = We should do something about it. *) let validator = F.concat dir v in - let result = Unix.system (Printf.sprintf "%s %s %s" validator c value) in + let arg = Util.substitute_default c "" in + let result = Unix.system (Printf.sprintf "%s %s %s" validator arg value) in match result with | Unix.WEXITED 0 -> true | Unix.WEXITED 127 -> raise (Bad_validator (Printf.sprintf "Could not execute validator %s" validator)) diff --git a/src/value_checker.mli b/src/value_checker.mli index 62f5b6b..d786f5e 100644 --- a/src/value_checker.mli +++ b/src/value_checker.mli @@ -1,4 +1,4 @@ -type value_constraint = Regex of string | External of string * string +type value_constraint = Regex of string | External of string * string option exception Bad_validator of string diff --git a/test/value_checker_test.ml b/test/value_checker_test.ml index 3479150..16ad6e4 100644 --- a/test/value_checker_test.ml +++ b/test/value_checker_test.ml @@ -18,23 +18,23 @@ let test_check_regex_invalid test_ctxt = assert_equal (validate_value (get_dir test_ctxt) c v) false let test_check_external_valid test_ctxt = - let c = External ("anything", "") in + let c = External ("anything", None) in let v = "fgsfds" in assert_equal (validate_value (get_dir test_ctxt) c v) true let test_check_external_invalid test_ctxt = - let c = External ("nothing", "") in + let c = External ("nothing", None) in let v = "fgsfds" in assert_equal (validate_value (get_dir test_ctxt) c v) false let test_check_external_bad_validator test_ctxt = - let c = External ("invalid", "") in + let c = External ("invalid", None) in let v = "fgsfds" in assert_bool "Invalid validator was executed successfully" (raises_bad_validator (fun () -> validate_value (get_dir test_ctxt) c v)) let test_validate_any_valid test_ctxt = - let cs = [Regex "\\d+"; Regex "[a-z]+"; External ("anything", "")] in + let cs = [Regex "\\d+"; Regex "[a-z]+"; External ("anything", None)] in assert_equal (validate_any (get_dir test_ctxt) cs "AAAA") true let test_validate_any_invalid test_ctxt = |