OLD | NEW |
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 /** | 5 /** |
6 * Classes and methods for enumerating and preparing tests. | 6 * Classes and methods for enumerating and preparing tests. |
7 * | 7 * |
8 * This library includes: | 8 * This library includes: |
9 * | 9 * |
10 * - Creating tests by listing all the Dart files in certain directories, | 10 * - Creating tests by listing all the Dart files in certain directories, |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 | 399 |
400 /** | 400 /** |
401 * A standard [TestSuite] implementation that searches for tests in a | 401 * A standard [TestSuite] implementation that searches for tests in a |
402 * directory, and creates [TestCase]s that compile and/or run them. | 402 * directory, and creates [TestCase]s that compile and/or run them. |
403 */ | 403 */ |
404 class StandardTestSuite extends TestSuite { | 404 class StandardTestSuite extends TestSuite { |
405 final Path suiteDir; | 405 final Path suiteDir; |
406 final List<String> statusFilePaths; | 406 final List<String> statusFilePaths; |
407 TestCaseEvent doTest; | 407 TestCaseEvent doTest; |
408 TestExpectations testExpectations; | 408 TestExpectations testExpectations; |
| 409 List<TestInformation> cachedTests; |
409 final Path dartDir; | 410 final Path dartDir; |
410 Predicate<String> isTestFilePredicate; | 411 Predicate<String> isTestFilePredicate; |
411 final bool listRecursively; | 412 final bool listRecursively; |
412 /** | 413 /** |
413 * The set of servers that have been started to run these tests (Could be | 414 * The set of servers that have been started to run these tests (Could be |
414 * none). | 415 * none). |
415 */ | 416 */ |
416 List serverList; | 417 List serverList; |
417 | 418 |
418 StandardTestSuite(Map configuration, | 419 StandardTestSuite(Map configuration, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
494 updateDartium().then((_) { | 495 updateDartium().then((_) { |
495 doTest = onTest; | 496 doTest = onTest; |
496 | 497 |
497 return readExpectations(); | 498 return readExpectations(); |
498 }).then((expectations) { | 499 }).then((expectations) { |
499 testExpectations = expectations; | 500 testExpectations = expectations; |
500 | 501 |
501 // Checked if we have already found and generated the tests for | 502 // Checked if we have already found and generated the tests for |
502 // this suite. | 503 // this suite. |
503 if (!testCache.containsKey(suiteName)) { | 504 if (!testCache.containsKey(suiteName)) { |
504 testCache[suiteName] = []; | 505 cachedTests = testCache[suiteName] = []; |
505 return enqueueTests(); | 506 return enqueueTests(); |
506 } else { | 507 } else { |
507 // We rely on enqueueing completing asynchronously. | 508 // We rely on enqueueing completing asynchronously. |
508 return asynchronously(() { | 509 return asynchronously(() { |
509 for (var info in testCache[suiteName]) { | 510 for (var info in testCache[suiteName]) { |
510 enqueueTestCaseFromTestInformation(info); | 511 enqueueTestCaseFromTestInformation(info); |
511 } | 512 } |
512 }); | 513 }); |
513 } | 514 } |
514 }).then((_) { | 515 }).then((_) { |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
617 var isNegative = info.hasCompileError; | 618 var isNegative = info.hasCompileError; |
618 if (info.hasRuntimeError && hasRuntime) { | 619 if (info.hasRuntimeError && hasRuntime) { |
619 isNegative = true; | 620 isNegative = true; |
620 } | 621 } |
621 | 622 |
622 // Look up expectations in status files using a test name generated | 623 // Look up expectations in status files using a test name generated |
623 // from the test file's path. | 624 // from the test file's path. |
624 String testName; | 625 String testName; |
625 | 626 |
626 if (optionsFromFile['isMultitest']) { | 627 if (optionsFromFile['isMultitest']) { |
627 // Multitests do not run on browsers. | |
628 if (TestUtils.isBrowserRuntime(configuration['runtime'])) return; | |
629 // Multitests are in [build directory]/generated_tests/... . | 628 // Multitests are in [build directory]/generated_tests/... . |
630 // The test name will be '[test filename (no extension)]/[multitest key]. | 629 // The test name will be '[test filename (no extension)]/[multitest key]. |
631 String name = filePath.filenameWithoutExtension; | 630 String name = filePath.filenameWithoutExtension; |
632 int middle = name.lastIndexOf('_'); | 631 int middle = name.lastIndexOf('_'); |
633 testName = '${name.substring(0, middle)}/${name.substring(middle + 1)}'; | 632 testName = '${name.substring(0, middle)}/${name.substring(middle + 1)}'; |
634 } else { | 633 } else { |
635 // The test name is the relative path from the test suite directory to | 634 // The test name is the relative path from the test suite directory to |
636 // the test, with the .dart extension removed. | 635 // the test, with the .dart extension removed. |
637 Expect.isTrue(filePath.toNativePath().startsWith( | 636 Expect.isTrue(filePath.toNativePath().startsWith( |
638 suiteDir.toNativePath())); | 637 suiteDir.toNativePath())); |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
795 bool hasFatalTypeErrors: false, | 794 bool hasFatalTypeErrors: false, |
796 Set<String> multitestOutcome: null}) { | 795 Set<String> multitestOutcome: null}) { |
797 // Cache the test information for each test case. | 796 // Cache the test information for each test case. |
798 var info = new TestInformation(filePath, | 797 var info = new TestInformation(filePath, |
799 optionsFromFile, | 798 optionsFromFile, |
800 hasCompileError, | 799 hasCompileError, |
801 hasRuntimeError, | 800 hasRuntimeError, |
802 isNegativeIfChecked, | 801 isNegativeIfChecked, |
803 hasFatalTypeErrors, | 802 hasFatalTypeErrors, |
804 multitestOutcome); | 803 multitestOutcome); |
| 804 cachedTests.add(info); |
805 enqueueTestCaseFromTestInformation(info); | 805 enqueueTestCaseFromTestInformation(info); |
806 }; | 806 }; |
807 } | 807 } |
808 | 808 |
809 /** | 809 /** |
810 * The [StandardTestSuite] has support for tests that | 810 * The [StandardTestSuite] has support for tests that |
811 * compile a test from Dart to JavaScript, and then run the resulting | 811 * compile a test from Dart to JavaScript, and then run the resulting |
812 * JavaScript. This function creates a working directory to hold the | 812 * JavaScript. This function creates a working directory to hold the |
813 * JavaScript version of the test, and copies the appropriate framework | 813 * JavaScript version of the test, and copies the appropriate framework |
814 * files to that directory. It creates a [BrowserTestCase], which has | 814 * files to that directory. It creates a [BrowserTestCase], which has |
(...skipping 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1829 * $pass tests are expected to pass | 1829 * $pass tests are expected to pass |
1830 * $failOk tests are expected to fail that we won't fix | 1830 * $failOk tests are expected to fail that we won't fix |
1831 * $fail tests are expected to fail that we should fix | 1831 * $fail tests are expected to fail that we should fix |
1832 * $crash tests are expected to crash that we should fix | 1832 * $crash tests are expected to crash that we should fix |
1833 * $timeout tests are allowed to timeout | 1833 * $timeout tests are allowed to timeout |
1834 * $compileErrorSkip tests are skipped on browsers due to compile-time error | 1834 * $compileErrorSkip tests are skipped on browsers due to compile-time error |
1835 """; | 1835 """; |
1836 print(report); | 1836 print(report); |
1837 } | 1837 } |
1838 } | 1838 } |
OLD | NEW |