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

Side by Side Diff: test/test_pub.dart

Issue 1281043004: Make LockFile immutable. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Code review changes Created 5 years, 4 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/lock_file_test.dart ('k') | test/version_solver_test.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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 /// Test infrastructure for testing pub. 5 /// Test infrastructure for testing pub.
6 /// 6 ///
7 /// Unlike typical unit tests, most pub tests are integration tests that stage 7 /// Unlike typical unit tests, most pub tests are integration tests that stage
8 /// some stuff on the file system, run pub, and then validate the results. This 8 /// some stuff on the file system, run pub, and then validate the results. This
9 /// library provides an API to build tests like that. 9 /// library provides an API to build tests like that.
10 library test_pub; 10 library test_pub;
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 Iterable<d.Descriptor> contents, {Iterable<String> pkg, 684 Iterable<d.Descriptor> contents, {Iterable<String> pkg,
685 Map<String, String> hosted}) { 685 Map<String, String> hosted}) {
686 // Start the server so we know what port to use in the cache directory name. 686 // Start the server so we know what port to use in the cache directory name.
687 serveNoPackages(); 687 serveNoPackages();
688 688
689 // Create the package in the hosted cache. 689 // Create the package in the hosted cache.
690 d.hostedCache([ 690 d.hostedCache([
691 d.dir("$package-$version", contents) 691 d.dir("$package-$version", contents)
692 ]).create(); 692 ]).create();
693 693
694 var lockFile = _createLockFile(pkg: pkg, hosted: hosted);
695
696 // Add the root package to the lockfile.
697 var id = new PackageId(package, "hosted", new Version.parse(version),
698 package);
699 lockFile.packages[package] = id;
700
701 // Write the lockfile to the global cache. 694 // Write the lockfile to the global cache.
702 var sources = new SourceRegistry(); 695 var sources = new SourceRegistry();
703 sources.register(new HostedSource()); 696 sources.register(new HostedSource());
704 sources.register(new PathSource()); 697 sources.register(new PathSource());
705 698
699 var lockFile = _createLockFile(sources, pkg: pkg, hosted: hosted);
700
701 // Add the root package to the lockfile.
702 var id = new PackageId(package, "hosted", new Version.parse(version),
703 package);
704 lockFile = lockFile.setPackage(id);
705
706 d.dir(cachePath, [ 706 d.dir(cachePath, [
707 d.dir("global_packages", [ 707 d.dir("global_packages", [
708 d.file("$package.lock", lockFile.serialize(null, sources)) 708 d.file("$package.lock", lockFile.serialize(null))
709 ]) 709 ])
710 ]).create(); 710 ]).create();
711 } 711 }
712 712
713 /// Creates a lock file for [package] without running `pub get`. 713 /// Creates a lock file for [package] without running `pub get`.
714 /// 714 ///
715 /// [sandbox] is a list of path dependencies to be found in the sandbox 715 /// [sandbox] is a list of path dependencies to be found in the sandbox
716 /// directory. [pkg] is a list of packages in the Dart repo's "pkg" directory; 716 /// directory. [pkg] is a list of packages in the Dart repo's "pkg" directory;
717 /// each package listed here and all its dependencies will be linked to the 717 /// each package listed here and all its dependencies will be linked to the
718 /// version in the Dart repo. 718 /// version in the Dart repo.
719 /// 719 ///
720 /// [hosted] is a list of package names to version strings for dependencies on 720 /// [hosted] is a list of package names to version strings for dependencies on
721 /// hosted packages. 721 /// hosted packages.
722 void createLockFile(String package, {Iterable<String> sandbox, 722 void createLockFile(String package, {Iterable<String> sandbox,
723 Iterable<String> pkg, Map<String, String> hosted}) { 723 Iterable<String> pkg, Map<String, String> hosted}) {
724 var lockFile = _createLockFile(sandbox: sandbox, pkg: pkg, hosted: hosted);
725
726 var sources = new SourceRegistry(); 724 var sources = new SourceRegistry();
727 sources.register(new HostedSource()); 725 sources.register(new HostedSource());
728 sources.register(new PathSource()); 726 sources.register(new PathSource());
729 727
730 d.file(p.join(package, 'pubspec.lock'), 728 var lockFile = _createLockFile(sources,
731 lockFile.serialize(null, sources)).create(); 729 sandbox: sandbox, pkg: pkg, hosted: hosted);
730
731 d.file(p.join(package, 'pubspec.lock'), lockFile.serialize(null)).create();
732 } 732 }
733 733
734 /// Creates a lock file for [package] without running `pub get`. 734 /// Creates a lock file for [package] without running `pub get`.
735 /// 735 ///
736 /// [sandbox] is a list of path dependencies to be found in the sandbox 736 /// [sandbox] is a list of path dependencies to be found in the sandbox
737 /// directory. [pkg] is a list of packages in the Dart repo's "pkg" directory; 737 /// directory. [pkg] is a list of packages in the Dart repo's "pkg" directory;
738 /// each package listed here and all its dependencies will be linked to the 738 /// each package listed here and all its dependencies will be linked to the
739 /// version in the Dart repo. 739 /// version in the Dart repo.
740 /// 740 ///
741 /// [hosted] is a list of package names to version strings for dependencies on 741 /// [hosted] is a list of package names to version strings for dependencies on
742 /// hosted packages. 742 /// hosted packages.
743 LockFile _createLockFile({Iterable<String> sandbox, 743 LockFile _createLockFile(SourceRegistry sources, {Iterable<String> sandbox,
744 Iterable<String> pkg, Map<String, String> hosted}) { 744 Iterable<String> pkg, Map<String, String> hosted}) {
745 var dependencies = {}; 745 var dependencies = {};
746 746
747 if (sandbox != null) { 747 if (sandbox != null) {
748 for (var package in sandbox) { 748 for (var package in sandbox) {
749 dependencies[package] = '../$package'; 749 dependencies[package] = '../$package';
750 } 750 }
751 } 751 }
752 752
753 if (pkg != null) { 753 if (pkg != null) {
754 _addPackage(String package) { 754 _addPackage(String package) {
(...skipping 16 matching lines...) Expand all
771 var pubspec = loadYaml( 771 var pubspec = loadYaml(
772 readTextFile(p.join(path, 'pubspec.yaml'))); 772 readTextFile(p.join(path, 'pubspec.yaml')));
773 var packageDeps = pubspec['dependencies']; 773 var packageDeps = pubspec['dependencies'];
774 if (packageDeps == null) return; 774 if (packageDeps == null) return;
775 packageDeps.keys.forEach(_addPackage); 775 packageDeps.keys.forEach(_addPackage);
776 } 776 }
777 777
778 pkg.forEach(_addPackage); 778 pkg.forEach(_addPackage);
779 } 779 }
780 780
781 var lockFile = new LockFile.empty(); 781 var packages = dependencies.keys.map((name) {
782 dependencies.forEach((name, dependencyPath) { 782 var dependencyPath = dependencies[name];
783 var id = new PackageId(name, 'path', new Version(0, 0, 0), { 783 return new PackageId(name, 'path', new Version(0, 0, 0), {
784 'path': dependencyPath, 784 'path': dependencyPath,
785 'relative': p.isRelative(dependencyPath) 785 'relative': p.isRelative(dependencyPath)
786 }); 786 });
787 lockFile.packages[name] = id; 787 }).toList();
788 });
789 788
790 if (hosted != null) { 789 if (hosted != null) {
791 hosted.forEach((name, version) { 790 hosted.forEach((name, version) {
792 var id = new PackageId(name, 'hosted', new Version.parse(version), name); 791 var id = new PackageId(name, 'hosted', new Version.parse(version), name);
793 lockFile.packages[name] = id; 792 packages.add(id);
794 }); 793 });
795 } 794 }
796 795
797 return lockFile; 796 return new LockFile(packages, sources);
798 } 797 }
799 798
800 /// Returns the path to the version of [package] used by pub. 799 /// Returns the path to the version of [package] used by pub.
801 String packagePath(String package) { 800 String packagePath(String package) {
802 if (runningFromDartRepo) { 801 if (runningFromDartRepo) {
803 return dirExists(p.join(dartRepoRoot, 'pkg', package)) 802 return dirExists(p.join(dartRepoRoot, 'pkg', package))
804 ? p.join(dartRepoRoot, 'pkg', package) 803 ? p.join(dartRepoRoot, 'pkg', package)
805 : p.join(dartRepoRoot, 'third_party', 'pkg', package); 804 : p.join(dartRepoRoot, 'third_party', 'pkg', package);
806 } 805 }
807 806
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
1007 _lastMatcher.matches(item.last, matchState); 1006 _lastMatcher.matches(item.last, matchState);
1008 } 1007 }
1009 1008
1010 Description describe(Description description) { 1009 Description describe(Description description) {
1011 return description.addAll("(", ", ", ")", [_firstMatcher, _lastMatcher]); 1010 return description.addAll("(", ", ", ")", [_firstMatcher, _lastMatcher]);
1012 } 1011 }
1013 } 1012 }
1014 1013
1015 /// A [StreamMatcher] that matches multiple lines of output. 1014 /// A [StreamMatcher] that matches multiple lines of output.
1016 StreamMatcher emitsLines(String output) => inOrder(output.split("\n")); 1015 StreamMatcher emitsLines(String output) => inOrder(output.split("\n"));
OLDNEW
« no previous file with comments | « test/lock_file_test.dart ('k') | test/version_solver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698