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.discovery_test; | 5 library package_config.discovery_test; |
6 | 6 |
7 import "dart:async"; | 7 import "dart:async"; |
8 import "dart:io"; | 8 import "dart:io"; |
9 import "package:test/test.dart"; | 9 import "package:test/test.dart"; |
10 import "package:package_config/packages.dart"; | 10 import "package:package_config/packages.dart"; |
(...skipping 23 matching lines...) Expand all Loading... |
34 expect(resolver, isNotNull); | 34 expect(resolver, isNotNull); |
35 expect(resolver.resolve(pkg("foo", "bar/baz")), | 35 expect(resolver.resolve(pkg("foo", "bar/baz")), |
36 equals(location.resolve("packages/foo/bar/baz"))); | 36 equals(location.resolve("packages/foo/bar/baz"))); |
37 expect(resolver.resolve(pkg("bar", "baz/qux")), | 37 expect(resolver.resolve(pkg("bar", "baz/qux")), |
38 equals(location.resolve("packages/bar/baz/qux"))); | 38 equals(location.resolve("packages/bar/baz/qux"))); |
39 expect(resolver.resolve(pkg("baz", "qux/foo")), | 39 expect(resolver.resolve(pkg("baz", "qux/foo")), |
40 equals(location.resolve("packages/baz/qux/foo"))); | 40 equals(location.resolve("packages/baz/qux/foo"))); |
41 if (location.scheme == "file") { | 41 if (location.scheme == "file") { |
42 expect(resolver.packages, unorderedEquals(["foo", "bar", "baz"])); | 42 expect(resolver.packages, unorderedEquals(["foo", "bar", "baz"])); |
43 } else { | 43 } else { |
44 expect(() => resolver.packages, throws); | 44 expect(() => resolver.packages, throwsUnsupportedError); |
45 } | 45 } |
46 } | 46 } |
47 | 47 |
48 Uri pkg(String packageName, String packagePath) { | 48 Uri pkg(String packageName, String packagePath) { |
49 var path; | 49 var path; |
50 if (packagePath.startsWith('/')) { | 50 if (packagePath.startsWith('/')) { |
51 path = "$packageName$packagePath"; | 51 path = "$packageName$packagePath"; |
52 } else { | 52 } else { |
53 path = "$packageName/$packagePath"; | 53 path = "$packageName/$packagePath"; |
54 } | 54 } |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 }); | 162 }); |
163 | 163 |
164 test(".packages w/ loader", () async { | 164 test(".packages w/ loader", () async { |
165 Uri location = Uri.parse("krutch://example.com/path/"); | 165 Uri location = Uri.parse("krutch://example.com/path/"); |
166 Future<List<int>> loader(Uri file) async { | 166 Future<List<int>> loader(Uri file) async { |
167 if (file.path.endsWith(".packages")) { | 167 if (file.path.endsWith(".packages")) { |
168 return packagesFile.codeUnits; | 168 return packagesFile.codeUnits; |
169 } | 169 } |
170 throw "not found"; | 170 throw "not found"; |
171 } | 171 } |
| 172 |
172 // A non-file: location with no .packages or packages/: | 173 // A non-file: location with no .packages or packages/: |
173 // Assumes a packages dir exists, and resolves relative to that. | 174 // Assumes a packages dir exists, and resolves relative to that. |
174 Packages resolver; | 175 Packages resolver; |
175 resolver = await findPackages(location, loader: loader); | 176 resolver = await findPackages(location, loader: loader); |
176 validatePackagesFile(resolver, location); | 177 validatePackagesFile(resolver, location); |
177 resolver = | 178 resolver = |
178 await findPackages(location.resolve("script.dart"), loader: loader); | 179 await findPackages(location.resolve("script.dart"), loader: loader); |
179 validatePackagesFile(resolver, location); | 180 validatePackagesFile(resolver, location); |
180 resolver = await findPackagesFromNonFile(location, loader: loader); | 181 resolver = await findPackagesFromNonFile(location, loader: loader); |
181 validatePackagesFile(resolver, location); | 182 validatePackagesFile(resolver, location); |
182 resolver = await findPackagesFromNonFile(location.resolve("script.dart"), | 183 resolver = await findPackagesFromNonFile(location.resolve("script.dart"), |
183 loader: loader); | 184 loader: loader); |
184 validatePackagesFile(resolver, location); | 185 validatePackagesFile(resolver, location); |
185 }); | 186 }); |
186 | 187 |
187 test("no packages w/ loader", () async { | 188 test("no packages w/ loader", () async { |
188 Uri location = Uri.parse("krutch://example.com/path/"); | 189 Uri location = Uri.parse("krutch://example.com/path/"); |
189 Future<List<int>> loader(Uri file) async { | 190 Future<List<int>> loader(Uri file) async { |
190 throw "not found"; | 191 throw "not found"; |
191 } | 192 } |
| 193 |
192 // A non-file: location with no .packages or packages/: | 194 // A non-file: location with no .packages or packages/: |
193 // Assumes a packages dir exists, and resolves relative to that. | 195 // Assumes a packages dir exists, and resolves relative to that. |
194 Packages resolver; | 196 Packages resolver; |
195 resolver = await findPackages(location, loader: loader); | 197 resolver = await findPackages(location, loader: loader); |
196 validatePackagesDir(resolver, location); | 198 validatePackagesDir(resolver, location); |
197 resolver = | 199 resolver = |
198 await findPackages(location.resolve("script.dart"), loader: loader); | 200 await findPackages(location.resolve("script.dart"), loader: loader); |
199 validatePackagesDir(resolver, location); | 201 validatePackagesDir(resolver, location); |
200 resolver = await findPackagesFromNonFile(location, loader: loader); | 202 resolver = await findPackagesFromNonFile(location, loader: loader); |
201 validatePackagesDir(resolver, location); | 203 validatePackagesDir(resolver, location); |
(...skipping 19 matching lines...) Expand all Loading... |
221 | 223 |
222 test("loadPackagesFile w/ loader", () async { | 224 test("loadPackagesFile w/ loader", () async { |
223 Future<List<int>> loader(Uri uri) async => packagesFile.codeUnits; | 225 Future<List<int>> loader(Uri uri) async => packagesFile.codeUnits; |
224 Uri file = Uri.parse("krutz://example.com/.packages"); | 226 Uri file = Uri.parse("krutz://example.com/.packages"); |
225 Packages resolver = await loadPackagesFile(file, loader: loader); | 227 Packages resolver = await loadPackagesFile(file, loader: loader); |
226 validatePackagesFile(resolver, file); | 228 validatePackagesFile(resolver, file); |
227 }); | 229 }); |
228 | 230 |
229 generalTest("loadPackagesFile not found", {}, (Uri directory) async { | 231 generalTest("loadPackagesFile not found", {}, (Uri directory) async { |
230 Uri file = directory.resolve(".packages"); | 232 Uri file = directory.resolve(".packages"); |
231 expect(loadPackagesFile(file), throws); | 233 expect( |
| 234 loadPackagesFile(file), |
| 235 throwsA(anyOf(new isInstanceOf<FileSystemException>(), |
| 236 new isInstanceOf<HttpException>()))); |
232 }); | 237 }); |
233 | 238 |
234 generalTest("loadPackagesFile syntax error", {".packages": "syntax error"}, | 239 generalTest("loadPackagesFile syntax error", {".packages": "syntax error"}, |
235 (Uri directory) async { | 240 (Uri directory) async { |
236 Uri file = directory.resolve(".packages"); | 241 Uri file = directory.resolve(".packages"); |
237 expect(loadPackagesFile(file), throws); | 242 expect(loadPackagesFile(file), throwsFormatException); |
238 }); | 243 }); |
239 | 244 |
240 generalTest("getPackagesDir", { | 245 generalTest("getPackagesDir", { |
241 "packages": {"foo": {}, "bar": {}, "baz": {}} | 246 "packages": {"foo": {}, "bar": {}, "baz": {}} |
242 }, (Uri directory) async { | 247 }, (Uri directory) async { |
243 Uri packages = directory.resolve("packages/"); | 248 Uri packages = directory.resolve("packages/"); |
244 Packages resolver = getPackagesDirectory(packages); | 249 Packages resolver = getPackagesDirectory(packages); |
245 Uri resolved = resolver.resolve(pkg("foo", "flip/flop")); | 250 Uri resolved = resolver.resolve(pkg("foo", "flip/flop")); |
246 expect(resolved, packages.resolve("foo/flip/flop")); | 251 expect(resolved, packages.resolve("foo/flip/flop")); |
247 }); | 252 }); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 if (content is Map) { | 318 if (content is Map) { |
314 Directory subDir = new Directory(path.join(target.path, name)); | 319 Directory subDir = new Directory(path.join(target.path, name)); |
315 subDir.createSync(); | 320 subDir.createSync(); |
316 _createFiles(subDir, content); | 321 _createFiles(subDir, content); |
317 } else { | 322 } else { |
318 File file = new File(path.join(target.path, name)); | 323 File file = new File(path.join(target.path, name)); |
319 file.writeAsStringSync(content, flush: true); | 324 file.writeAsStringSync(content, flush: true); |
320 } | 325 } |
321 }); | 326 }); |
322 } | 327 } |
OLD | NEW |