let success = ref true let ok desc a b = print_string "Expecting: "; print_string (string_of_bool a); print_string " \t"; if a = b then (print_endline (String.concat ": " ["OK.... ";desc]); true) else begin print_endline (String.concat ": " ["FAILED "; desc]); success.contents <- false; false end let _ = ok "Simple directory selector" true (Saferet.program "Test" [("Test","testres/")] "test") let _ = ok "Bad selector" false (try (Saferet.program "BadSelector" [("Test","testres/")] "test") with Saferet.Bad_selector -> false) let _ = ok "Unsafe relative path" false (Saferet.program "Test" [("Test","testres/")] "testres/../testres/test") let _ = ok "Unsafe path" false (Saferet.program "Test" [("Test","testres/")] "testres/test") let _ = ok "Invalid null byte after filename" false (Saferet.program "Test" [("Test","testres/")] "test\x00") let _ = ok "Invalid null byte after directory" false (Saferet.program "Test" [("Test","testres/\x00")] "test") let _ = ok "Invalid byte after directory 2" false (Saferet.program "Test" [("Test","testres/\x0a")] "test") let _ = ok "Multiple valid selectors for same directory" true (Saferet.program "Other" [("Test","testres/");("Other","testres/")] "test") let _ = ok "Multiple valid selectors for same directory 2" true (Saferet.program "Test" [("Test","testres/");("Other","testres/")] "test") let _ = if !success then begin print_endline "OK all tests passed"; exit 0 end else begin print_endline "FAILURE, there were test failures"; exit 1 end .