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

Side by Side Diff: utils/tests/pub/test_pub.dart

Issue 11830017: Fix ALL the pub tests. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 Future cleanup() { 453 Future cleanup() {
454 return _runScheduled(createdSandboxDir, _scheduledCleanup).then((_) { 454 return _runScheduled(createdSandboxDir, _scheduledCleanup).then((_) {
455 _scheduled = null; 455 _scheduled = null;
456 _scheduledCleanup = null; 456 _scheduledCleanup = null;
457 _scheduledOnException = null; 457 _scheduledOnException = null;
458 if (createdSandboxDir != null) return deleteDir(createdSandboxDir); 458 if (createdSandboxDir != null) return deleteDir(createdSandboxDir);
459 return new Future.immediate(null); 459 return new Future.immediate(null);
460 }); 460 });
461 } 461 }
462 462
463 final future = _setUpSandbox().then((sandboxDir) { 463 timeout(_setUpSandbox().then((sandboxDir) {
464 createdSandboxDir = sandboxDir; 464 createdSandboxDir = sandboxDir;
465 return _runScheduled(sandboxDir, _scheduled); 465 return _runScheduled(sandboxDir, _scheduled);
466 }); 466 }).catchError((e) {
467
468 future.catchError((e) {
469 // If an error occurs during testing, delete the sandbox, throw the error so 467 // If an error occurs during testing, delete the sandbox, throw the error so
470 // that the test framework sees it, then finally call asyncDone so that the 468 // that the test framework sees it, then finally call asyncDone so that the
471 // test framework knows we're done doing asynchronous stuff. 469 // test framework knows we're done doing asynchronous stuff.
472 var subFuture = _runScheduled(createdSandboxDir, _scheduledOnException) 470 return _runScheduled(createdSandboxDir, _scheduledOnException)
473 .then((_) => cleanup()); 471 .then((_) => registerException(e.error, e.stackTrace)).catchError((e) {
474 subFuture.catchError((e) {
475 print("Exception while cleaning up: ${e.error}"); 472 print("Exception while cleaning up: ${e.error}");
476 print(e.stackTrace); 473 print(e.stackTrace);
477 registerException(e.error, e.stackTrace); 474 registerException(e.error, e.stackTrace);
478 return true;
479 }); 475 });
480 subFuture.then((_) => registerException(e.error, e.stackTrace)); 476 }), _TIMEOUT, 'waiting for a test to complete')
481 return true;
482 });
483
484 timeout(future, _TIMEOUT, 'waiting for a test to complete')
485 .then((_) => cleanup()) 477 .then((_) => cleanup())
486 .then((_) => asyncDone()); 478 .then((_) => asyncDone());
487 } 479 }
488 480
489 /// Get the path to the root "util/test/pub" directory containing the pub 481 /// Get the path to the root "util/test/pub" directory containing the pub
490 /// tests. 482 /// tests.
491 String get testDirectory { 483 String get testDirectory {
492 var dir = new Options().script; 484 var dir = new Options().script;
493 while (basename(dir) != 'pub') dir = dirname(dir); 485 while (basename(dir) != 'pub') dir = dirname(dir);
494 486
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 var error = new StringBuffer(); 826 var error = new StringBuffer();
835 error.add("No files named $name in $dir were valid:\n"); 827 error.add("No files named $name in $dir were valid:\n");
836 for (var failure in failures) { 828 for (var failure in failures) {
837 error.add(" $failure\n"); 829 error.add(" $failure\n");
838 } 830 }
839 completer.completeError( 831 completer.completeError(
840 new ExpectException(error.toString()), stackTrace); 832 new ExpectException(error.toString()), stackTrace);
841 } 833 }
842 834
843 for (var match in matches) { 835 for (var match in matches) {
844 var future = validate(match); 836 var future = validate(match).then((_) {
845 837 successes++;
846 future.catchError((e) { 838 checkComplete();
839 }).catchError((e) {
847 failures.add(e); 840 failures.add(e);
848 checkComplete(); 841 checkComplete();
849 }); 842 });
850
851 future.then((_) {
852 successes++;
853 checkComplete();
854 }).catchError((_) {});
855 } 843 }
856 return completer.future; 844 return completer.future;
857 }); 845 });
858 } 846 }
859 } 847 }
860 848
861 /// Describes a file. These are used both for setting up an expected directory 849 /// Describes a file. These are used both for setting up an expected directory
862 /// tree before running a test, and for validating that the file system matches 850 /// tree before running a test, and for validating that the file system matches
863 /// some expectations after running it. 851 /// some expectations after running it.
864 class FileDescriptor extends Descriptor { 852 class FileDescriptor extends Descriptor {
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 1101
1114 var sinkStream = new ListInputStream(); 1102 var sinkStream = new ListInputStream();
1115 var tempDir; 1103 var tempDir;
1116 // TODO(rnystrom): Use withTempDir() here. 1104 // TODO(rnystrom): Use withTempDir() here.
1117 // TODO(nweiz): propagate any errors to the return value. See issue 3657. 1105 // TODO(nweiz): propagate any errors to the return value. See issue 3657.
1118 createTempDir().then((_tempDir) { 1106 createTempDir().then((_tempDir) {
1119 tempDir = _tempDir; 1107 tempDir = _tempDir;
1120 return create(tempDir); 1108 return create(tempDir);
1121 }).then((tar) { 1109 }).then((tar) {
1122 var sourceStream = tar.openInputStream(); 1110 var sourceStream = tar.openInputStream();
1123 pipeInputToInput(sourceStream, sinkStream).then((_) { 1111 return pipeInputToInput(sourceStream, sinkStream).then((_) {
1124 tempDir.delete(recursive: true); 1112 tempDir.delete(recursive: true);
1125 }); 1113 });
1126 }); 1114 });
1127 return sinkStream; 1115 return sinkStream;
1128 } 1116 }
1129 } 1117 }
1130 1118
1131 /// A descriptor that validates that no file exists with the given name. 1119 /// A descriptor that validates that no file exists with the given name.
1132 class NothingDescriptor extends Descriptor { 1120 class NothingDescriptor extends Descriptor {
1133 NothingDescriptor(String name) : super(name); 1121 NothingDescriptor(String name) : super(name);
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
1551 /// calling [completion] is unnecessary. 1539 /// calling [completion] is unnecessary.
1552 void expectLater(Future actual, matcher, {String reason, 1540 void expectLater(Future actual, matcher, {String reason,
1553 FailureHandler failureHandler, bool verbose: false}) { 1541 FailureHandler failureHandler, bool verbose: false}) {
1554 _schedule((_) { 1542 _schedule((_) {
1555 return actual.then((value) { 1543 return actual.then((value) {
1556 expect(value, matcher, reason: reason, failureHandler: failureHandler, 1544 expect(value, matcher, reason: reason, failureHandler: failureHandler,
1557 verbose: false); 1545 verbose: false);
1558 }); 1546 });
1559 }); 1547 });
1560 } 1548 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698