OLD | NEW |
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 package_config.parse_test; | 5 library package_config.parse_test; |
6 | 6 |
7 import "package:package_config/packages.dart"; | 7 import "package:package_config/packages.dart"; |
8 import "package:package_config/packages_file.dart" show parse; | 8 import "package:package_config/packages_file.dart" show parse; |
9 import "package:package_config/src/packages_impl.dart"; | 9 import "package:package_config/src/packages_impl.dart"; |
10 import "package:test/test.dart"; | 10 import "package:test/test.dart"; |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 | 66 |
67 test("single absolute path", () { | 67 test("single absolute path", () { |
68 var packages = doParse(singleAbsolutePathSample, base); | 68 var packages = doParse(singleAbsolutePathSample, base); |
69 expect(packages.packages.toList(), equals(["foo"])); | 69 expect(packages.packages.toList(), equals(["foo"])); |
70 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")), | 70 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")), |
71 equals(base.replace(path: "/test/bar/baz.dart"))); | 71 equals(base.replace(path: "/test/bar/baz.dart"))); |
72 }); | 72 }); |
73 | 73 |
74 test("multiple", () { | 74 test("multiple", () { |
75 var packages = doParse(multiRelativeSample, base); | 75 var packages = doParse(multiRelativeSample, base); |
76 expect( | 76 expect(packages.packages.toList()..sort(), equals(["bar", "foo"])); |
77 packages.packages.toList()..sort(), equals(["bar", "foo"])); | |
78 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")), | 77 expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")), |
79 equals(base.resolve("../test/").resolve("bar/baz.dart"))); | 78 equals(base.resolve("../test/").resolve("bar/baz.dart"))); |
80 expect(packages.resolve(Uri.parse("package:bar/foo/baz.dart")), | 79 expect(packages.resolve(Uri.parse("package:bar/foo/baz.dart")), |
81 equals(base.resolve("../test2/").resolve("foo/baz.dart"))); | 80 equals(base.resolve("../test2/").resolve("foo/baz.dart"))); |
82 }); | 81 }); |
83 | 82 |
84 test("dot-dot 1", () { | 83 test("dot-dot 1", () { |
85 var packages = doParse(singleRelativeSample, base); | 84 var packages = doParse(singleRelativeSample, base); |
86 expect(packages.packages.toList(), equals(["foo"])); | 85 expect(packages.packages.toList(), equals(["foo"])); |
87 expect(packages.resolve(Uri.parse("package:foo/qux/../bar/baz.dart")), | 86 expect(packages.resolve(Uri.parse("package:foo/qux/../bar/baz.dart")), |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 }); | 127 }); |
129 } | 128 } |
130 } | 129 } |
131 | 130 |
132 Packages doParse(String sample, Uri baseUri) { | 131 Packages doParse(String sample, Uri baseUri) { |
133 Map<String, Uri> map = parse(sample.codeUnits, baseUri); | 132 Map<String, Uri> map = parse(sample.codeUnits, baseUri); |
134 return new MapPackages(map); | 133 return new MapPackages(map); |
135 } | 134 } |
136 | 135 |
137 // Valid samples. | 136 // Valid samples. |
138 var emptySample = ""; | 137 var emptySample = ""; |
139 var commentOnlySample = "# comment only\n"; | 138 var commentOnlySample = "# comment only\n"; |
140 var emptyLinesSample = "\n\n\r\n"; | 139 var emptyLinesSample = "\n\n\r\n"; |
141 var singleRelativeSample = "foo:../test/\n"; | 140 var singleRelativeSample = "foo:../test/\n"; |
142 var singleRelativeSampleNoSlash = "foo:../test\n"; | 141 var singleRelativeSampleNoSlash = "foo:../test\n"; |
143 var singleRelativeSampleNoNewline = "foo:../test/"; | 142 var singleRelativeSampleNoNewline = "foo:../test/"; |
144 var singleAbsoluteSample = "foo:http://example.com/some/where/\n"; | 143 var singleAbsoluteSample = "foo:http://example.com/some/where/\n"; |
145 var singleEmptyPathSample = "foo:\n"; | 144 var singleEmptyPathSample = "foo:\n"; |
146 var singleAbsolutePathSample = "foo:/test/\n"; | 145 var singleAbsolutePathSample = "foo:/test/\n"; |
147 var multiRelativeSample = "foo:../test/\nbar:../test2/\n"; | 146 var multiRelativeSample = "foo:../test/\nbar:../test2/\n"; |
148 // All valid path segment characters in an URI. | 147 // All valid path segment characters in an URI. |
149 var allValidChars = | 148 var allValidChars = r"!$&'()*+,-.0123456789;=" |
150 r"!$&'()*+,-.0123456789;=" | |
151 r"@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~"; | 149 r"@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~"; |
152 | 150 |
153 var allValidCharsSample = "${allValidChars}:../test/\n"; | 151 var allValidCharsSample = "${allValidChars}:../test/\n"; |
154 | 152 |
155 // Invalid samples. | 153 // Invalid samples. |
156 var invalid = [ | 154 var invalid = [ |
157 ":baz.dart", // empty. | 155 ":baz.dart", // empty. |
158 "foobar=baz.dart", // no colon (but an equals, which is not the same) | 156 "foobar=baz.dart", // no colon (but an equals, which is not the same) |
159 ".:../test/", // dot segment | 157 ".:../test/", // dot segment |
160 "..:../test/", // dot-dot segment | 158 "..:../test/", // dot-dot segment |
161 "...:../test/", // dot-dot-dot segment | 159 "...:../test/", // dot-dot-dot segment |
162 "foo/bar:../test/", // slash in name | 160 "foo/bar:../test/", // slash in name |
163 "/foo:../test/", // slash at start of name | 161 "/foo:../test/", // slash at start of name |
164 "?:../test/", // invalid characters. | 162 "?:../test/", // invalid characters. |
165 "[:../test/", // invalid characters. | 163 "[:../test/", // invalid characters. |
166 "x#:../test/", // invalid characters. | 164 "x#:../test/", // invalid characters. |
167 ]; | 165 ]; |
OLD | NEW |