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 952 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
963 if (pubspecYamlFile != null) { | 963 if (pubspecYamlFile != null) { |
964 var result = buildSpecialPackageRoot(pubspecYamlFile); | 964 var result = buildSpecialPackageRoot(pubspecYamlFile); |
965 baseCommands.addAll(result['commands']); | 965 baseCommands.addAll(result['commands']); |
966 packageRoot = result['package-root']; | 966 packageRoot = result['package-root']; |
967 if (optionsFromFile['packageRoot'] == null || | 967 if (optionsFromFile['packageRoot'] == null || |
968 optionsFromFile['packageRoot'] == "") { | 968 optionsFromFile['packageRoot'] == "") { |
969 optionsFromFile['packageRoot'] = packageRoot.toNativePath(); | 969 optionsFromFile['packageRoot'] = packageRoot.toNativePath(); |
970 } | 970 } |
971 } | 971 } |
972 } | 972 } |
973 if (configuration['package_root'] != null) { | 973 if (optionsFromFile['packageRoot'] == null && |
974 packageRoot = new Path(configuration['package_root']); | 974 optionsFromFile['packages'] == null) { |
975 optionsFromFile['packageRoot'] = packageRoot.toNativePath(); | 975 if (configuration['package_root'] != null) { |
| 976 packageRoot = new Path(configuration['package_root']); |
| 977 optionsFromFile['packageRoot'] = packageRoot.toNativePath(); |
| 978 } |
| 979 if (configuration['packages'] != null) { |
| 980 Path packages = new Path(configuration['packages']); |
| 981 optionsFromFile['packages'] = packages.toNativePath(); |
| 982 } |
976 } | 983 } |
977 if (configuration['packages'] != null) { | |
978 Path packages = new Path(configuration['packages']); | |
979 optionsFromFile['packages'] = packages.toNativePath(); | |
980 } | |
981 | |
982 if (new CompilerConfiguration(configuration).hasCompiler && | 984 if (new CompilerConfiguration(configuration).hasCompiler && |
983 expectCompileError(info)) { | 985 expectCompileError(info)) { |
984 // If a compile-time error is expected, and we're testing a | 986 // If a compile-time error is expected, and we're testing a |
985 // compiler, we never need to attempt to run the program (in a | 987 // compiler, we never need to attempt to run the program (in a |
986 // browser or otherwise). | 988 // browser or otherwise). |
987 enqueueStandardTest(baseCommands, info, testName, expectations); | 989 enqueueStandardTest(baseCommands, info, testName, expectations); |
988 } else if (TestUtils.isBrowserRuntime(configuration['runtime'])) { | 990 } else if (TestUtils.isBrowserRuntime(configuration['runtime'])) { |
989 if (info.optionsFromFile['isMultiHtmlTest']) { | 991 if (info.optionsFromFile['isMultiHtmlTest']) { |
990 // A browser multi-test has multiple expectations for one test file. | 992 // A browser multi-test has multiple expectations for one test file. |
991 // Find all the different sub-test expecations for one entire test file. | 993 // Find all the different sub-test expecations for one entire test file. |
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1578 args.add(filePath.toNativePath()); | 1580 args.add(filePath.toNativePath()); |
1579 if (dartOptions != null) { | 1581 if (dartOptions != null) { |
1580 args.addAll(dartOptions); | 1582 args.addAll(dartOptions); |
1581 } | 1583 } |
1582 | 1584 |
1583 return args; | 1585 return args; |
1584 } | 1586 } |
1585 | 1587 |
1586 String packagesArgument(String packageRootFromFile, | 1588 String packagesArgument(String packageRootFromFile, |
1587 String packagesFromFile) { | 1589 String packagesFromFile) { |
1588 if (packagesFromFile != null) { | 1590 if (packageRootFromFile == 'none' || |
| 1591 packagesFromFile == 'none') { |
| 1592 return null; |
| 1593 } else if (packagesFromFile != null) { |
1589 return '--packages=$packagesFromFile'; | 1594 return '--packages=$packagesFromFile'; |
1590 } else if (packageRootFromFile != null && packageRootFromFile != 'none') { | 1595 } else if (packageRootFromFile != null) { |
1591 return '--package-root=$packageRootFromFile'; | 1596 return '--package-root=$packageRootFromFile'; |
1592 } else { | 1597 } else { |
1593 return null; | 1598 return null; |
1594 } | 1599 } |
1595 } | 1600 } |
1596 | 1601 |
1597 /** | 1602 /** |
1598 * Special options for individual tests are currently specified in various | 1603 * Special options for individual tests are currently specified in various |
1599 * ways: with comments directly in test files, by using certain imports, or by | 1604 * ways: with comments directly in test files, by using certain imports, or by |
1600 * creating additional files in the test directories. | 1605 * creating additional files in the test directories. |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1705 for (var match in matches) { | 1710 for (var match in matches) { |
1706 if (sharedOptions != null) { | 1711 if (sharedOptions != null) { |
1707 throw new Exception( | 1712 throw new Exception( |
1708 'More than one "// SharedOptions=" line in test $filePath'); | 1713 'More than one "// SharedOptions=" line in test $filePath'); |
1709 } | 1714 } |
1710 sharedOptions = match[1].split(' ').where((e) => e != '').toList(); | 1715 sharedOptions = match[1].split(' ').where((e) => e != '').toList(); |
1711 } | 1716 } |
1712 | 1717 |
1713 matches = packageRootRegExp.allMatches(contents); | 1718 matches = packageRootRegExp.allMatches(contents); |
1714 for (var match in matches) { | 1719 for (var match in matches) { |
1715 if (packageRoot != null) { | 1720 if (packageRoot != null || packages != null) { |
1716 throw new Exception( | 1721 throw new Exception( |
1717 'More than one "// PackageRoot=" line in test $filePath'); | 1722 'More than one "// Package... line in test $filePath'); |
1718 } | 1723 } |
1719 packageRoot = match[1]; | 1724 packageRoot = match[1]; |
1720 if (packageRoot != 'none') { | 1725 if (packageRoot != 'none') { |
1721 // PackageRoot=none means that no package-root option should be given. | 1726 // PackageRoot=none means that no packages or package-root option |
| 1727 // should be given. Any other value overrides package-root and |
| 1728 // removes any packages option. Don't use with // Packages=. |
1722 packageRoot = '${filePath.directoryPath.join(new Path(packageRoot))}'; | 1729 packageRoot = '${filePath.directoryPath.join(new Path(packageRoot))}'; |
1723 } | 1730 } |
1724 } | 1731 } |
1725 | 1732 |
1726 matches = packagesRegExp.allMatches(contents); | 1733 matches = packagesRegExp.allMatches(contents); |
1727 for (var match in matches) { | 1734 for (var match in matches) { |
1728 if (packages != null) { | 1735 if (packages != null || packageRoot != null) { |
1729 throw new Exception( | 1736 throw new Exception( |
1730 'More than one "// Packages=" line in test $filePath'); | 1737 'More than one "// Package..." line in test $filePath'); |
1731 } | 1738 } |
1732 packages = match[1]; | 1739 packages = match[1]; |
1733 if (packages != 'none') { | 1740 if (packages != 'none') { |
1734 // Packages=none means that no packages option should be given. | 1741 // Packages=none means that no packages or package-root option |
| 1742 // should be given. Any other value overrides packages and removes |
| 1743 // any package-root option. Don't use with // PackageRoot=. |
1735 packages = '${filePath.directoryPath.join(new Path(packages))}'; | 1744 packages = '${filePath.directoryPath.join(new Path(packages))}'; |
1736 } | 1745 } |
1737 } | 1746 } |
1738 | 1747 |
1739 List<String> otherScripts = new List<String>(); | 1748 List<String> otherScripts = new List<String>(); |
1740 matches = otherScriptsRegExp.allMatches(contents); | 1749 matches = otherScriptsRegExp.allMatches(contents); |
1741 for (var match in matches) { | 1750 for (var match in matches) { |
1742 otherScripts.addAll(match[1].split(' ').where((e) => e != '').toList()); | 1751 otherScripts.addAll(match[1].split(' ').where((e) => e != '').toList()); |
1743 } | 1752 } |
1744 | 1753 |
(...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2476 } | 2485 } |
2477 if (path.length > WINDOWS_SHORTEN_PATH_LIMIT) { | 2486 if (path.length > WINDOWS_SHORTEN_PATH_LIMIT) { |
2478 ++shortNameCounter; | 2487 ++shortNameCounter; |
2479 var pathEnd = path.substring(path.length - WINDOWS_PATH_END_LENGTH); | 2488 var pathEnd = path.substring(path.length - WINDOWS_PATH_END_LENGTH); |
2480 path = "short${shortNameCounter}_$pathEnd"; | 2489 path = "short${shortNameCounter}_$pathEnd"; |
2481 } | 2490 } |
2482 } | 2491 } |
2483 return path; | 2492 return path; |
2484 } | 2493 } |
2485 } | 2494 } |
OLD | NEW |