Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2099)

Side by Side Diff: test/parse_test.dart

Issue 1142363005: Added .packages, packages/ discovery. (Closed) Base URL: https://github.com/dart-lang/package_config.git@master
Patch Set: Addressed comments. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/all.dart ('k') | test/test_packagemap.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test_all; 5 library test_all;
6 6
7 import "package:package_config/packagemap.dart"; 7 import "package:package_config/packages.dart";
8 import "package:package_config/packages_file.dart" show parse;
8 import "package:test/test.dart"; 9 import "package:test/test.dart";
9 10
10 main() { 11 main() {
11 var base = Uri.parse("file:///one/two/three/packages.map"); 12 var base = Uri.parse("file:///one/two/three/packages.map");
12 test("empty", () { 13 test("empty", () {
13 var packages = Packages.parse(emptySample, base); 14 var packages = doParse(emptySample, base);
14 expect(packages.packageMapping, isEmpty); 15 expect(packages.asMap(), isEmpty);
15 }); 16 });
16 test("comment only", () { 17 test("comment only", () {
17 var packages = Packages.parse(commentOnlySample, base); 18 var packages = doParse(commentOnlySample, base);
18 expect(packages.packageMapping, isEmpty); 19 expect(packages.asMap(), isEmpty);
19 }); 20 });
20 test("empty lines only", () { 21 test("empty lines only", () {
21 var packages = Packages.parse(emptyLinesSample, base); 22 var packages = doParse(emptyLinesSample, base);
22 expect(packages.packageMapping, isEmpty); 23 expect(packages.asMap(), isEmpty);
23 }); 24 });
24 25
25 test("empty lines only", () { 26 test("empty lines only", () {
26 var packages = Packages.parse(emptyLinesSample, base); 27 var packages = doParse(emptyLinesSample, base);
27 expect(packages.packageMapping, isEmpty); 28 expect(packages.asMap(), isEmpty);
28 }); 29 });
29 30
30 test("single", () { 31 test("single", () {
31 var packages = Packages.parse(singleRelativeSample, base); 32 var packages = doParse(singleRelativeSample, base);
32 expect(packages.packageMapping.keys.toList(), equals(["foo"])); 33 expect(packages.packages.toList(), equals(["foo"]));
33 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")), 34 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")),
34 equals(base.resolve("../test/").resolve("bar/baz.dart"))); 35 equals(base.resolve("../test/").resolve("bar/baz.dart")));
35 }); 36 });
36 37
37 test("single no slash", () { 38 test("single no slash", () {
38 var packages = Packages.parse(singleRelativeSampleNoSlash, base); 39 var packages = doParse(singleRelativeSampleNoSlash, base);
39 expect(packages.packageMapping.keys.toList(), equals(["foo"])); 40 expect(packages.packages.toList(), equals(["foo"]));
40 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")), 41 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")),
41 equals(base.resolve("../test/").resolve("bar/baz.dart"))); 42 equals(base.resolve("../test/").resolve("bar/baz.dart")));
42 }); 43 });
43 44
44 test("single no newline", () { 45 test("single no newline", () {
45 var packages = Packages.parse(singleRelativeSampleNoNewline, base); 46 var packages = doParse(singleRelativeSampleNoNewline, base);
46 expect(packages.packageMapping.keys.toList(), equals(["foo"])); 47 expect(packages.packages.toList(), equals(["foo"]));
47 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")), 48 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")),
48 equals(base.resolve("../test/").resolve("bar/baz.dart"))); 49 equals(base.resolve("../test/").resolve("bar/baz.dart")));
49 }); 50 });
50 51
51 test("single absolute", () { 52 test("single absolute", () {
52 var packages = Packages.parse(singleAbsoluteSample, base); 53 var packages = doParse(singleAbsoluteSample, base);
53 expect(packages.packageMapping.keys.toList(), equals(["foo"])); 54 expect(packages.packages.toList(), equals(["foo"]));
54 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")), 55 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")),
55 equals(Uri.parse("http://example.com/some/where/bar/baz.dart"))); 56 equals(Uri.parse("http://example.com/some/where/bar/baz.dart")));
56 }); 57 });
57 58
58 test("multiple", () { 59 test("multiple", () {
59 var packages = Packages.parse(multiRelativeSample, base); 60 var packages = doParse(multiRelativeSample, base);
60 expect( 61 expect(
61 packages.packageMapping.keys.toList()..sort(), equals(["bar", "foo"])); 62 packages.packages.toList()..sort(), equals(["bar", "foo"]));
62 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")), 63 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")),
63 equals(base.resolve("../test/").resolve("bar/baz.dart"))); 64 equals(base.resolve("../test/").resolve("bar/baz.dart")));
64 expect(packages.resolve(Uri.parse("package:bar/foo/baz.dart")), 65 expect(packages.resolve(Uri.parse("package:bar/foo/baz.dart")),
65 equals(base.resolve("../test2/").resolve("foo/baz.dart"))); 66 equals(base.resolve("../test2/").resolve("foo/baz.dart")));
66 }); 67 });
67 68
68 test("dot-dot 1", () { 69 test("dot-dot 1", () {
69 var packages = Packages.parse(singleRelativeSample, base); 70 var packages = doParse(singleRelativeSample, base);
70 expect(packages.packageMapping.keys.toList(), equals(["foo"])); 71 expect(packages.packages.toList(), equals(["foo"]));
71 expect(packages.resolve(Uri.parse("package:foo/qux/../bar/baz.dart")), 72 expect(packages.resolve(Uri.parse("package:foo/qux/../bar/baz.dart")),
72 equals(base.resolve("../test/").resolve("bar/baz.dart"))); 73 equals(base.resolve("../test/").resolve("bar/baz.dart")));
73 }); 74 });
74 75
75 test("dot-dot 2", () { 76 test("dot-dot 2", () {
76 var packages = Packages.parse(singleRelativeSample, base); 77 var packages = doParse(singleRelativeSample, base);
77 expect(packages.packageMapping.keys.toList(), equals(["foo"])); 78 expect(packages.packages.toList(), equals(["foo"]));
78 expect(packages.resolve(Uri.parse("package:qux/../foo/bar/baz.dart")), 79 expect(packages.resolve(Uri.parse("package:qux/../foo/bar/baz.dart")),
79 equals(base.resolve("../test/").resolve("bar/baz.dart"))); 80 equals(base.resolve("../test/").resolve("bar/baz.dart")));
80 }); 81 });
81 82
82 test("all valid chars", () { 83 test("all valid chars", () {
83 var packages = Packages.parse(allValidCharsSample, base); 84 var packages = doParse(allValidCharsSample, base);
84 expect(packages.packageMapping.keys.toList(), equals([allValidChars])); 85 expect(packages.packages.toList(), equals([allValidChars]));
85 expect(packages.resolve(Uri.parse("package:$allValidChars/bar/baz.dart")), 86 expect(packages.resolve(Uri.parse("package:$allValidChars/bar/baz.dart")),
86 equals(base.resolve("../test/").resolve("bar/baz.dart"))); 87 equals(base.resolve("../test/").resolve("bar/baz.dart")));
87 }); 88 });
88 89
89 test("no escapes", () { 90 test("no escapes", () {
90 expect(() => Packages.parse("x%41x=x", base), throws); 91 expect(() => doParse("x%41x=x", base), throws);
91 }); 92 });
92 93
93 test("not identifiers", () { 94 test("not identifiers", () {
94 expect(() => Packages.parse("1x=x", base), throws); 95 expect(() => doParse("1x=x", base), throws);
95 expect(() => Packages.parse(" x=x", base), throws); 96 expect(() => doParse(" x=x", base), throws);
96 expect(() => Packages.parse("\\x41x=x", base), throws); 97 expect(() => doParse("\\x41x=x", base), throws);
97 expect(() => Packages.parse("x@x=x", base), throws); 98 expect(() => doParse("x@x=x", base), throws);
98 expect(() => Packages.parse("x[x=x", base), throws); 99 expect(() => doParse("x[x=x", base), throws);
99 expect(() => Packages.parse("x`x=x", base), throws); 100 expect(() => doParse("x`x=x", base), throws);
100 expect(() => Packages.parse("x{x=x", base), throws); 101 expect(() => doParse("x{x=x", base), throws);
101 expect(() => Packages.parse("x/x=x", base), throws); 102 expect(() => doParse("x/x=x", base), throws);
102 expect(() => Packages.parse("x:x=x", base), throws); 103 expect(() => doParse("x:x=x", base), throws);
103 }); 104 });
104 105
105 test("same name twice", () { 106 test("same name twice", () {
106 expect(() => Packages.parse(singleRelativeSample * 2, base), throws); 107 expect(() => doParse(singleRelativeSample * 2, base), throws);
107 }); 108 });
108 109
109 for (String invalidSample in invalid) { 110 for (String invalidSample in invalid) {
110 test("invalid '$invalidSample'", () { 111 test("invalid '$invalidSample'", () {
111 var result; 112 var result;
112 try { 113 try {
113 result = Packages.parse(invalidSample, base); 114 result = doParse(invalidSample, base);
114 } on FormatException { 115 } on FormatException {
115 // expected 116 // expected
116 return; 117 return;
117 } 118 }
118 fail("Resolved to $result"); 119 fail("Resolved to $result");
119 }); 120 });
120 } 121 }
121 } 122 }
122 123
124 Packages doParse(String sample, Uri baseUri) {
125 Map<String, Uri> map = parse(sample.codeUnits, baseUri);
126 return new Packages(map);
127 }
128
123 // Valid samples. 129 // Valid samples.
124 var emptySample = ""; 130 var emptySample = "";
125 var commentOnlySample = "# comment only\n"; 131 var commentOnlySample = "# comment only\n";
126 var emptyLinesSample = "\n\n\r\n"; 132 var emptyLinesSample = "\n\n\r\n";
127 var singleRelativeSample = "foo=../test/\n"; 133 var singleRelativeSample = "foo=../test/\n";
128 var singleRelativeSampleNoSlash = "foo=../test\n"; 134 var singleRelativeSampleNoSlash = "foo=../test\n";
129 var singleRelativeSampleNoNewline = "foo=../test/"; 135 var singleRelativeSampleNoNewline = "foo=../test/";
130 var singleAbsoluteSample = "foo=http://example.com/some/where/\n"; 136 var singleAbsoluteSample = "foo=http://example.com/some/where/\n";
131 var multiRelativeSample = "foo=../test/\nbar=../test2/\n"; 137 var multiRelativeSample = "foo=../test/\nbar=../test2/\n";
132 // All valid path segment characters in an URI. 138 // All valid path segment characters in an URI.
133 var allValidChars = 139 var allValidChars =
134 r"$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"; 140 r"$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz";
135 var allValidCharsSample = "${allValidChars.replaceAll('=', '%3D')}=../test/\n"; 141 var allValidCharsSample = "${allValidChars.replaceAll('=', '%3D')}=../test/\n";
136 var allUnreservedChars = 142 var allUnreservedChars =
137 "-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~"; 143 "-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~";
138 144
139 // Invalid samples. 145 // Invalid samples.
140 var invalid = [ 146 var invalid = [
141 "foobar:baz.dart", // no equals 147 "foobar:baz.dart", // no equals
142 ".=../test/", // dot segment 148 ".=../test/", // dot segment
143 "..=../test/", // dot-dot segment 149 "..=../test/", // dot-dot segment
144 "foo/bar=../test/", // 150 "foo/bar=../test/", //
145 "/foo=../test/", // var multiSegmentSample 151 "/foo=../test/", // var multiSegmentSample
146 "?=../test/", // invalid characters in path segment. 152 "?=../test/", // invalid characters in path segment.
147 "[=../test/", // invalid characters in path segment. 153 "[=../test/", // invalid characters in path segment.
148 "x#=../test/", // invalid characters in path segment. 154 "x#=../test/", // invalid characters in path segment.
149 ]; 155 ];
OLDNEW
« no previous file with comments | « test/all.dart ('k') | test/test_packagemap.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698