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

Side by Side Diff: chrome/browser/resources/hterm/js/test_manager.js

Issue 8680034: Initial landing of Screen, Terminal, and VT100 classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview JavaScript unit testing framework for synchronous and 6 * @fileoverview JavaScript unit testing framework for synchronous and
7 * asynchronous tests. 7 * asynchronous tests.
8 * 8 *
9 * This file contains the TestManager and related classes. At the moment it's 9 * This file contains the TestManager and related classes. At the moment it's
10 * all collected in a single file since it's reasonably small (=~1k lines), and 10 * all collected in a single file since it's reasonably small (=~1k lines), and
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 * this suite's testcases. 325 * this suite's testcases.
326 * 326 *
327 * Any exception here will abort the remainder of the test run. 327 * Any exception here will abort the remainder of the test run.
328 * 328 *
329 * @param {TestManager.Result} result The result object for the upcoming test. 329 * @param {TestManager.Result} result The result object for the upcoming test.
330 * @param {Object} cx The context object for a test run. 330 * @param {Object} cx The context object for a test run.
331 */ 331 */
332 TestManager.Suite.prototype.preamble = function(result, cx) {}; 332 TestManager.Suite.prototype.preamble = function(result, cx) {};
333 333
334 /** 334 /**
335 * Subclassable method called to do post-test tear-down.
336 *
337 * The default implementation of this method is a no-op. If your test suite
338 * requires some kind of pre-test setup, this is the place to do it.
339 *
340 * This can be used to avoid a bunch of boilerplate setup/teardown code in
341 * this suite's testcases.
342 *
343 * Any exception here will abort the remainder of the test run.
344 *
345 * @param {TestManager.Result} result The result object for the upcoming test.
346 * @param {Object} cx The context object for a test run.
347 */
348 TestManager.Suite.prototype.postamble = function(result, cx) {};
349
350 /**
335 * Object representing a single test in a test suite. 351 * Object representing a single test in a test suite.
336 * 352 *
337 * These are created as part of the TestManager.Suite.addTest() method. You 353 * These are created as part of the TestManager.Suite.addTest() method. You
338 * should never have to construct one by hand. 354 * should never have to construct one by hand.
339 * 355 *
340 * @param {TestManager.Suite} suiteClass The test suite class containing this 356 * @param {TestManager.Suite} suiteClass The test suite class containing this
341 * test. 357 * test.
342 * @param {string} testName The local name of this test case, not including the 358 * @param {string} testName The local name of this test case, not including the
343 * test suite name. 359 * test suite name.
344 * @param {function(TestManager.Result, Object)} testFunction The function to 360 * @param {function(TestManager.Result, Object)} testFunction The function to
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 */ 483 */
468 TestManager.TestRun.prototype.ALL_TESTS = new String('<all-tests>'); 484 TestManager.TestRun.prototype.ALL_TESTS = new String('<all-tests>');
469 485
470 /** 486 /**
471 * Add a single test to the test run. 487 * Add a single test to the test run.
472 */ 488 */
473 TestManager.TestRun.prototype.selectTest = function(test) { 489 TestManager.TestRun.prototype.selectTest = function(test) {
474 this.testQueue_.push(test); 490 this.testQueue_.push(test);
475 }; 491 };
476 492
477 TestManager.TestRun.prototype.selectSuite = function(suiteClass, pattern) { 493 TestManager.TestRun.prototype.selectSuite = function(suiteClass, opt_pattern) {
494 var pattern = opt_pattern || this.ALL_TESTS;
478 var selectCount = 0; 495 var selectCount = 0;
479
480 var testList = suiteClass.getTestList(); 496 var testList = suiteClass.getTestList();
481 497
482 for (var j = 0; j < testList.length; j++) { 498 for (var j = 0; j < testList.length; j++) {
483 var test = testList[j]; 499 var test = testList[j];
484 // Note that we're using "!==" rather than "!=" so that we're matching 500 // Note that we're using "!==" rather than "!=" so that we're matching
485 // the ALL_TESTS String object, rather than the contents of the string. 501 // the ALL_TESTS String object, rather than the contents of the string.
486 if (pattern !== this.ALL_TESTS) { 502 if (pattern !== this.ALL_TESTS) {
487 if (pattern instanceof RegExp) { 503 if (pattern instanceof RegExp) {
488 if (!pattern.test(test.testName)) 504 if (!pattern.test(test.testName))
489 continue; 505 continue;
490 } else if (testName != pattern) { 506 } else if (test.testName != pattern) {
491 continue; 507 continue;
492 } 508 }
493 } 509 }
494 510
495 this.selectTest(test); 511 this.selectTest(test);
496 selectCount++; 512 selectCount++;
497 } 513 }
498 514
499 return selectCount; 515 return selectCount;
500 }; 516 };
(...skipping 29 matching lines...) Expand all
530 * Hooked up to window.onerror during a test run in order to catch exceptions 546 * Hooked up to window.onerror during a test run in order to catch exceptions
531 * that would otherwise go uncaught. 547 * that would otherwise go uncaught.
532 */ 548 */
533 TestManager.TestRun.prototype.onUncaughtException_ = function( 549 TestManager.TestRun.prototype.onUncaughtException_ = function(
534 message, file, line) { 550 message, file, line) {
535 551
536 if (message.indexOf('Uncaught TestManager.Result.TestComplete') == 0) { 552 if (message.indexOf('Uncaught TestManager.Result.TestComplete') == 0) {
537 // This is a result.pass() or result.fail() call from a callback. We're 553 // This is a result.pass() or result.fail() call from a callback. We're
538 // already going to deal with it as part of the completeTest_() call 554 // already going to deal with it as part of the completeTest_() call
539 // that raised it. We can safely squelch this error message. 555 // that raised it. We can safely squelch this error message.
540 return false; 556 return true;
541 } 557 }
542 558
543 if (!this.currentResult) 559 if (!this.currentResult)
544 return; 560 return;
545 561
546 if (message == 'Uncaught ' + this.currentResult.expectedErrorMessage_) { 562 if (message == 'Uncaught ' + this.currentResult.expectedErrorMessage_) {
547 // Test cases may need to raise an unhandled exception as part of the test. 563 // Test cases may need to raise an unhandled exception as part of the test.
548 return; 564 return;
549 } 565 }
550 566
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 this.testManager.onTestRunComplete(this); 614 this.testManager.onTestRunComplete(this);
599 }; 615 };
600 616
601 /** 617 /**
602 * Called by the TestManager.Result object when a test completes. 618 * Called by the TestManager.Result object when a test completes.
603 * 619 *
604 * @param {TestManager.Result} result The result object which has just 620 * @param {TestManager.Result} result The result object which has just
605 * completed. 621 * completed.
606 */ 622 */
607 TestManager.TestRun.prototype.onResultComplete = function(result) { 623 TestManager.TestRun.prototype.onResultComplete = function(result) {
624 try {
625 result.suite.postamble();
626 } catch (ex) {
627 this.log.println('Unexpected exception in postamble: ' +
628 (ex.stack ? ex.stack : ex));
629 this.panic = true;
630 }
631
608 this.log.popPrefix(); 632 this.log.popPrefix();
609 this.log.print('} ' + result.status + ', ' + 633 this.log.print('} ' + result.status + ', ' +
610 this.msToSeconds_(result.duration)); 634 this.msToSeconds_(result.duration));
611 this.log.flush(); 635 this.log.flush();
612 636
613 if (result.status == result.FAILED) { 637 if (result.status == result.FAILED) {
614 this.failures.push(result); 638 this.failures.push(result);
615 this.currentSuite = null; 639 this.currentSuite = null;
616 } else if (result.status == result.PASSED) { 640 } else if (result.status == result.PASSED) {
617 this.passes.push(result); 641 this.passes.push(result);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 766
743 window.onerror = this.onUncaughtException_.bind(this); 767 window.onerror = this.onUncaughtException_.bind(this);
744 this.startDate = new Date(); 768 this.startDate = new Date();
745 this.runNextTest_(); 769 this.runNextTest_();
746 }; 770 };
747 771
748 /** 772 /**
749 * Format milliseconds as fractional seconds. 773 * Format milliseconds as fractional seconds.
750 */ 774 */
751 TestManager.TestRun.prototype.msToSeconds_ = function(ms) { 775 TestManager.TestRun.prototype.msToSeconds_ = function(ms) {
752 var secs = (ms / 100).toFixed(2); 776 var secs = (ms / 1000).toFixed(2);
753 return secs + 's'; 777 return secs + 's';
754 }; 778 };
755 779
756 /** 780 /**
757 * Log the current result summary. 781 * Log the current result summary.
758 */ 782 */
759 TestManager.TestRun.prototype.summarize = function() { 783 TestManager.TestRun.prototype.summarize = function() {
760 if (this.failures.length) { 784 if (this.failures.length) {
761 for (var i = 0; i < this.failures.length; i++) { 785 for (var i = 0; i < this.failures.length; i++) {
762 this.log.println('FAILED: ' + this.failures[i].test.fullName); 786 this.log.println('FAILED: ' + this.failures[i].test.fullName);
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
1022 * This will throw a TestCompleted exception, causing the current test to stop. 1046 * This will throw a TestCompleted exception, causing the current test to stop.
1023 * 1047 *
1024 * @param {string} opt_message Optional message to add to the log. 1048 * @param {string} opt_message Optional message to add to the log.
1025 */ 1049 */
1026 TestManager.Result.prototype.pass = function(opt_message) { 1050 TestManager.Result.prototype.pass = function(opt_message) {
1027 if (arguments.length) 1051 if (arguments.length)
1028 this.println(opt_message); 1052 this.println(opt_message);
1029 1053
1030 this.completeTest_(this.PASSED, true); 1054 this.completeTest_(this.PASSED, true);
1031 }; 1055 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698