Chromium Code Reviews| 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 694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 705 multitestName: optionsFromFile['isMultitest'] ? info.multitestKey : ""); | 705 multitestName: optionsFromFile['isMultitest'] ? info.multitestKey : ""); |
| 706 | 706 |
| 707 Set<Expectation> expectations = testExpectations.expectations(testName); | 707 Set<Expectation> expectations = testExpectations.expectations(testName); |
| 708 if (configuration['compiler'] != 'none' && info.hasCompileError) { | 708 if (configuration['compiler'] != 'none' && info.hasCompileError) { |
| 709 // If a compile-time error is expected, and we're testing a | 709 // If a compile-time error is expected, and we're testing a |
| 710 // compiler, we never need to attempt to run the program (in a | 710 // compiler, we never need to attempt to run the program (in a |
| 711 // browser or otherwise). | 711 // browser or otherwise). |
| 712 enqueueStandardTest(info, testName, expectations); | 712 enqueueStandardTest(info, testName, expectations); |
| 713 } else if (TestUtils.isBrowserRuntime(configuration['runtime'])) { | 713 } else if (TestUtils.isBrowserRuntime(configuration['runtime'])) { |
| 714 bool isWrappingRequired = configuration['compiler'] != 'dart2js'; | 714 bool isWrappingRequired = configuration['compiler'] != 'dart2js'; |
| 715 | |
| 715 if (info.optionsFromFile['isMultiHtmlTest']) { | 716 if (info.optionsFromFile['isMultiHtmlTest']) { |
| 716 // A browser multi-test has multiple expectations for one test file. | 717 // A browser multi-test has multiple expectations for one test file. |
| 717 // Find all the different sub-test expecations for one entire test file. | 718 // Find all the different sub-test expecations for one entire test file. |
| 718 List<String> subtestNames = info.optionsFromFile['subtestNames']; | 719 List<String> subtestNames = info.optionsFromFile['subtestNames']; |
| 719 Map<String, Set<Expectation>> multiHtmlTestExpectations = {}; | 720 Map<String, Set<Expectation>> multiHtmlTestExpectations = {}; |
| 720 for (String name in subtestNames) { | 721 for (String name in subtestNames) { |
| 721 String fullTestName = '$testName/$name'; | 722 String fullTestName = '$testName/$name'; |
| 722 multiHtmlTestExpectations[fullTestName] = | 723 multiHtmlTestExpectations[fullTestName] = |
| 723 testExpectations.expectations(fullTestName); | 724 testExpectations.expectations(fullTestName); |
| 724 } | 725 } |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 910 | 911 |
| 911 var local_ip = configuration['local_ip']; | 912 var local_ip = configuration['local_ip']; |
| 912 var url= 'http://$local_ip:$serverPort$pathComponent' | 913 var url= 'http://$local_ip:$serverPort$pathComponent' |
| 913 '?crossOriginPort=$crossOriginPort'; | 914 '?crossOriginPort=$crossOriginPort'; |
| 914 if (info.optionsFromFile['isMultiHtmlTest'] && subtestNames.length > 0) { | 915 if (info.optionsFromFile['isMultiHtmlTest'] && subtestNames.length > 0) { |
| 915 url= '${url}&group=${subtestNames[subtestIndex]}'; | 916 url= '${url}&group=${subtestNames[subtestIndex]}'; |
| 916 } | 917 } |
| 917 return url; | 918 return url; |
| 918 } | 919 } |
| 919 | 920 |
| 920 void _createWrapperFile(String dartWrapperFilename, dartLibraryFilename) { | 921 void _createWrapperFile(String dartWrapperFilename, |
| 922 Path dartLibraryFilename, | |
| 923 {bool useUnittestWrapper: false}) { | |
| 921 File file = new File(dartWrapperFilename); | 924 File file = new File(dartWrapperFilename); |
| 922 RandomAccessFile dartWrapper = file.openSync(mode: FileMode.WRITE); | 925 RandomAccessFile dartWrapper = file.openSync(mode: FileMode.WRITE); |
| 923 | 926 |
| 924 var usePackageImport = dartLibraryFilename.segments().contains("pkg"); | 927 var usePackageImport = dartLibraryFilename.segments().contains("pkg"); |
| 925 var libraryPathComponent = _createUrlPathFromFile(dartLibraryFilename); | 928 var libraryPathComponent = _createUrlPathFromFile(dartLibraryFilename); |
| 926 dartWrapper.writeStringSync(dartTestWrapper(usePackageImport, | 929 var generatedSource; |
| 927 libraryPathComponent)); | 930 if (useUnittestWrapper) { |
| 931 // FIXME(kustermann): This is broken, we can't do unittest-based wrapping | |
| 932 // of tests (e.g. async operations are not wrapped in expectAsync()). | |
| 933 generatedSource = dartUnittestWrapper(usePackageImport, | |
| 934 libraryPathComponent); | |
| 935 } else { | |
| 936 generatedSource = dartTestWrapper(libraryPathComponent); | |
| 937 } | |
| 938 | |
| 939 dartWrapper.writeStringSync(generatedSource); | |
| 928 dartWrapper.closeSync(); | 940 dartWrapper.closeSync(); |
| 929 } | 941 } |
| 930 | 942 |
| 931 /** | 943 /** |
| 932 * The [StandardTestSuite] has support for tests that | 944 * The [StandardTestSuite] has support for tests that |
| 933 * compile a test from Dart to JavaScript, and then run the resulting | 945 * compile a test from Dart to JavaScript, and then run the resulting |
| 934 * JavaScript. This function creates a working directory to hold the | 946 * JavaScript. This function creates a working directory to hold the |
| 935 * JavaScript version of the test, and copies the appropriate framework | 947 * JavaScript version of the test, and copies the appropriate framework |
| 936 * files to that directory. It creates a [BrowserTestCase], which has | 948 * files to that directory. It creates a [BrowserTestCase], which has |
| 937 * two sequential steps to be run by the [ProcessQueue] when the test is | 949 * two sequential steps to be run by the [ProcessQueue] when the test is |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 980 File customHtml = new File(customHtmlPath); | 992 File customHtml = new File(customHtmlPath); |
| 981 Path expectedOutput = null; | 993 Path expectedOutput = null; |
| 982 | 994 |
| 983 // Construct the command(s) that compile all the inputs needed by the | 995 // Construct the command(s) that compile all the inputs needed by the |
| 984 // browser test. For running Dart in DRT, this will be noop commands. | 996 // browser test. For running Dart in DRT, this will be noop commands. |
| 985 List<Command> commands = []; | 997 List<Command> commands = []; |
| 986 | 998 |
| 987 // Use existing HTML document if available. | 999 // Use existing HTML document if available. |
| 988 String htmlPath; | 1000 String htmlPath; |
| 989 if (customHtml.existsSync()) { | 1001 if (customHtml.existsSync()) { |
| 990 | |
| 991 // If necessary, run the Polymer deploy steps. | 1002 // If necessary, run the Polymer deploy steps. |
| 992 // TODO(jmesserly): this should be generalized for any tests that | 1003 // TODO(jmesserly): this should be generalized for any tests that |
| 993 // require Pub deploy, not just polymer. | 1004 // require Pub deploy, not just polymer. |
| 994 if (customHtml.readAsStringSync().contains('polymer/boot.js')) { | 1005 if (customHtml.readAsStringSync().contains('polymer/boot.js')) { |
| 995 if (compiler != 'none') { | 1006 if (compiler != 'none') { |
| 996 commands.add(_polymerDeployCommand( | 1007 commands.add(_polymerDeployCommand( |
| 997 customHtmlPath, tempDir, optionsFromFile)); | 1008 customHtmlPath, tempDir, optionsFromFile)); |
| 998 | 1009 |
| 999 htmlPath = '$tempDir/test/$nameNoExt.html'; | 1010 htmlPath = '$tempDir/test/$nameNoExt.html'; |
| 1000 dartWrapperFilename = '${htmlPath}_bootstrap.dart'; | 1011 dartWrapperFilename = '${htmlPath}_bootstrap.dart'; |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 1021 } | 1032 } |
| 1022 htmlContents = htmlContents.replaceAll('%TEST_SCRIPTS%', | 1033 htmlContents = htmlContents.replaceAll('%TEST_SCRIPTS%', |
| 1023 '<script src="$jsFile"></script>'); | 1034 '<script src="$jsFile"></script>'); |
| 1024 } | 1035 } |
| 1025 new File(htmlPath).writeAsStringSync(htmlContents); | 1036 new File(htmlPath).writeAsStringSync(htmlContents); |
| 1026 } | 1037 } |
| 1027 } else { | 1038 } else { |
| 1028 htmlPath = '$tempDir/test.html'; | 1039 htmlPath = '$tempDir/test.html'; |
| 1029 if (isWrappingRequired && !isWebTest) { | 1040 if (isWrappingRequired && !isWebTest) { |
| 1030 // test.dart will import the dart test. | 1041 // test.dart will import the dart test. |
| 1031 _createWrapperFile(dartWrapperFilename, filePath); | 1042 if (configuration['use_browser_controller'] && |
| 1043 configuration['runtime'] == 'dartium') { | |
| 1044 _createWrapperFile(dartWrapperFilename, filePath); | |
| 1045 } else { | |
| 1046 _createWrapperFile( | |
|
ricow1
2013/10/02 18:17:47
is this basically drt now?
kustermann
2013/10/03 11:06:02
Yes it is -- or rather content_shell.
I'll remove
| |
| 1047 dartWrapperFilename, filePath, useUnittestWrapper: true); | |
| 1048 } | |
| 1032 } else { | 1049 } else { |
| 1033 dartWrapperFilename = filename; | 1050 dartWrapperFilename = filename; |
| 1034 } | 1051 } |
| 1035 | 1052 |
| 1036 // Create the HTML file for the test. | 1053 // Create the HTML file for the test. |
| 1037 RandomAccessFile htmlTest = | 1054 RandomAccessFile htmlTest = |
| 1038 new File(htmlPath).openSync(mode: FileMode.WRITE); | 1055 new File(htmlPath).openSync(mode: FileMode.WRITE); |
| 1039 | 1056 |
| 1040 String scriptPath = dartWrapperFilename; | 1057 String scriptPath = dartWrapperFilename; |
| 1041 if (compiler != 'none') { | 1058 if (compiler != 'none') { |
| (...skipping 1011 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2053 * $pass tests are expected to pass | 2070 * $pass tests are expected to pass |
| 2054 * $failOk tests are expected to fail that we won't fix | 2071 * $failOk tests are expected to fail that we won't fix |
| 2055 * $fail tests are expected to fail that we should fix | 2072 * $fail tests are expected to fail that we should fix |
| 2056 * $crash tests are expected to crash that we should fix | 2073 * $crash tests are expected to crash that we should fix |
| 2057 * $timeout tests are allowed to timeout | 2074 * $timeout tests are allowed to timeout |
| 2058 * $compileErrorSkip tests are skipped on browsers due to compile-time error | 2075 * $compileErrorSkip tests are skipped on browsers due to compile-time error |
| 2059 """; | 2076 """; |
| 2060 print(report); | 2077 print(report); |
| 2061 } | 2078 } |
| 2062 } | 2079 } |
| OLD | NEW |