| OLD | NEW | 
|---|
| 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. Unlike typical unit tests, most pub | 5 /// Test infrastructure for testing pub. Unlike typical unit tests, most pub | 
| 6 /// tests are integration tests that stage some stuff on the file system, run | 6 /// tests are integration tests that stage some stuff on the file system, run | 
| 7 /// pub, and then validate the results. This library provides an API to build | 7 /// pub, and then validate the results. This library provides an API to build | 
| 8 /// tests like that. | 8 /// tests like that. | 
| 9 library test_pub; | 9 library test_pub; | 
| 10 | 10 | 
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 112         currentSchedule.onComplete.schedule(_closeServer); | 112         currentSchedule.onComplete.schedule(_closeServer); | 
| 113         return null; | 113         return null; | 
| 114       }); | 114       }); | 
| 115     }); | 115     }); | 
| 116   }, 'starting a server serving:\n${baseDir.describe()}'); | 116   }, 'starting a server serving:\n${baseDir.describe()}'); | 
| 117 } | 117 } | 
| 118 | 118 | 
| 119 /// Closes [_server]. Returns a [Future] that will complete after the [_server] | 119 /// Closes [_server]. Returns a [Future] that will complete after the [_server] | 
| 120 /// is closed. | 120 /// is closed. | 
| 121 Future _closeServer() { | 121 Future _closeServer() { | 
| 122   if (_server == null) return new Future.immediate(null); | 122   if (_server == null) return new Future.value(); | 
| 123   _server.close(); | 123   _server.close(); | 
| 124   _server = null; | 124   _server = null; | 
| 125   _portCompleterCache = null; | 125   _portCompleterCache = null; | 
| 126   // TODO(nweiz): Remove this once issue 4155 is fixed. Pumping the event loop | 126   // TODO(nweiz): Remove this once issue 4155 is fixed. Pumping the event loop | 
| 127   // *seems* to be enough to ensure that the server is actually closed, but I'm | 127   // *seems* to be enough to ensure that the server is actually closed, but I'm | 
| 128   // putting this at 10ms to be safe. | 128   // putting this at 10ms to be safe. | 
| 129   return sleep(10); | 129   return sleep(10); | 
| 130 } | 130 } | 
| 131 | 131 | 
| 132 /// The [d.DirectoryDescriptor] describing the server layout of packages that | 132 /// The [d.DirectoryDescriptor] describing the server layout of packages that | 
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 349     dartBin = new File(dartBin).fullPathSync(); | 349     dartBin = new File(dartBin).fullPathSync(); | 
| 350   } | 350   } | 
| 351 | 351 | 
| 352   // Find the main pub entrypoint. | 352   // Find the main pub entrypoint. | 
| 353   var pubPath = path.join(testDirectory, '..', '..', 'pub', 'pub.dart'); | 353   var pubPath = path.join(testDirectory, '..', '..', 'pub', 'pub.dart'); | 
| 354 | 354 | 
| 355   var dartArgs = ['--package-root=$_packageRoot/', '--checked', pubPath, | 355   var dartArgs = ['--package-root=$_packageRoot/', '--checked', pubPath, | 
| 356       '--trace']; | 356       '--trace']; | 
| 357   dartArgs.addAll(args); | 357   dartArgs.addAll(args); | 
| 358 | 358 | 
| 359   if (tokenEndpoint == null) tokenEndpoint = new Future.immediate(null); | 359   if (tokenEndpoint == null) tokenEndpoint = new Future.value(); | 
| 360   var optionsFuture = tokenEndpoint.then((tokenEndpoint) { | 360   var optionsFuture = tokenEndpoint.then((tokenEndpoint) { | 
| 361     var options = new ProcessOptions(); | 361     var options = new ProcessOptions(); | 
| 362     options.workingDirectory = pathInSandbox(appPath); | 362     options.workingDirectory = pathInSandbox(appPath); | 
| 363     // TODO(nweiz): remove this when issue 9294 is fixed. | 363     // TODO(nweiz): remove this when issue 9294 is fixed. | 
| 364     options.environment = new Map.from(Platform.environment); | 364     options.environment = new Map.from(Platform.environment); | 
| 365     options.environment['PUB_CACHE'] = pathInSandbox(cachePath); | 365     options.environment['PUB_CACHE'] = pathInSandbox(cachePath); | 
| 366     options.environment['DART_SDK'] = pathInSandbox(sdkPath); | 366     options.environment['DART_SDK'] = pathInSandbox(sdkPath); | 
| 367     if (tokenEndpoint != null) { | 367     if (tokenEndpoint != null) { | 
| 368       options.environment['_PUB_TEST_TOKEN_ENDPOINT'] = | 368       options.environment['_PUB_TEST_TOKEN_ENDPOINT'] = | 
| 369         tokenEndpoint.toString(); | 369         tokenEndpoint.toString(); | 
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 581 /// A function that creates a [Validator] subclass. | 581 /// A function that creates a [Validator] subclass. | 
| 582 typedef Validator ValidatorCreator(Entrypoint entrypoint); | 582 typedef Validator ValidatorCreator(Entrypoint entrypoint); | 
| 583 | 583 | 
| 584 /// Schedules a single [Validator] to run on the [appPath]. Returns a scheduled | 584 /// Schedules a single [Validator] to run on the [appPath]. Returns a scheduled | 
| 585 /// Future that contains the errors and warnings produced by that validator. | 585 /// Future that contains the errors and warnings produced by that validator. | 
| 586 Future<Pair<List<String>, List<String>>> schedulePackageValidation( | 586 Future<Pair<List<String>, List<String>>> schedulePackageValidation( | 
| 587     ValidatorCreator fn) { | 587     ValidatorCreator fn) { | 
| 588   return schedule(() { | 588   return schedule(() { | 
| 589     var cache = new SystemCache.withSources(path.join(sandboxDir, cachePath)); | 589     var cache = new SystemCache.withSources(path.join(sandboxDir, cachePath)); | 
| 590 | 590 | 
| 591     return new Future.of(() { | 591     return new Future.sync(() { | 
| 592       var validator = fn(new Entrypoint(path.join(sandboxDir, appPath), cache)); | 592       var validator = fn(new Entrypoint(path.join(sandboxDir, appPath), cache)); | 
| 593       return validator.validate().then((_) { | 593       return validator.validate().then((_) { | 
| 594         return new Pair(validator.errors, validator.warnings); | 594         return new Pair(validator.errors, validator.warnings); | 
| 595       }); | 595       }); | 
| 596     }); | 596     }); | 
| 597   }, "validating package"); | 597   }, "validating package"); | 
| 598 } | 598 } | 
| 599 | 599 | 
| 600 /// A matcher that matches a Pair. | 600 /// A matcher that matches a Pair. | 
| 601 Matcher pairOf(Matcher firstMatcher, Matcher lastMatcher) => | 601 Matcher pairOf(Matcher firstMatcher, Matcher lastMatcher) => | 
| 602    new _PairMatcher(firstMatcher, lastMatcher); | 602    new _PairMatcher(firstMatcher, lastMatcher); | 
| 603 | 603 | 
| 604 class _PairMatcher extends BaseMatcher { | 604 class _PairMatcher extends BaseMatcher { | 
| 605   final Matcher _firstMatcher; | 605   final Matcher _firstMatcher; | 
| 606   final Matcher _lastMatcher; | 606   final Matcher _lastMatcher; | 
| 607 | 607 | 
| 608   _PairMatcher(this._firstMatcher, this._lastMatcher); | 608   _PairMatcher(this._firstMatcher, this._lastMatcher); | 
| 609 | 609 | 
| 610   bool matches(item, MatchState matchState) { | 610   bool matches(item, MatchState matchState) { | 
| 611     if (item is! Pair) return false; | 611     if (item is! Pair) return false; | 
| 612     return _firstMatcher.matches(item.first, matchState) && | 612     return _firstMatcher.matches(item.first, matchState) && | 
| 613         _lastMatcher.matches(item.last, matchState); | 613         _lastMatcher.matches(item.last, matchState); | 
| 614   } | 614   } | 
| 615 | 615 | 
| 616   Description describe(Description description) { | 616   Description describe(Description description) { | 
| 617     description.addAll("(", ", ", ")", [_firstMatcher, _lastMatcher]); | 617     description.addAll("(", ", ", ")", [_firstMatcher, _lastMatcher]); | 
| 618   } | 618   } | 
| 619 } | 619 } | 
| OLD | NEW | 
|---|