summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/util.ml4
-rw-r--r--src/util.mli2
-rw-r--r--test/util_test.ml7
3 files changed, 8 insertions, 5 deletions
diff --git a/src/util.ml b/src/util.ml
index 141d25b..f8c3c27 100644
--- a/src/util.ml
+++ b/src/util.ml
@@ -7,8 +7,8 @@ let find_xml_child name xml =
| _ -> false
in
match xml with
- | Xml.Element (_, _, children) -> List.find find_aux children
- | Xml.PCData _ -> raise Not_found
+ | Xml.Element (_, _, children) -> Vylist.find find_aux children
+ | Xml.PCData _ -> None
(* Dirty pretty printer *)
let string_of_path path =
diff --git a/src/util.mli b/src/util.mli
index f3699d3..ec0bb73 100644
--- a/src/util.mli
+++ b/src/util.mli
@@ -1,3 +1,3 @@
-val find_xml_child : string -> Xml.xml -> Xml.xml
+val find_xml_child : string -> Xml.xml -> Xml.xml option
val string_of_path : string list -> string
diff --git a/test/util_test.ml b/test/util_test.ml
index ecc4b49..3625957 100644
--- a/test/util_test.ml
+++ b/test/util_test.ml
@@ -5,11 +5,14 @@ let test_find_xml_child_existent test_ctxt =
let elem = Xml.Element ("foo", [],
[Xml.Element ("bar", [], []);
Xml.PCData "baz"])
- in assert_equal (Xml.tag (find_xml_child "bar" elem)) "bar"
+ in
+ match (find_xml_child "bar" elem) with
+ | None -> assert_failure "find_xml_child returned None"
+ | Some x -> assert_equal (Xml.tag x) "bar"
let test_find_xml_child_nonexistent test_ctxt =
let elem = Xml.Element ("foo", [], [Xml.Element ("quux", [], [])]) in
- assert_raises Not_found (fun () -> find_xml_child "bar" elem)
+ assert_equal (find_xml_child "bar" elem) None
let test_string_of_path test_ctxt =
let path = ["foo"; "bar"; "baz"] in