summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/reference_tree.ml5
-rw-r--r--src/value_checker.ml5
-rw-r--r--src/value_checker.mli2
-rw-r--r--test/value_checker_test.ml8
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 =