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

Unified Diff: test/test_pub.dart

Issue 1216433003: Stop auto-generating Pub snapshots for testing. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Code review changes Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/io.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/test_pub.dart
diff --git a/test/test_pub.dart b/test/test_pub.dart
index 0c2a853b71bf2689e4af092c74f630ea791184a3..d517837b8c0091a14e8e5fcd0124dbbc9ea34745 100644
--- a/test/test_pub.dart
+++ b/test/test_pub.dart
@@ -532,9 +532,14 @@ ScheduledProcess startPub({List args, Future<String> tokenEndpoint,
dartBin = p.absolute(dartBin);
}
- // Always run pub from a snapshot. Using the snapshot makes running the tests
- // much faster, especially when multiple tests are run at once.
- var pubPath = p.absolute(p.join(pubRoot, '.pub/pub.test.snapshot'));
+ // If there's a snapshot available, use it. The user is responsible for
+ // ensuring this is up-to-date..
+ //
+ // TODO(nweiz): When the test runner supports plugins, create one to
+ // auto-generate the snapshot before each run.
+ var pubPath = p.absolute(p.join(pubRoot, 'bin/pub.dart'));
+ if (fileExists('$pubPath.snapshot')) pubPath += '.snapshot';
+
var dartArgs = [pubPath, '--verbose'];
dartArgs.addAll(args);
@@ -546,89 +551,11 @@ ScheduledProcess startPub({List args, Future<String> tokenEndpoint,
return pubEnvironment;
});
- _ensureSnapshot();
-
return new PubProcess.start(dartBin, dartArgs, environment: environmentFuture,
workingDirectory: _pathInSandbox(appPath),
description: args.isEmpty ? 'pub' : 'pub ${args.first}');
}
-/// Ensure that a snapshot of the current pub source exists at
-/// ".pub/pub.snapshot".
-void _ensureSnapshot() {
- ensureDir(p.join(pubRoot, '.pub'));
-
- var version = sdk.version.toString();
- var pubHash = _hashChanges();
- var dartHash = runningFromDartRepo ? _hashExecutable() : null;
-
- var snapshotPath = p.join(pubRoot, '.pub', 'pub.test.snapshot');
- var pubHashPath = p.join(pubRoot, '.pub', 'pub.hash');
- var dartHashPath = p.join(pubRoot, '.pub', 'dart.hash');
- var versionPath = p.join(pubRoot, '.pub', 'pub.version');
- if (fileExists(pubHashPath) && fileExists(versionPath) &&
- (!runningFromDartRepo || fileExists(dartHashPath))) {
- var oldPubHash = readTextFile(pubHashPath);
- var oldDartHash = runningFromDartRepo ? readTextFile(dartHashPath) : null;
- var oldVersion = readTextFile(versionPath);
-
- if (oldPubHash == pubHash && oldDartHash == dartHash &&
- oldVersion == version && fileExists(snapshotPath)) {
- return;
- }
- }
-
- var args = ['--snapshot=$snapshotPath'];
- if (Platform.packageRoot.isNotEmpty) {
- args.add('--package-root=${Platform.packageRoot}');
- }
- args.add(p.join(pubRoot, 'bin', 'pub.dart'));
-
- var dartSnapshot = runProcessSync(Platform.executable, args);
- if (dartSnapshot.exitCode != 0) throw "Failed to run dart --snapshot.";
-
- writeTextFile(pubHashPath, pubHash);
- if (runningFromDartRepo) writeTextFile(dartHashPath, dartHash);
- writeTextFile(versionPath, version);
-}
-
-/// Returns a hash that encapsulates the current state of the repo.
-String _hashChanges() {
- var hash = new SHA1();
-
- // Include the current Git commit.
- hash.add(UTF8.encode(
- gitlib.runSync(['rev-parse', 'HEAD'], workingDir: pubRoot).first));
-
- // Include the changes in lib and bin relative to the current Git commit.
- var tracked = gitlib.runSync(['diff-index', '--patch', 'HEAD', 'lib', 'bin'],
- workingDir: pubRoot);
- for (var line in tracked) {
- hash.add(UTF8.encode("$line\n"));
- }
-
- // Include the full contents of non-ignored files in lib and bin that aren't
- // tracked by Git.
- var untracked = gitlib.runSync(
- ['ls-files', '--others', '--exclude-standard', 'lib', 'bin'],
- workingDir: pubRoot);
- for (var path in untracked) {
- hash.add(readBinaryFile(path));
- }
-
- return CryptoUtils.bytesToHex(hash.close());
-}
-
-/// Return a SHA1 hash of the Dart executable used to run this script.
-///
-/// This is used when running within the Dart repo to ensure that the snapshot
-/// is invalidated when the executable changes.
-String _hashExecutable() {
- var hash = new SHA1();
- hash.add(new File(Platform.executable).readAsBytesSync());
- return CryptoUtils.bytesToHex(hash.close());
-}
-
/// A subclass of [ScheduledProcess] that parses pub's verbose logging output
/// and makes [stdout] and [stderr] work as though pub weren't running in
/// verbose mode.
« no previous file with comments | « lib/src/io.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698