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

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

Powered by Google App Engine
This is Rietveld 408576698