Fix glob match and parse tests for Windows and URL styles. R=rnystrom@google.com BUG=20788, 20789 Review URL: https://codereview.chromium.org//533323003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39922 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkgs/glob/test/match_test.dart b/pkgs/glob/test/match_test.dart index eeb307d..ad9dcf3 100644 --- a/pkgs/glob/test/match_test.dart +++ b/pkgs/glob/test/match_test.dart
@@ -6,8 +6,12 @@ import 'package:path/path.dart' as p; import 'package:unittest/unittest.dart'; -const ASCII_WITHOUT_SLASH = "\t\n\r !\"#\$%&'()*+`-.0123456789:;<=>?@ABCDEFGHIJ" - "KLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; +const RAW_ASCII_WITHOUT_SLASH = "\t\n\r !\"#\$%&'()*+`-.0123456789:;<=>?@ABCDEF" + "GHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"; + +// URL-encode the path for a URL context. +final asciiWithoutSlash = p.style == p.Style.url ? + Uri.encodeFull(RAW_ASCII_WITHOUT_SLASH) : RAW_ASCII_WITHOUT_SLASH; void main() { test("literals match exactly", () { @@ -16,10 +20,15 @@ expect("foo*", contains(new Glob(r"foo\*"))); }); + test("backslashes match nothing on Windows", () { + expect(r"foo\bar", + isNot(contains(new Glob(r"foo\\bar", context: p.windows)))); + }); + group("star", () { test("matches non-separator characters", () { var glob = new Glob("*"); - expect(ASCII_WITHOUT_SLASH, contains(glob)); + expect(asciiWithoutSlash, contains(glob)); }); test("matches the empty string", () { @@ -36,7 +45,7 @@ group("double star", () { test("matches non-separator characters", () { var glob = new Glob("**"); - expect(ASCII_WITHOUT_SLASH, contains(glob)); + expect(asciiWithoutSlash, contains(glob)); }); test("matches the empty string", () { @@ -65,7 +74,8 @@ group("any char", () { test("matches any non-separator character", () { var glob = new Glob("foo?"); - for (var char in ASCII_WITHOUT_SLASH.split('')) { + for (var char in RAW_ASCII_WITHOUT_SLASH.split('')) { + if (p.style == p.Style.url) char = Uri.encodeFull(char); expect("foo$char", contains(glob)); } });
diff --git a/pkgs/glob/test/parse_test.dart b/pkgs/glob/test/parse_test.dart index 5ea3f05..fcaa5b4 100644 --- a/pkgs/glob/test/parse_test.dart +++ b/pkgs/glob/test/parse_test.dart
@@ -3,11 +3,15 @@ // BSD-style license that can be found in the LICENSE file. import 'package:glob/glob.dart'; +import 'package:path/path.dart' as p; import 'package:unittest/unittest.dart'; void main() { test("supports backslash-escaped characters", () { expect(r"\*[]{,}?()", contains(new Glob(r"\\\*\[\]\{\,\}\?\(\)"))); + if (p.style != p.Style.windows) { + expect(r"foo\bar", contains(new Glob(r"foo\\bar"))); + } }); test("disallows an empty glob", () {