| 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. | 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 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 _sandboxDir = createSystemTempDir(); | 366 _sandboxDir = createSystemTempDir(); |
| 367 d.defaultRoot = sandboxDir; | 367 d.defaultRoot = sandboxDir; |
| 368 currentSchedule.onComplete.schedule(() => deleteEntry(_sandboxDir), | 368 currentSchedule.onComplete.schedule(() => deleteEntry(_sandboxDir), |
| 369 'deleting the sandbox directory'); | 369 'deleting the sandbox directory'); |
| 370 | 370 |
| 371 // Schedule the test. | 371 // Schedule the test. |
| 372 body(); | 372 body(); |
| 373 }); | 373 }); |
| 374 } | 374 } |
| 375 | 375 |
| 376 /// Get the path to the root "pub/test" directory containing the pub | |
| 377 /// tests. | |
| 378 String get testDirectory => | |
| 379 p.absolute(p.dirname(libraryPath('test_pub'))); | |
| 380 | |
| 381 /// Schedules renaming (moving) the directory at [from] to [to], both of which | 376 /// Schedules renaming (moving) the directory at [from] to [to], both of which |
| 382 /// are assumed to be relative to [sandboxDir]. | 377 /// are assumed to be relative to [sandboxDir]. |
| 383 void scheduleRename(String from, String to) { | 378 void scheduleRename(String from, String to) { |
| 384 schedule( | 379 schedule( |
| 385 () => renameDir( | 380 () => renameDir( |
| 386 p.join(sandboxDir, from), | 381 p.join(sandboxDir, from), |
| 387 p.join(sandboxDir, to)), | 382 p.join(sandboxDir, to)), |
| 388 'renaming $from to $to'); | 383 'renaming $from to $to'); |
| 389 } | 384 } |
| 390 | 385 |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 850 "homepage": "http://pub.dartlang.org", | 845 "homepage": "http://pub.dartlang.org", |
| 851 "description": "A package, I guess." | 846 "description": "A package, I guess." |
| 852 }; | 847 }; |
| 853 | 848 |
| 854 if (dependencies != null) package["dependencies"] = dependencies; | 849 if (dependencies != null) package["dependencies"] = dependencies; |
| 855 | 850 |
| 856 return package; | 851 return package; |
| 857 } | 852 } |
| 858 | 853 |
| 859 /// Resolves [target] relative to the path to pub's `test/asset` directory. | 854 /// Resolves [target] relative to the path to pub's `test/asset` directory. |
| 860 String testAssetPath(String target) => | 855 String testAssetPath(String target) => p.join(pubRoot, 'test', 'asset', target); |
| 861 p.join(p.dirname(libraryPath('test_pub')), 'asset', target); | |
| 862 | 856 |
| 863 /// Returns a Map in the format used by the pub.dartlang.org API to represent a | 857 /// Returns a Map in the format used by the pub.dartlang.org API to represent a |
| 864 /// package version. | 858 /// package version. |
| 865 /// | 859 /// |
| 866 /// [pubspec] is the parsed pubspec of the package version. If [full] is true, | 860 /// [pubspec] is the parsed pubspec of the package version. If [full] is true, |
| 867 /// this returns the complete map, including metadata that's only included when | 861 /// this returns the complete map, including metadata that's only included when |
| 868 /// requesting the package version directly. | 862 /// requesting the package version directly. |
| 869 Map packageVersionApiMap(Map pubspec, {bool full: false}) { | 863 Map packageVersionApiMap(Map pubspec, {bool full: false}) { |
| 870 var name = pubspec['name']; | 864 var name = pubspec['name']; |
| 871 var version = pubspec['version']; | 865 var version = pubspec['version']; |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1020 _lastMatcher.matches(item.last, matchState); | 1014 _lastMatcher.matches(item.last, matchState); |
| 1021 } | 1015 } |
| 1022 | 1016 |
| 1023 Description describe(Description description) { | 1017 Description describe(Description description) { |
| 1024 return description.addAll("(", ", ", ")", [_firstMatcher, _lastMatcher]); | 1018 return description.addAll("(", ", ", ")", [_firstMatcher, _lastMatcher]); |
| 1025 } | 1019 } |
| 1026 } | 1020 } |
| 1027 | 1021 |
| 1028 /// A [StreamMatcher] that matches multiple lines of output. | 1022 /// A [StreamMatcher] that matches multiple lines of output. |
| 1029 StreamMatcher emitsLines(String output) => inOrder(output.split("\n")); | 1023 StreamMatcher emitsLines(String output) => inOrder(output.split("\n")); |
| OLD | NEW |