This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
258
unikernel/duniverse/ocaml-re/lib_test/expect/test_glob.ml
Normal file
258
unikernel/duniverse/ocaml-re/lib_test/expect/test_glob.ml
Normal file
|
|
@ -0,0 +1,258 @@
|
|||
open Import
|
||||
|
||||
let glob ?match_backslashes ?expand_braces ?anchored ?pathname ?period re s =
|
||||
let re =
|
||||
Re.Glob.glob ?match_backslashes ?expand_braces ?anchored ?pathname ?period re
|
||||
|> Re.compile
|
||||
in
|
||||
Format.printf "%b@." (Re.execp re s)
|
||||
;;
|
||||
|
||||
let%expect_test "glob" =
|
||||
glob "foo*" "foobar";
|
||||
[%expect {| true |}];
|
||||
glob "fo?bar" "fobar";
|
||||
[%expect {| false |}];
|
||||
glob "fo?bar" "foobar";
|
||||
[%expect {| true |}];
|
||||
glob "fo?bar" "foo0bar";
|
||||
[%expect {| false |}];
|
||||
glob "?oobar" "foobar";
|
||||
[%expect {| true |}];
|
||||
glob "*bar" "foobar";
|
||||
[%expect {| true |}];
|
||||
glob "\\*bar" "foobar";
|
||||
[%expect {| false |}];
|
||||
glob "\\*bar" "*bar";
|
||||
[%expect {| true |}];
|
||||
glob "[ab]foo" "afoo";
|
||||
[%expect {| true |}];
|
||||
glob "[ab]foo" "bfoo";
|
||||
[%expect {| true |}];
|
||||
glob "[ab]foo" "cfoo";
|
||||
[%expect {| false |}];
|
||||
glob "c[ab]foo" "cabfoo";
|
||||
[%expect {| false |}];
|
||||
glob ".foo" ".foo";
|
||||
[%expect {| true |}];
|
||||
glob ".foo" "afoo";
|
||||
[%expect {| false |}];
|
||||
glob "*[.]foo" "a.foo";
|
||||
[%expect {| true |}];
|
||||
glob "*[.]foo" "ba.foo";
|
||||
[%expect {| true |}];
|
||||
glob "*.foo" ".foo";
|
||||
[%expect {| false |}];
|
||||
glob "*[.]foo" ".foo";
|
||||
[%expect {| false |}];
|
||||
glob ~anchored:true "*/foo" "/foo";
|
||||
[%expect {| true |}];
|
||||
glob ~anchored:true "foo/*" "foo/";
|
||||
[%expect {| true |}];
|
||||
glob "/[^f]" "/foo";
|
||||
[%expect {| false |}];
|
||||
glob "/[^f]" "/bar";
|
||||
[%expect {| true |}];
|
||||
glob ~anchored:true "/[^f]" "/bar";
|
||||
[%expect {| false |}];
|
||||
glob ~anchored:true "*" ".bar";
|
||||
[%expect {| false |}];
|
||||
glob "foo[.]bar" "foo.bar";
|
||||
[%expect {| true |}];
|
||||
glob "[.]foo" ".foo";
|
||||
[%expect {| false |}];
|
||||
glob "foo[/]bar" "foo/bar";
|
||||
[%expect {| false |}];
|
||||
glob ~anchored:true "*bar" "foobar";
|
||||
[%expect {| true |}];
|
||||
glob "foo" "foobar";
|
||||
[%expect {| true |}];
|
||||
glob "bar" "foobar";
|
||||
[%expect {| true |}];
|
||||
glob ~anchored:true "foo" "foobar";
|
||||
[%expect {| false |}];
|
||||
glob ~anchored:true "bar" "foobar";
|
||||
[%expect {| false |}];
|
||||
glob "{foo,bar}bar" "foobar";
|
||||
[%expect {| false |}];
|
||||
glob "{foo,bar}bar" "{foo,bar}bar";
|
||||
[%expect {| true |}];
|
||||
glob "foo?bar" "foo/bar";
|
||||
[%expect {| false |}];
|
||||
let pathname = true in
|
||||
let period = true in
|
||||
glob ~pathname ~period "?oobar" ".oobar";
|
||||
[%expect {| false |}];
|
||||
glob ~pathname ~period "?oobar" "/oobar";
|
||||
[%expect {| false |}];
|
||||
glob ~pathname ~period "f?obar" "f/obar";
|
||||
[%expect {| false |}];
|
||||
glob ~pathname ~period "f?obar" "f.obar";
|
||||
[%expect {| true |}];
|
||||
glob ~pathname ~period "f*.bar" "f.bar";
|
||||
[%expect {| true |}];
|
||||
glob ~pathname ~period "f?.bar" "fo.bar";
|
||||
[%expect {| true |}];
|
||||
glob ~pathname ~period "/.bar" "/.bar";
|
||||
[%expect {| true |}];
|
||||
glob ~pathname ~period "*.bar" ".bar";
|
||||
[%expect {| false |}];
|
||||
glob ~pathname ~period "?" ".";
|
||||
[%expect {| false |}];
|
||||
glob ~pathname ~period "/*bar" "/.bar";
|
||||
[%expect {| false |}];
|
||||
glob "?oobar" ".oobar";
|
||||
[%expect {| false |}];
|
||||
glob "?oobar" "/oobar";
|
||||
[%expect {| false |}];
|
||||
let pathname = true in
|
||||
let period = false in
|
||||
glob ~pathname ~period "?oobar" "/oobar";
|
||||
[%expect {| false |}];
|
||||
glob ~pathname ~period "?oobar" ".oobar";
|
||||
[%expect {| true |}];
|
||||
glob ~pathname ~period "f?obar" "f/obar";
|
||||
[%expect {| false |}];
|
||||
glob ~pathname ~period "f?obar" "f.obar";
|
||||
[%expect {| true |}];
|
||||
let pathname = false in
|
||||
let period = false in
|
||||
glob ~pathname ~period "?oobar" ".oobar";
|
||||
[%expect {| true |}];
|
||||
glob ~pathname ~period "?oobar" "/oobar";
|
||||
[%expect {| true |}];
|
||||
glob ~expand_braces:true "{foo,far}bar" "foobar";
|
||||
[%expect {| true |}];
|
||||
glob ~expand_braces:true "{foo,far}bar" "farbar";
|
||||
[%expect {| true |}];
|
||||
glob ~expand_braces:true "{foo,far}bar" "{foo,far}bar";
|
||||
[%expect {| false |}]
|
||||
;;
|
||||
|
||||
let%expect_test "double asterisk" =
|
||||
let glob = glob ~anchored:true in
|
||||
glob "**" "foobar";
|
||||
[%expect {| true |}];
|
||||
glob "**" "foo/bar";
|
||||
[%expect {| true |}];
|
||||
glob "**/bar" "foo/bar";
|
||||
[%expect {| true |}];
|
||||
glob "**/bar" "foo/far/bar";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**" "foo";
|
||||
[%expect {| false |}];
|
||||
glob "foo/**" "foo/bar";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**" "foo/far/bar";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**/bar" "foo/far/bar";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**/bar" "foo/far/oof/bar";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**bar" "foo/far/oofbar";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**bar" "foo/bar";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**bar" "foo/foobar";
|
||||
[%expect {| true |}];
|
||||
glob "/**" "//foo";
|
||||
[%expect {| true |}];
|
||||
glob "/**" "/";
|
||||
[%expect {| true |}];
|
||||
glob "/**" "/x";
|
||||
[%expect {| true |}];
|
||||
glob "**" "foo//bar";
|
||||
[%expect {| true |}];
|
||||
glob "foo/bar/**/*.ml" "foo/bar/baz/foobar.ml";
|
||||
[%expect {| true |}];
|
||||
glob "foo/bar/**/*.ml" "foo/bar/foobar.ml";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**/bar/**/baz" "foo/bar/baz";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**/bar/**/baz" "foo/bar/x/y/z/baz";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**/bar/**/baz" "foo/x/y/z/bar/baz";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**/bar/**/baz" "foo/bar/x/bar/x/baz";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**/bar/**/baz" "foo/bar/../x/baz";
|
||||
[%expect {| false |}];
|
||||
glob "foo/**/bar/**/baz" "foo/bar/./x/baz";
|
||||
[%expect {| false |}];
|
||||
((* Interaction with [~period] *)
|
||||
let glob = glob ~period:true in
|
||||
glob "**" ".foobar";
|
||||
[%expect {| false |}];
|
||||
glob "**" ".foo/bar";
|
||||
[%expect {| false |}];
|
||||
glob "foo/**" "foo/.bar";
|
||||
[%expect {| false |}];
|
||||
glob "**" "foo/.bar/bat";
|
||||
[%expect {| false |}];
|
||||
glob "foo/**/bat" "foo/.bar/bat";
|
||||
[%expect {| false |}];
|
||||
glob "/**/bat" "/foo/.bar/bat";
|
||||
[%expect {| false |}];
|
||||
glob "/**/bat" "/.bar/bat";
|
||||
[%expect {| false |}];
|
||||
glob "/**bat" "/bar/.bat";
|
||||
[%expect {| false |}];
|
||||
glob ".**" ".foobar";
|
||||
[%expect {| true |}];
|
||||
glob ".**" ".foo/bar";
|
||||
[%expect {| true |}];
|
||||
glob "foo/.**" "foo/.bar";
|
||||
[%expect {| true |}]);
|
||||
let glob = glob ~period:false in
|
||||
glob "**" ".foobar";
|
||||
[%expect {| true |}];
|
||||
glob "**" ".foo/bar";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**" "foo/.bar";
|
||||
[%expect {| true |}];
|
||||
glob "**" "foo/.bar/bat";
|
||||
[%expect {| true |}];
|
||||
glob "foo/**/bat" "foo/.bar/bat";
|
||||
[%expect {| true |}];
|
||||
glob "/**/bat" "/foo/.bar/bat";
|
||||
[%expect {| true |}];
|
||||
glob "/**/bat" "/.bar/bat";
|
||||
[%expect {| true |}];
|
||||
glob "/**bat" "/bar/.bat";
|
||||
[%expect {| true |}]
|
||||
;;
|
||||
|
||||
let%expect_test "backslash handling" =
|
||||
let anchored = true in
|
||||
let glob = glob ~anchored in
|
||||
(let glob = glob ~match_backslashes:false in
|
||||
glob "a/b/c" "a\\b/c";
|
||||
[%expect {| false |}];
|
||||
glob "a\\b" "ab";
|
||||
[%expect {| true |}];
|
||||
glob "a/*.ml" "a/b\\c.ml";
|
||||
[%expect {| true |}];
|
||||
glob "a/b/*.ml" "a\\b\\c.ml";
|
||||
[%expect {| false |}];
|
||||
glob "/" "\\";
|
||||
[%expect {| false |}];
|
||||
glob "/?" "\\a";
|
||||
[%expect {| false |}];
|
||||
glob "a/**.ml" "a\\c\\.b.ml";
|
||||
[%expect {| true |}]);
|
||||
let glob = glob ~match_backslashes:true in
|
||||
glob "a/b/c" "a\\b/c";
|
||||
[%expect {| true |}];
|
||||
glob "a\\b" "ab";
|
||||
[%expect {| true |}];
|
||||
glob "a/*.ml" "a/b\\c.ml";
|
||||
[%expect {| false |}];
|
||||
glob "a/b/*.ml" "a\\b\\c.ml";
|
||||
[%expect {| true |}];
|
||||
glob "/" "\\";
|
||||
[%expect {| true |}];
|
||||
glob "/?" "\\a";
|
||||
[%expect {| true |}];
|
||||
glob "a/**.ml" "a\\c\\.b.ml";
|
||||
[%expect {| false |}]
|
||||
;;
|
||||
Loading…
Add table
Add a link
Reference in a new issue