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 1554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1565 var isolateStubs = isolateMatch != null ? isolateMatch[1] : ''; | 1565 var isolateStubs = isolateMatch != null ? isolateMatch[1] : ''; |
1566 var containsDomImport = domImportRegExp.hasMatch(contents); | 1566 var containsDomImport = domImportRegExp.hasMatch(contents); |
1567 | 1567 |
1568 var subtestNames = <String>[]; | 1568 var subtestNames = <String>[]; |
1569 var matchesIter = multiHtmlTestGroupRegExp.allMatches(contents).iterator; | 1569 var matchesIter = multiHtmlTestGroupRegExp.allMatches(contents).iterator; |
1570 while (matchesIter.moveNext() && isMultiHtmlTest) { | 1570 while (matchesIter.moveNext() && isMultiHtmlTest) { |
1571 var fullMatch = matchesIter.current.group(0); | 1571 var fullMatch = matchesIter.current.group(0); |
1572 subtestNames.add(fullMatch.substring(fullMatch.indexOf("'") + 1)); | 1572 subtestNames.add(fullMatch.substring(fullMatch.indexOf("'") + 1)); |
1573 } | 1573 } |
1574 | 1574 |
| 1575 // TODO(rnystrom): During the migration of the existing tests to Dart 2.0, |
| 1576 // we have a number of tests that used to both generate static type warnings |
| 1577 // and also validate some runtime behavior in an implementation that |
| 1578 // ignores those warnings. Those warnings are now errors. The test code |
| 1579 // validates the runtime behavior can and should be removed, but the code |
| 1580 // that causes the static warning should still be preserved since that is |
| 1581 // part of our coverage of the static type system. |
| 1582 // |
| 1583 // The test needs to indicate that it should have a static error. We could |
| 1584 // put that in the status file, but that makes it confusing because it |
| 1585 // would look like implementations that *don't* report the error are more |
| 1586 // correct. Eventually, we want to have a notation similar to what front_end |
| 1587 // is using for the inference tests where we can put a comment inside the |
| 1588 // test that says "This specific static error should be reported right by |
| 1589 // this token." |
| 1590 // |
| 1591 // That system isn't in place yet, so we do a crude approximation here in |
| 1592 // test.dart. If a test contains `/*@compile-error=`, which matches the |
| 1593 // beginning of the tag syntax that front_end uses, then we assume that |
| 1594 // this test must have a static error somewhere in it. |
| 1595 // |
| 1596 // Redo this code once we have a more precise test framework for detecting |
| 1597 // and locating these errors. |
| 1598 var hasCompileError = contents.contains("/*@compile-error="); |
| 1599 |
1575 return { | 1600 return { |
1576 "vmOptions": result, | 1601 "vmOptions": result, |
1577 "sharedOptions": sharedOptions ?? [], | 1602 "sharedOptions": sharedOptions ?? [], |
1578 "dartOptions": dartOptions, | 1603 "dartOptions": dartOptions, |
1579 "packageRoot": packageRoot, | 1604 "packageRoot": packageRoot, |
1580 "packages": packages, | 1605 "packages": packages, |
1581 "hasCompileError": false, | 1606 "hasCompileError": hasCompileError, |
1582 "hasRuntimeError": false, | 1607 "hasRuntimeError": false, |
1583 "hasStaticWarning": false, | 1608 "hasStaticWarning": false, |
1584 "otherScripts": otherScripts, | 1609 "otherScripts": otherScripts, |
1585 "otherResources": otherResources, | 1610 "otherResources": otherResources, |
1586 "isMultitest": isMultitest, | 1611 "isMultitest": isMultitest, |
1587 "isMultiHtmlTest": isMultiHtmlTest, | 1612 "isMultiHtmlTest": isMultiHtmlTest, |
1588 "subtestNames": subtestNames, | 1613 "subtestNames": subtestNames, |
1589 "isolateStubs": isolateStubs, | 1614 "isolateStubs": isolateStubs, |
1590 "containsDomImport": containsDomImport | 1615 "containsDomImport": containsDomImport |
1591 }; | 1616 }; |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1765 | 1790 |
1766 bool isTestFile(String filename) { | 1791 bool isTestFile(String filename) { |
1767 // NOTE: We exclude tests and patch files for now. | 1792 // NOTE: We exclude tests and patch files for now. |
1768 return filename.endsWith(".dart") && | 1793 return filename.endsWith(".dart") && |
1769 !filename.endsWith("_test.dart") && | 1794 !filename.endsWith("_test.dart") && |
1770 !filename.contains("_internal/js_runtime/lib"); | 1795 !filename.contains("_internal/js_runtime/lib"); |
1771 } | 1796 } |
1772 | 1797 |
1773 bool get listRecursively => true; | 1798 bool get listRecursively => true; |
1774 } | 1799 } |
OLD | NEW |