485 lines
19 KiB
C++
485 lines
19 KiB
C++
#include <iostream>
|
|
|
|
#include "Test/Test.h"
|
|
#include "Support/GlobPattern.h"
|
|
|
|
namespace clice::testing {
|
|
|
|
#define PATDEF(NAME, PAT) \
|
|
const char* PatString_##NAME = PAT; \
|
|
auto Res##NAME = clice::GlobPattern::create(PatString_##NAME, 100); \
|
|
if(!Res##NAME.has_value()) { \
|
|
std::cout << Res##NAME.error() << '\n'; \
|
|
} \
|
|
assert(Res##NAME.has_value()); \
|
|
auto NAME = Res##NAME.value();
|
|
|
|
|
|
TEST(GlobPattern, PattermSema) {
|
|
auto Pat1 = clice::GlobPattern::create("**/****.{c,cc}", 100);
|
|
EXPECT_EQ(Pat1.has_value(), false);
|
|
|
|
auto Pat2 = clice::GlobPattern::create("/foo/bar/baz////aaa.{c,cc}", 100);
|
|
EXPECT_EQ(Pat2.has_value(), false);
|
|
|
|
auto Pat3 = clice::GlobPattern::create("/foo/bar/baz/**////*.{c,cc}", 100);
|
|
EXPECT_EQ(Pat3.has_value(), false);
|
|
}
|
|
|
|
TEST(GlobPattern, Simple) {
|
|
PATDEF(Pat1, "node_modules")
|
|
EXPECT_EQ(Pat1.match("node_modules"), true);
|
|
EXPECT_EQ(Pat1.match("node_module"), false);
|
|
EXPECT_EQ(Pat1.match("/node_modules"), false);
|
|
EXPECT_EQ(Pat1.match("test/node_modules"), false);
|
|
|
|
PATDEF(Pat2, "test.txt")
|
|
EXPECT_EQ(Pat2.match("test.txt"), true);
|
|
EXPECT_EQ(Pat2.match("test?txt"), false);
|
|
EXPECT_EQ(Pat2.match("/text.txt"), false);
|
|
EXPECT_EQ(Pat2.match("test/test.txt"), false);
|
|
|
|
PATDEF(Pat3, "test(.txt")
|
|
EXPECT_EQ(Pat3.match("test(.txt"), true);
|
|
EXPECT_EQ(Pat3.match("test?txt"), false);
|
|
|
|
PATDEF(Pat4, "qunit")
|
|
EXPECT_EQ(Pat4.match("qunit"), true);
|
|
EXPECT_EQ(Pat4.match("qunit.css"), false);
|
|
EXPECT_EQ(Pat4.match("test/qunit"), false);
|
|
|
|
PATDEF(Pat5, "/DNXConsoleApp/**/*.cs")
|
|
EXPECT_EQ(Pat5.match("/DNXConsoleApp/Program.cs"), true);
|
|
EXPECT_EQ(Pat5.match("/DNXConsoleApp/foo/Program.cs"), true);
|
|
}
|
|
|
|
TEST(GlobPattern, DotHidden) {
|
|
PATDEF(Pat1, ".*");
|
|
EXPECT_EQ(Pat1.match(".git"), true);
|
|
EXPECT_EQ(Pat1.match(".hidden.txt"), true);
|
|
EXPECT_EQ(Pat1.match("git"), false);
|
|
EXPECT_EQ(Pat1.match("hidden.txt"), false);
|
|
EXPECT_EQ(Pat1.match("path/.git"), false);
|
|
EXPECT_EQ(Pat1.match("path/.hidden.txt"), false);
|
|
|
|
PATDEF(Pat2, "**/.*");
|
|
EXPECT_EQ(Pat2.match(".git"), true);
|
|
EXPECT_EQ(Pat2.match("/.git"), true);
|
|
EXPECT_EQ(Pat2.match(".hidden.txt"), true);
|
|
EXPECT_EQ(Pat2.match("git"), false);
|
|
EXPECT_EQ(Pat2.match("hidden.txt"), false);
|
|
EXPECT_EQ(Pat2.match("path/.git"), true);
|
|
EXPECT_EQ(Pat2.match("path/.hidden.txt"), true);
|
|
EXPECT_EQ(Pat2.match("/path/.git"), true);
|
|
EXPECT_EQ(Pat2.match("/path/.hidden.txt"), true);
|
|
EXPECT_EQ(Pat2.match("path/git"), false);
|
|
EXPECT_EQ(Pat2.match("pat.h/hidden.txt"), false);
|
|
|
|
PATDEF(Pat3, "._*");
|
|
EXPECT_EQ(Pat3.match("._git"), true);
|
|
EXPECT_EQ(Pat3.match("._hidden.txt"), true);
|
|
EXPECT_EQ(Pat3.match("git"), false);
|
|
EXPECT_EQ(Pat3.match("hidden.txt"), false);
|
|
EXPECT_EQ(Pat3.match("path/._git"), false);
|
|
EXPECT_EQ(Pat3.match("path/._hidden.txt"), false);
|
|
|
|
PATDEF(Pat4, "**/._*");
|
|
EXPECT_EQ(Pat4.match("._git"), true);
|
|
EXPECT_EQ(Pat4.match("._hidden.txt"), true);
|
|
EXPECT_EQ(Pat4.match("git"), false);
|
|
EXPECT_EQ(Pat4.match("hidden._txt"), false);
|
|
EXPECT_EQ(Pat4.match("path/._git"), true);
|
|
EXPECT_EQ(Pat4.match("path/._hidden.txt"), true);
|
|
EXPECT_EQ(Pat4.match("/path/._git"), true);
|
|
EXPECT_EQ(Pat4.match("/path/._hidden.txt"), true);
|
|
EXPECT_EQ(Pat4.match("path/git"), false);
|
|
EXPECT_EQ(Pat4.match("pat.h/hidden._txt"), false);
|
|
}
|
|
|
|
TEST(GlobPattern, EscapeCharacter) {
|
|
PATDEF(Pat1, R"(\*star)")
|
|
EXPECT_EQ(Pat1.match("*star"), true);
|
|
|
|
PATDEF(Pat2, R"(\{\*\})")
|
|
EXPECT_EQ(Pat2.match("{*}"), true);
|
|
}
|
|
|
|
TEST(GlobPattern, BracketExpr) {
|
|
PATDEF(Pat1, R"([a-zA-Z\]])")
|
|
EXPECT_EQ(Pat1.match(R"(])"), true);
|
|
EXPECT_EQ(Pat1.match(R"([)"), false);
|
|
EXPECT_EQ(Pat1.match(R"(s)"), true);
|
|
EXPECT_EQ(Pat1.match(R"(S)"), true);
|
|
EXPECT_EQ(Pat1.match(R"(0)"), false);
|
|
|
|
PATDEF(Pat2, R"([\^a-zA-Z""\\])")
|
|
EXPECT_EQ(Pat2.match(R"(")"), true);
|
|
EXPECT_EQ(Pat2.match(R"(^)"), true);
|
|
EXPECT_EQ(Pat2.match(R"(\)"), true);
|
|
EXPECT_EQ(Pat2.match(R"(")"), true);
|
|
EXPECT_EQ(Pat2.match(R"(x)"), true);
|
|
EXPECT_EQ(Pat2.match(R"(X)"), true);
|
|
EXPECT_EQ(Pat2.match(R"(0)"), false);
|
|
|
|
PATDEF(Pat3, R"([!0-9a-fA-F\-+\*])")
|
|
EXPECT_EQ(Pat3.match("1"), false);
|
|
EXPECT_EQ(Pat3.match("*"), false);
|
|
EXPECT_EQ(Pat3.match("s"), true);
|
|
EXPECT_EQ(Pat3.match("S"), true);
|
|
EXPECT_EQ(Pat3.match("H"), true);
|
|
EXPECT_EQ(Pat3.match("]"), true);
|
|
|
|
PATDEF(Pat4, R"([^\^0-9a-fA-F\-+\*])")
|
|
EXPECT_EQ(Pat4.match("1"), false);
|
|
EXPECT_EQ(Pat4.match("*"), false);
|
|
EXPECT_EQ(Pat4.match("^"), false);
|
|
EXPECT_EQ(Pat4.match("s"), true);
|
|
EXPECT_EQ(Pat4.match("S"), true);
|
|
EXPECT_EQ(Pat4.match("H"), true);
|
|
EXPECT_EQ(Pat4.match("]"), true);
|
|
|
|
PATDEF(Pat5, R"([\*-\^])")
|
|
EXPECT_EQ(Pat5.match("*"), true);
|
|
EXPECT_EQ(Pat5.match("a"), false);
|
|
EXPECT_EQ(Pat5.match("z"), false);
|
|
EXPECT_EQ(Pat5.match("A"), true);
|
|
EXPECT_EQ(Pat5.match("Z"), true);
|
|
EXPECT_EQ(Pat5.match("\\"), true);
|
|
EXPECT_EQ(Pat5.match("^"), true);
|
|
EXPECT_EQ(Pat5.match("-"), true);
|
|
|
|
PATDEF(Pat6, "foo.[^0-9]")
|
|
EXPECT_EQ(Pat6.match("foo.5"), false);
|
|
EXPECT_EQ(Pat6.match("foo.8"), false);
|
|
EXPECT_EQ(Pat6.match("bar.5"), false);
|
|
EXPECT_EQ(Pat6.match("foo.f"), true);
|
|
|
|
PATDEF(Pat7, "foo.[!0-9]")
|
|
EXPECT_EQ(Pat7.match("foo.5"), false);
|
|
EXPECT_EQ(Pat7.match("foo.8"), false);
|
|
EXPECT_EQ(Pat7.match("bar.5"), false);
|
|
EXPECT_EQ(Pat7.match("foo.f"), true);
|
|
|
|
PATDEF(Pat8, "foo.[0!^*?]")
|
|
EXPECT_EQ(Pat8.match("foo.5"), false);
|
|
EXPECT_EQ(Pat8.match("foo.8"), false);
|
|
EXPECT_EQ(Pat8.match("foo.0"), true);
|
|
EXPECT_EQ(Pat8.match("foo.!"), true);
|
|
EXPECT_EQ(Pat8.match("foo.^"), true);
|
|
EXPECT_EQ(Pat8.match("foo.*"), true);
|
|
EXPECT_EQ(Pat8.match("foo.?"), true);
|
|
|
|
PATDEF(Pat9, "foo[/]bar")
|
|
EXPECT_EQ(Pat9.match("foo/bar"), false);
|
|
|
|
PATDEF(Pat10, "foo.[[]")
|
|
EXPECT_EQ(Pat10.match("foo.["), true);
|
|
|
|
PATDEF(Pat11, "foo.[]]")
|
|
EXPECT_EQ(Pat11.match("foo.]"), true);
|
|
|
|
PATDEF(Pat12, "foo.[][!]")
|
|
EXPECT_EQ(Pat12.match("foo.]"), true);
|
|
EXPECT_EQ(Pat12.match("foo.["), true);
|
|
EXPECT_EQ(Pat12.match("foo.!"), true);
|
|
|
|
PATDEF(Pat13, "foo.[]-]")
|
|
EXPECT_EQ(Pat13.match("foo.]"), true);
|
|
EXPECT_EQ(Pat13.match("foo.-"), true);
|
|
|
|
PATDEF(Pat14, "foo.[0-9]")
|
|
EXPECT_EQ(Pat14.match("foo.5"), true);
|
|
EXPECT_EQ(Pat14.match("foo.8"), true);
|
|
EXPECT_EQ(Pat14.match("bar.5"), false);
|
|
EXPECT_EQ(Pat14.match("foo.f"), false);
|
|
|
|
}
|
|
|
|
TEST(GlobPattern, BraceExpr) {
|
|
PATDEF(Pat1, "*foo[0-9a-z].{c,cpp,cppm,?pp}")
|
|
EXPECT_EQ(Pat1.match("foo1.cc"), false);
|
|
EXPECT_EQ(Pat1.match("foo2.cpp"), true);
|
|
EXPECT_EQ(Pat1.match("foo3.cppm"), true);
|
|
EXPECT_EQ(Pat1.match("foot.cppm"), true);
|
|
EXPECT_EQ(Pat1.match("foot.hpp"), true);
|
|
EXPECT_EQ(Pat1.match("foot.app"), true);
|
|
EXPECT_EQ(Pat1.match("fooD.cppm"), false);
|
|
EXPECT_EQ(Pat1.match("BarfooD.cppm"), false);
|
|
EXPECT_EQ(Pat1.match("foofooD.cppm"), false);
|
|
|
|
PATDEF(Pat2, "proj/{build*,include,src}/*.{cc,cpp,h,hpp}")
|
|
EXPECT_EQ(Pat2.match("proj/include/foo.cc"), true);
|
|
EXPECT_EQ(Pat2.match("proj/include/bar.cpp"), true);
|
|
EXPECT_EQ(Pat2.match("proj/include/xxx/yyy/zzz/foo.cc"), false);
|
|
EXPECT_EQ(Pat2.match("proj/build-yyy/foo.h"), true);
|
|
EXPECT_EQ(Pat2.match("proj/build-xxx/foo.cpp"), true);
|
|
EXPECT_EQ(Pat2.match("proj/build/foo.cpp"), true);
|
|
EXPECT_EQ(Pat2.match("proj/build-xxx/xxx/yyy/zzz/foo.cpp"), false);
|
|
|
|
PATDEF(Pat3, "*.{html,js}")
|
|
EXPECT_EQ(Pat3.match("foo.js"), true);
|
|
EXPECT_EQ(Pat3.match("foo.html"), true);
|
|
EXPECT_EQ(Pat3.match("folder/foo.js"), false);
|
|
EXPECT_EQ(Pat3.match("/node_modules/foo.js"), false);
|
|
EXPECT_EQ(Pat3.match("foo.jss"), false);
|
|
EXPECT_EQ(Pat3.match("some.js/test"), false);
|
|
|
|
PATDEF(Pat4, "*.{html}")
|
|
EXPECT_EQ(Pat4.match("foo.html"), true);
|
|
EXPECT_EQ(Pat4.match("foo.js"), false);
|
|
EXPECT_EQ(Pat4.match("folder/foo.js"), false);
|
|
EXPECT_EQ(Pat4.match("/node_modules/foo.js"), false);
|
|
EXPECT_EQ(Pat4.match("foo.jss"), false);
|
|
EXPECT_EQ(Pat4.match("some.js/test"), false);
|
|
|
|
PATDEF(Pat5, "{node_modules,testing}")
|
|
EXPECT_EQ(Pat5.match("node_modules"), true);
|
|
EXPECT_EQ(Pat5.match("testing"), true);
|
|
EXPECT_EQ(Pat5.match("node_module"), false);
|
|
EXPECT_EQ(Pat5.match("dtesting"), false);
|
|
|
|
PATDEF(Pat6, "**/{foo,bar}")
|
|
EXPECT_EQ(Pat6.match("foo"), true);
|
|
EXPECT_EQ(Pat6.match("bar"), true);
|
|
EXPECT_EQ(Pat6.match("test/foo"), true);
|
|
EXPECT_EQ(Pat6.match("test/bar"), true);
|
|
EXPECT_EQ(Pat6.match("other/more/foo"), true);
|
|
EXPECT_EQ(Pat6.match("other/more/bar"), true);
|
|
EXPECT_EQ(Pat6.match("/foo"), true);
|
|
EXPECT_EQ(Pat6.match("/bar"), true);
|
|
EXPECT_EQ(Pat6.match("/test/foo"), true);
|
|
EXPECT_EQ(Pat6.match("/test/bar"), true);
|
|
EXPECT_EQ(Pat6.match("/other/more/foo"), true);
|
|
EXPECT_EQ(Pat6.match("/other/more/bar"), true);
|
|
|
|
PATDEF(Pat7, "{foo,bar}/**")
|
|
EXPECT_EQ(Pat7.match("foo"), true);
|
|
EXPECT_EQ(Pat7.match("bar"), true);
|
|
EXPECT_EQ(Pat7.match("bar/"), true);
|
|
EXPECT_EQ(Pat7.match("foo/test"), true);
|
|
EXPECT_EQ(Pat7.match("bar/test"), true);
|
|
EXPECT_EQ(Pat7.match("bar/test/"), true);
|
|
EXPECT_EQ(Pat7.match("foo/other/more"), true);
|
|
EXPECT_EQ(Pat7.match("bar/other/more"), true);
|
|
EXPECT_EQ(Pat7.match("bar/other/more/"), true);
|
|
|
|
PATDEF(Pat8, "{**/*.d.ts,**/*.js}")
|
|
EXPECT_EQ(Pat8.match("foo.js"), true);
|
|
EXPECT_EQ(Pat8.match("testing/foo.js"), true);
|
|
EXPECT_EQ(Pat8.match("/testing/foo.js"), true);
|
|
EXPECT_EQ(Pat8.match("foo.d.ts"), true);
|
|
EXPECT_EQ(Pat8.match("testing/foo.d.ts"), true);
|
|
EXPECT_EQ(Pat8.match("/testing/foo.d.ts"), true);
|
|
EXPECT_EQ(Pat8.match("foo.d"), false);
|
|
EXPECT_EQ(Pat8.match("testing/foo.d"), false);
|
|
EXPECT_EQ(Pat8.match("/testing/foo.d"), false);
|
|
|
|
PATDEF(Pat9, "{**/*.d.ts,**/*.js,path/simple.jgs}")
|
|
EXPECT_EQ(Pat9.match("foo.js"), true);
|
|
EXPECT_EQ(Pat9.match("testing/foo.js"), true);
|
|
EXPECT_EQ(Pat9.match("/testing/foo.js"), true);
|
|
EXPECT_EQ(Pat9.match("path/simple.jgs"), true);
|
|
EXPECT_EQ(Pat9.match("/path/simple.jgs"), false);
|
|
|
|
PATDEF(Pat10, "{**/*.d.ts,**/*.js,foo.[0-9]}")
|
|
EXPECT_EQ(Pat10.match("foo.5"), true);
|
|
EXPECT_EQ(Pat10.match("foo.8"), true);
|
|
EXPECT_EQ(Pat10.match("bar.5"), false);
|
|
EXPECT_EQ(Pat10.match("foo.f"), false);
|
|
EXPECT_EQ(Pat10.match("foo.js"), true);
|
|
|
|
PATDEF(Pat11, "prefix/{**/*.d.ts,**/*.js,foo.[0-9]}")
|
|
EXPECT_EQ(Pat11.match("prefix/foo.5"), true);
|
|
EXPECT_EQ(Pat11.match("prefix/foo.8"), true);
|
|
EXPECT_EQ(Pat11.match("prefix/bar.5"), false);
|
|
EXPECT_EQ(Pat11.match("prefix/foo.f"), false);
|
|
EXPECT_EQ(Pat11.match("prefix/foo.js"), true);
|
|
}
|
|
|
|
TEST(GlobPattern, WildGlob) {
|
|
PATDEF(Pat1, "**/*")
|
|
EXPECT_EQ(Pat1.match("foo"), true);
|
|
EXPECT_EQ(Pat1.match("foo/bar/baz"), true);
|
|
|
|
PATDEF(Pat2, "**/[0-9]*")
|
|
EXPECT_EQ(Pat2.match("114514foo"), true);
|
|
EXPECT_EQ(Pat2.match("foo/bar/baz/xxx/yyy/zzz"), false);
|
|
EXPECT_EQ(Pat2.match("foo/bar/baz/xxx/yyy/zzz114514"), false);
|
|
EXPECT_EQ(Pat2.match("foo/bar/baz/xxx/yyy/114514"), true);
|
|
EXPECT_EQ(Pat2.match("foo/bar/baz/xxx/yyy/114514zzz"), true);
|
|
|
|
PATDEF(Pat3, "**/*[0-9]")
|
|
EXPECT_EQ(Pat3.match("foo5"), true);
|
|
EXPECT_EQ(Pat3.match("foo/bar/baz/xxx/yyy/zzz"), false);
|
|
EXPECT_EQ(Pat3.match("foo/bar/baz/xxx/yyy/zzz114514"), true);
|
|
|
|
PATDEF(Pat4, "**/include/test/*.{cc,hh,c,h,cpp,hpp}")
|
|
EXPECT_EQ(Pat4.match("include/test/aaa.cc"), true);
|
|
EXPECT_EQ(Pat4.match("/include/test/aaa.cc"), true);
|
|
EXPECT_EQ(Pat4.match("xxx/yyy/include/test/aaa.cc"), true);
|
|
EXPECT_EQ(Pat4.match("include/foo/bar/baz/include/test/bbb.hh"), true);
|
|
EXPECT_EQ(Pat4.match("include/include/include/include/include/test/bbb.hpp"), true);
|
|
|
|
PATDEF(Pat5, "**include/test/*.{cc,hh,c,h,cpp,hpp}")
|
|
EXPECT_EQ(Pat5.match("include/test/fff.hpp"), true);
|
|
EXPECT_EQ(Pat5.match("xxx-yyy-include/test/fff.hpp"), true);
|
|
EXPECT_EQ(Pat5.match("xxx-yyy-include/test/.hpp"), true);
|
|
EXPECT_EQ(Pat5.match("/include/test/aaa.cc"), true);
|
|
EXPECT_EQ(Pat5.match("include/foo/bar/baz/include/test/bbb.hh"), true);
|
|
|
|
PATDEF(Pat6, "**/*foo.{c,cpp}")
|
|
EXPECT_EQ(Pat6.match("bar/foo.cpp"), true);
|
|
EXPECT_EQ(Pat6.match("bar/barfoo.cpp"), true);
|
|
EXPECT_EQ(Pat6.match("/foofoo.cpp"), true);
|
|
EXPECT_EQ(Pat6.match("foo/foo/foo/foo/foofoo.cpp"), true);
|
|
EXPECT_EQ(Pat6.match("foofoo.cpp"), true);
|
|
EXPECT_EQ(Pat6.match("barfoo.cpp"), true);
|
|
EXPECT_EQ(Pat6.match("foo.cpp"), true);
|
|
|
|
// Boundary test of `**`
|
|
PATDEF(Pat7, "**")
|
|
EXPECT_EQ(Pat7.match("foo"), true);
|
|
EXPECT_EQ(Pat7.match("foo/bar/baz"), true);
|
|
|
|
PATDEF(Pat8, "x/**")
|
|
EXPECT_EQ(Pat8.match("x/"), true);
|
|
EXPECT_EQ(Pat8.match("x/foo/bar/baz"), true);
|
|
EXPECT_EQ(Pat8.match("x"), true);
|
|
|
|
PATDEF(Pat9, "**/x")
|
|
EXPECT_EQ(Pat9.match("x"), true);
|
|
EXPECT_EQ(Pat9.match("/x"), true);
|
|
EXPECT_EQ(Pat9.match("/x/x/x/x/x"), true);
|
|
|
|
PATDEF(Pat10, "**/*")
|
|
EXPECT_EQ(Pat10.match("foo"), true);
|
|
EXPECT_EQ(Pat10.match("foo/bar"), true);
|
|
EXPECT_EQ(Pat10.match("foo/bar/baz"), true);
|
|
|
|
PATDEF(Pat11, "**/*.{cc,cpp}")
|
|
EXPECT_EQ(Pat11.match("foo/bar/baz.cc"), true);
|
|
EXPECT_EQ(Pat11.match("foo/foo/foo.cpp"), true);
|
|
EXPECT_EQ(Pat11.match("foo/bar/.cc"), true);
|
|
|
|
PATDEF(Pat12, "**/*?.{cc,cpp}")
|
|
EXPECT_EQ(Pat12.match("foo/bar/baz/xxx/yyy/zzz/aaa.cc"), true);
|
|
EXPECT_EQ(Pat12.match("foo/bar/baz/xxx/yyy/zzz/a.cc"), true);
|
|
EXPECT_EQ(Pat12.match("foo/bar/baz/xxx/yyy/zzz/.cc"), false);
|
|
|
|
PATDEF(Pat13, "**/?*.{cc,cpp}")
|
|
EXPECT_EQ(Pat13.match("foo/bar/baz/xxx/yyy/zzz/aaa.cc"), true);
|
|
EXPECT_EQ(Pat13.match("foo/bar/baz/xxx/yyy/zzz/a.cc"), true);
|
|
EXPECT_EQ(Pat13.match("foo/bar/baz/xxx/yyy/zzz/.cc"), false);
|
|
|
|
PATDEF(Pat14, "**/*[0-9]")
|
|
EXPECT_EQ(Pat14.match("foo5"), true);
|
|
EXPECT_EQ(Pat14.match("foo/bar/baz/xxx/yyy/zzz"), false);
|
|
EXPECT_EQ(Pat14.match("foo/bar/baz/xxx/yyy/zzz114514"), true);
|
|
|
|
PATDEF(Pat15, "**/*")
|
|
EXPECT_EQ(Pat15.match("foo"), true);
|
|
EXPECT_EQ(Pat15.match("foo/bar/baz"), true);
|
|
|
|
PATDEF(Pat16, "**/*.js")
|
|
EXPECT_EQ(Pat16.match("foo.js"), true);
|
|
EXPECT_EQ(Pat16.match("/foo.js"), true);
|
|
EXPECT_EQ(Pat16.match("folder/foo.js"), true);
|
|
EXPECT_EQ(Pat16.match("/node_modules/foo.js"), true);
|
|
EXPECT_EQ(Pat16.match("foo.jss"), false);
|
|
EXPECT_EQ(Pat16.match("some.js/test"), false);
|
|
EXPECT_EQ(Pat16.match("/some.js/test"), false);
|
|
|
|
PATDEF(Pat17, "**/project.json")
|
|
EXPECT_EQ(Pat17.match("project.json"), true);
|
|
EXPECT_EQ(Pat17.match("/project.json"), true);
|
|
EXPECT_EQ(Pat17.match("some/folder/project.json"), true);
|
|
EXPECT_EQ(Pat17.match("/some/folder/project.json"), true);
|
|
EXPECT_EQ(Pat17.match("some/folder/file_project.json"), false);
|
|
EXPECT_EQ(Pat17.match("some/folder/fileproject.json"), false);
|
|
EXPECT_EQ(Pat17.match("some/rrproject.json"), false);
|
|
|
|
PATDEF(Pat18, "test/**")
|
|
EXPECT_EQ(Pat18.match("test"), true);
|
|
EXPECT_EQ(Pat18.match("test/foo"), true);
|
|
EXPECT_EQ(Pat18.match("test/foo/"), true);
|
|
EXPECT_EQ(Pat18.match("test/foo.js"), true);
|
|
EXPECT_EQ(Pat18.match("test/other/foo.js"), true);
|
|
EXPECT_EQ(Pat18.match("est/other/foo.js"), false);
|
|
|
|
PATDEF(Pat19, "**")
|
|
EXPECT_EQ(Pat19.match("/"), true);
|
|
EXPECT_EQ(Pat19.match("foo.js"), true);
|
|
EXPECT_EQ(Pat19.match("folder/foo.js"), true);
|
|
EXPECT_EQ(Pat19.match("folder/foo/"), true);
|
|
EXPECT_EQ(Pat19.match("/node_modules/foo.js"), true);
|
|
EXPECT_EQ(Pat19.match("foo.jss"), true);
|
|
EXPECT_EQ(Pat19.match("some.js/test"), true);
|
|
|
|
PATDEF(Pat20, "test/**/*.js")
|
|
EXPECT_EQ(Pat20.match("test/foo.js"), true);
|
|
EXPECT_EQ(Pat20.match("test/other/foo.js"), true);
|
|
EXPECT_EQ(Pat20.match("test/other/more/foo.js"), true);
|
|
EXPECT_EQ(Pat20.match("test/foo.ts"), false);
|
|
EXPECT_EQ(Pat20.match("test/other/foo.ts"), false);
|
|
EXPECT_EQ(Pat20.match("test/other/more/foo.ts"), false);
|
|
|
|
PATDEF(Pat21, "**/**/*.js")
|
|
EXPECT_EQ(Pat21.match("foo.js"), true);
|
|
EXPECT_EQ(Pat21.match("/foo.js"), true);
|
|
EXPECT_EQ(Pat21.match("folder/foo.js"), true);
|
|
EXPECT_EQ(Pat21.match("/node_modules/foo.js"), true);
|
|
EXPECT_EQ(Pat21.match("foo.jss"), false);
|
|
EXPECT_EQ(Pat21.match("some.js/test"), false);
|
|
|
|
PATDEF(Pat22, "**/node_modules/**/*.js")
|
|
EXPECT_EQ(Pat22.match("foo.js"), false);
|
|
EXPECT_EQ(Pat22.match("folder/foo.js"), false);
|
|
EXPECT_EQ(Pat22.match("node_modules/foo.js"), true);
|
|
EXPECT_EQ(Pat22.match("/node_modules/foo.js"), true);
|
|
EXPECT_EQ(Pat22.match("node_modules/some/folder/foo.js"), true);
|
|
EXPECT_EQ(Pat22.match("/node_modules/some/folder/foo.js"), true);
|
|
EXPECT_EQ(Pat22.match("node_modules/some/folder/foo.ts"), false);
|
|
EXPECT_EQ(Pat22.match("foo.jss"), false);
|
|
EXPECT_EQ(Pat22.match("some.js/test"), false);
|
|
|
|
PATDEF(Pat23, "{**/node_modules/**,**/.git/**,**/bower_components/**}")
|
|
EXPECT_EQ(Pat23.match("node_modules"), true);
|
|
EXPECT_EQ(Pat23.match("/node_modules"), true);
|
|
EXPECT_EQ(Pat23.match("/node_modules/more"), true);
|
|
EXPECT_EQ(Pat23.match("some/test/node_modules"), true);
|
|
EXPECT_EQ(Pat23.match("/some/test/node_modules"), true);
|
|
EXPECT_EQ(Pat23.match("bower_components"), true);
|
|
EXPECT_EQ(Pat23.match("bower_components/more"), true);
|
|
EXPECT_EQ(Pat23.match("/bower_components"), true);
|
|
EXPECT_EQ(Pat23.match("some/test/bower_components"), true);
|
|
EXPECT_EQ(Pat23.match("/some/test/bower_components"), true);
|
|
EXPECT_EQ(Pat23.match(".git"), true);
|
|
EXPECT_EQ(Pat23.match("/.git"), true);
|
|
EXPECT_EQ(Pat23.match("some/test/.git"), true);
|
|
EXPECT_EQ(Pat23.match("/some/test/.git"), true);
|
|
EXPECT_EQ(Pat23.match("tempting"), false);
|
|
EXPECT_EQ(Pat23.match("/tempting"), false);
|
|
EXPECT_EQ(Pat23.match("some/test/tempting"), false);
|
|
EXPECT_EQ(Pat23.match("/some/test/tempting"), false);
|
|
|
|
PATDEF(Pat24, "{**/package.json,**/project.json}")
|
|
EXPECT_EQ(Pat24.match("package.json"), true);
|
|
EXPECT_EQ(Pat24.match("/package.json"), true);
|
|
EXPECT_EQ(Pat24.match("xpackage.json"), false);
|
|
EXPECT_EQ(Pat24.match("/xpackage.json"), false);
|
|
|
|
PATDEF(Pat25, "some/**/*.js")
|
|
EXPECT_EQ(Pat25.match("some/foo.js"), true);
|
|
EXPECT_EQ(Pat25.match("some/folder/foo.js"), true);
|
|
EXPECT_EQ(Pat25.match("something/foo.js"), false);
|
|
EXPECT_EQ(Pat25.match("something/folder/foo.js"), false);
|
|
|
|
PATDEF(Pat26, "some/**/*")
|
|
EXPECT_EQ(Pat26.match("some/foo.js"), true);
|
|
EXPECT_EQ(Pat26.match("some/folder/foo.js"), true);
|
|
EXPECT_EQ(Pat26.match("something/foo.js"), false);
|
|
EXPECT_EQ(Pat26.match("something/folder/foo.js"), false);
|
|
}
|
|
|
|
} // namespace clice::testing
|