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

Side by Side Diff: tests/standalone/packages_file_test.dart

Issue 1998603002: Make VM resolvePackageUri fail on package:foo and package:/foo. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Do allow package:foo.dart with a package root. Update tests to match. Created 4 years, 6 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 | « tests/isolate/isolate.status ('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
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 import "dart:async"; 5 import "dart:async";
6 import "dart:io"; 6 import "dart:io";
7 import "dart:convert" show JSON; 7 import "dart:convert" show JSON;
8 import "package:path/path.dart" as p; 8 import "package:path/path.dart" as p;
9 import "package:async_helper/async_helper.dart"; 9 import "package:async_helper/async_helper.dart";
10 10
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 // value of these, you can only change what value to expect. 289 // value of these, you can only change what value to expect.
290 // For values not included here (commented out), the result is not tested 290 // For values not included here (commented out), the result is not tested
291 // unless a value (maybe null) is provided. 291 // unless a value (maybe null) is provided.
292 fixPaths(expect); 292 fixPaths(expect);
293 293
294 expect = { 294 expect = {
295 "pconf": null, 295 "pconf": null,
296 "proot": null, 296 "proot": null,
297 "iconf": null, 297 "iconf": null,
298 "iroot": null, 298 "iroot": null,
299 // "foo": null, 299 "foo": null,
300 "foo/": null, 300 "foo/": null,
301 "foo/bar": null, 301 "foo/bar": null,
302 "foo.x": "qux", 302 "foo.x": "qux",
303 "bar/bar": null, 303 "bar/bar": null,
304 "relative": "relative/path", 304 "relative": "relative/path",
305 "nonpkg": "http://example.org/file" 305 "nonpkg": "http://example.org/file"
306 }..addAll(expect ?? const {}); 306 }..addAll(expect ?? const {});
307 307
308 // Add http files to the http server. 308 // Add http files to the http server.
309 if (http.isNotEmpty) { 309 if (http.isNotEmpty) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 // No parameters, no .packages files or packages/ dir. 346 // No parameters, no .packages files or packages/ dir.
347 // A "file:" source realizes there is no configuration and can't resolve 347 // A "file:" source realizes there is no configuration and can't resolve
348 // any packages, but a "http:" source assumes a "packages/" directory. 348 // any packages, but a "http:" source assumes a "packages/" directory.
349 addScheme("no resolution", 349 addScheme("no resolution",
350 "%$scheme/", 350 "%$scheme/",
351 files: {}, 351 files: {},
352 expect: (scheme == "file") ? { 352 expect: (scheme == "file") ? {
353 "foo.x": null 353 "foo.x": null
354 } : { 354 } : {
355 "iroot": "%http/packages/", 355 "iroot": "%http/packages/",
356 "foo": "%http/packages/foo",
356 "foo/": "%http/packages/foo/", 357 "foo/": "%http/packages/foo/",
357 "foo/bar": "%http/packages/foo/bar", 358 "foo/bar": "%http/packages/foo/bar",
358 "foo.x": null, 359 "foo.x": null,
359 "bar/bar": "%http/packages/bar/bar", 360 "bar/bar": "%http/packages/bar/bar",
360 }); 361 });
361 } 362 }
362 363
363 { 364 {
364 // No parameters, no .packages files, 365 // No parameters, no .packages files,
365 // packages/ dir exists and is detected. 366 // packages/ dir exists and is detected.
366 var files = {"packages": fooPackage}; 367 var files = {"packages": fooPackage};
367 addScheme("implicit packages dir","%$scheme/", 368 addScheme("implicit packages dir","%$scheme/",
368 files: files, 369 files: files,
369 expect: { 370 expect: {
370 "iroot": "%$scheme/packages/", 371 "iroot": "%$scheme/packages/",
372 "foo": "%$scheme/packages/foo",
371 "foo/": "%$scheme/packages/foo/", 373 "foo/": "%$scheme/packages/foo/",
372 "foo/bar": "%$scheme/packages/foo/bar", 374 "foo/bar": "%$scheme/packages/foo/bar",
373 "bar/bar": "%$scheme/packages/bar/bar", 375 "bar/bar": "%$scheme/packages/bar/bar",
374 }); 376 });
375 } 377 }
376 378
377 { 379 {
378 // No parameters, no .packages files in current dir, but one in parent, 380 // No parameters, no .packages files in current dir, but one in parent,
379 // packages/ dir exists and is used. 381 // packages/ dir exists and is used.
380 // 382 //
381 // Should not detect the .packages file in parent directory. 383 // Should not detect the .packages file in parent directory.
382 // That file is empty, so if it is used, the system cannot resolve "foo". 384 // That file is empty, so if it is used, the system cannot resolve "foo".
383 var files = {"sub": {"packages": fooPackage}, 385 var files = {"sub": {"packages": fooPackage},
384 ".packages": ""}; 386 ".packages": ""};
385 addScheme("implicit packages dir overrides parent .packages", 387 addScheme("implicit packages dir overrides parent .packages",
386 "%$scheme/sub/", 388 "%$scheme/sub/",
387 files: files, 389 files: files,
388 expect: { 390 expect: {
389 "iroot": "%$scheme/sub/packages/", 391 "iroot": "%$scheme/sub/packages/",
392 "foo": "%$scheme/sub/packages/foo",
390 "foo/": "%$scheme/sub/packages/foo/", 393 "foo/": "%$scheme/sub/packages/foo/",
391 "foo/bar": "%$scheme/sub/packages/foo/bar", 394 "foo/bar": "%$scheme/sub/packages/foo/bar",
392 // "foo.x": "qux", // Blocked by issue http://dartbug.com/26482 395 // "foo.x": "qux", // Blocked by issue http://dartbug.com/26482
393 "bar/bar": "%$scheme/sub/packages/bar/bar", 396 "bar/bar": "%$scheme/sub/packages/bar/bar",
394 }); 397 });
395 } 398 }
396 399
397 { 400 {
398 // No parameters, a .packages file next to entry is found and used. 401 // No parameters, a .packages file next to entry is found and used.
399 // A packages/ directory is ignored. 402 // A packages/ directory is ignored.
(...skipping 17 matching lines...) Expand all
417 ".packages": "foo:pkgs/foo/", 420 ".packages": "foo:pkgs/foo/",
418 "pkgs": fooPackage}; 421 "pkgs": fooPackage};
419 addScheme(".packages file in parent", "%$scheme/sub/", 422 addScheme(".packages file in parent", "%$scheme/sub/",
420 files: files, 423 files: files,
421 expect: (scheme == "file") ? { 424 expect: (scheme == "file") ? {
422 "iconf": "%file/.packages", 425 "iconf": "%file/.packages",
423 "foo/": "%file/pkgs/foo/", 426 "foo/": "%file/pkgs/foo/",
424 "foo/bar": "%file/pkgs/foo/bar", 427 "foo/bar": "%file/pkgs/foo/bar",
425 } : { 428 } : {
426 "iroot": "%http/sub/packages/", 429 "iroot": "%http/sub/packages/",
430 "foo": "%http/sub/packages/foo",
427 "foo/": "%http/sub/packages/foo/", 431 "foo/": "%http/sub/packages/foo/",
428 "foo/bar": "%http/sub/packages/foo/bar", 432 "foo/bar": "%http/sub/packages/foo/bar",
429 "foo.x": null, 433 "foo.x": null,
430 "bar/bar": "%http/sub/packages/bar/bar", 434 "bar/bar": "%http/sub/packages/bar/bar",
431 }); 435 });
432 } 436 }
433 437
434 { 438 {
435 // Specified package root that doesn't exist. 439 // Specified package root that doesn't exist.
436 // Ignores existing .packages file and packages/ dir. 440 // Ignores existing .packages file and packages/ dir.
437 addScheme("explicit root not there", 441 addScheme("explicit root not there",
438 "%$scheme/", 442 "%$scheme/",
439 files: {"packages": fooPackage, 443 files: {"packages": fooPackage,
440 ".packages": "foo:%$scheme/packages/"}, 444 ".packages": "foo:%$scheme/packages/"},
441 root: "%$scheme/notthere/", 445 root: "%$scheme/notthere/",
442 expect: { 446 expect: {
443 "proot": "%$scheme/notthere/", 447 "proot": "%$scheme/notthere/",
444 "iroot": "%$scheme/notthere/", 448 "iroot": "%$scheme/notthere/",
449 "foo": "%$scheme/notthere/foo",
445 "foo/": "%$scheme/notthere/foo/", 450 "foo/": "%$scheme/notthere/foo/",
446 "foo/bar": "%$scheme/notthere/foo/bar", 451 "foo/bar": "%$scheme/notthere/foo/bar",
447 "foo.x": null, 452 "foo.x": null,
448 "bar/bar": "%$scheme/notthere/bar/bar", 453 "bar/bar": "%$scheme/notthere/bar/bar",
449 }); 454 });
450 } 455 }
451 456
452 { 457 {
453 // Specified package config that doesn't exist. 458 // Specified package config that doesn't exist.
454 // Ignores existing .packages file and packages/ dir. 459 // Ignores existing .packages file and packages/ dir.
(...skipping 16 matching lines...) Expand all
471 // The Platform.packageRoot and Isolate.packageRoot has a trailing slash. 476 // The Platform.packageRoot and Isolate.packageRoot has a trailing slash.
472 var files = {".packages": "foo:packages/foo/", 477 var files = {".packages": "foo:packages/foo/",
473 "packages": {}, 478 "packages": {},
474 "pkgs": fooPackage}; 479 "pkgs": fooPackage};
475 addScheme("explicit package root, no slash", "%$scheme/", 480 addScheme("explicit package root, no slash", "%$scheme/",
476 files: files, 481 files: files,
477 root: "%$scheme/pkgs", 482 root: "%$scheme/pkgs",
478 expect: { 483 expect: {
479 "proot": "%$scheme/pkgs/", 484 "proot": "%$scheme/pkgs/",
480 "iroot": "%$scheme/pkgs/", 485 "iroot": "%$scheme/pkgs/",
486 "foo": "%$scheme/pkgs/foo",
481 "foo/": "%$scheme/pkgs/foo/", 487 "foo/": "%$scheme/pkgs/foo/",
482 "foo/bar": "%$scheme/pkgs/foo/bar", 488 "foo/bar": "%$scheme/pkgs/foo/bar",
483 "bar/bar": "%$scheme/pkgs/bar/bar", 489 "bar/bar": "%$scheme/pkgs/bar/bar",
484 }); 490 });
485 } 491 }
486 492
487 { 493 {
488 // Specified package root with trailing slash. 494 // Specified package root with trailing slash.
489 var files = {".packages": "foo:packages/foo/", 495 var files = {".packages": "foo:packages/foo/",
490 "packages": {}, 496 "packages": {},
491 "pkgs": fooPackage}; 497 "pkgs": fooPackage};
492 addScheme("explicit package root, slash", "%$scheme/", 498 addScheme("explicit package root, slash", "%$scheme/",
493 files: files, 499 files: files,
494 root: "%$scheme/pkgs", 500 root: "%$scheme/pkgs",
495 expect: { 501 expect: {
496 "proot": "%$scheme/pkgs/", 502 "proot": "%$scheme/pkgs/",
497 "iroot": "%$scheme/pkgs/", 503 "iroot": "%$scheme/pkgs/",
504 "foo": "%$scheme/pkgs/foo",
498 "foo/": "%$scheme/pkgs/foo/", 505 "foo/": "%$scheme/pkgs/foo/",
499 "foo/bar": "%$scheme/pkgs/foo/bar", 506 "foo/bar": "%$scheme/pkgs/foo/bar",
500 "bar/bar": "%$scheme/pkgs/bar/bar", 507 "bar/bar": "%$scheme/pkgs/bar/bar",
501 }); 508 });
502 } 509 }
503 510
504 { 511 {
505 // Specified package config. 512 // Specified package config.
506 var files = {".packages": "foo:packages/foo/", 513 var files = {".packages": "foo:packages/foo/",
507 "packages": {}, 514 "packages": {},
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 var files = {}; 555 var files = {};
549 var https = {}; 556 var https = {};
550 (entryScheme == "file" ? files : https)["main"] = testMain; 557 (entryScheme == "file" ? files : https)["main"] = testMain;
551 (pkgScheme == "file" ? files : https)["pkgs"] = fooPackage; 558 (pkgScheme == "file" ? files : https)["pkgs"] = fooPackage;
552 add("$pkgScheme pkg/$entryScheme main", "%$entryScheme/", 559 add("$pkgScheme pkg/$entryScheme main", "%$entryScheme/",
553 file: files, http: https, 560 file: files, http: https,
554 root: "%$pkgScheme/pkgs/", 561 root: "%$pkgScheme/pkgs/",
555 expect: { 562 expect: {
556 "proot": "%$pkgScheme/pkgs/", 563 "proot": "%$pkgScheme/pkgs/",
557 "iroot": "%$pkgScheme/pkgs/", 564 "iroot": "%$pkgScheme/pkgs/",
565 "foo": "%$pkgScheme/pkgs/foo",
558 "foo/": "%$pkgScheme/pkgs/foo/", 566 "foo/": "%$pkgScheme/pkgs/foo/",
559 "foo/bar": "%$pkgScheme/pkgs/foo/bar", 567 "foo/bar": "%$pkgScheme/pkgs/foo/bar",
560 "bar/bar": "%$pkgScheme/pkgs/bar/bar", 568 "bar/bar": "%$pkgScheme/pkgs/bar/bar",
561 "foo.x": "qux", 569 "foo.x": "qux",
562 }); 570 });
563 } 571 }
564 // Package config. The configuration file may also be on either source. 572 // Package config. The configuration file may also be on either source.
565 for (var configScheme in const ["file", "http"]) { 573 for (var configScheme in const ["file", "http"]) {
566 // Don't do the boring stuff! 574 // Don't do the boring stuff!
567 if (entryScheme == configScheme && entryScheme == pkgScheme) continue; 575 if (entryScheme == configScheme && entryScheme == pkgScheme) continue;
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
984 void insertFileAt(Map file, Map http, 992 void insertFileAt(Map file, Map http,
985 String path, String name, String content) { 993 String path, String name, String content) {
986 var parts = path.split('/').toList(); 994 var parts = path.split('/').toList();
987 var dir = (parts[0] == "%file") ? file : http; 995 var dir = (parts[0] == "%file") ? file : http;
988 for (var i = 1; i < parts.length - 1; i++) { 996 for (var i = 1; i < parts.length - 1; i++) {
989 var entry = parts[i]; 997 var entry = parts[i];
990 dir = dir[entry] ?? (dir[entry] = {}); 998 dir = dir[entry] ?? (dir[entry] = {});
991 } 999 }
992 dir[name] = content; 1000 dir[name] = content;
993 } 1001 }
OLDNEW
« no previous file with comments | « tests/isolate/isolate.status ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698