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

Side by Side Diff: tools/testing/dart/multitest.dart

Issue 9466008: Use the component information when the test is being scheduled instead of when it's being created. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 10 months 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
« no previous file with comments | « no previous file | tools/testing/dart/test_suite.dart » ('j') | tools/testing/dart/test_suite.dart » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 #library("multitest"); 5 #library("multitest");
6 6
7 #import("dart:io"); 7 #import("dart:io");
8 8
9 // Multitests are Dart test scripts containing lines of the form 9 // Multitests are Dart test scripts containing lines of the form
10 // " [some dart code] /// [key]: [error type]" 10 // " [some dart code] /// [key]: [error type]"
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 } 116 }
117 117
118 118
119 void DoMultitest(String filename, 119 void DoMultitest(String filename,
120 String component, 120 String component,
121 String outputDir, 121 String outputDir,
122 String testDir, 122 String testDir,
123 Function doTest(String filename, 123 Function doTest(String filename,
124 bool isNegative, 124 bool isNegative,
125 [bool isNegativeIfChecked, 125 [bool isNegativeIfChecked,
126 bool hasFatalTypeErrors]), 126 bool hasFatalTypeErrors,
127 bool hasRuntimeErrors]),
127 Function multitestDone) { 128 Function multitestDone) {
128 // Each new test is a single String value in the Map tests. 129 // Each new test is a single String value in the Map tests.
129 Map<String, String> tests = new Map<String, String>(); 130 Map<String, String> tests = new Map<String, String>();
130 Map<String, String> outcomes = new Map<String, String>(); 131 Map<String, String> outcomes = new Map<String, String>();
131 ExtractTestsFromMultitest(filename, tests, outcomes); 132 ExtractTestsFromMultitest(filename, tests, outcomes);
132 133
133 String directory = CreateMultitestDirectory(outputDir, testDir); 134 String directory = CreateMultitestDirectory(outputDir, testDir);
134 String pathSeparator = new Platform().pathSeparator(); 135 String pathSeparator = new Platform().pathSeparator();
135 int start = filename.lastIndexOf(pathSeparator) + 1; 136 int start = filename.lastIndexOf(pathSeparator) + 1;
136 int end = filename.indexOf('.dart', start); 137 int end = filename.indexOf('.dart', start);
137 String baseFilename = filename.substring(start, end); 138 String baseFilename = filename.substring(start, end);
138 for (String key in tests.getKeys()) { 139 for (String key in tests.getKeys()) {
139 final String filename = '$directory/${baseFilename}_$key.dart'; 140 final String filename = '$directory/${baseFilename}_$key.dart';
140 final File file = new File(filename); 141 final File file = new File(filename);
141 142
142 file.createSync(); 143 file.createSync();
143 RandomAccessFile openedFile = file.openSync(FileMode.WRITE); 144 RandomAccessFile openedFile = file.openSync(FileMode.WRITE);
144 var bytes = tests[key].charCodes(); 145 var bytes = tests[key].charCodes();
145 openedFile.writeListSync(bytes, 0, bytes.length); 146 openedFile.writeListSync(bytes, 0, bytes.length);
146 openedFile.closeSync(); 147 openedFile.closeSync();
147 var outcome = outcomes[key]; 148 var outcome = outcomes[key];
148 bool enableFatalTypeErrors = outcome.contains('static type error'); 149 bool enableFatalTypeErrors = outcome.contains('static type error');
149 bool isNegative = (outcome.contains('compile-time error') 150 bool hasRuntimeErrors = outcome.contains('runtime error');
150 || (outcome.contains('runtime error') && (component != 'dartc'))); 151 bool isNegative = hasRuntimeErrors
152 || outcome.contains('compile-time error');
151 bool isNegativeIfChecked = outcome.contains('dynamic type error'); 153 bool isNegativeIfChecked = outcome.contains('dynamic type error');
152 doTest(filename, 154 doTest(filename,
153 isNegative, 155 isNegative,
154 isNegativeIfChecked, 156 isNegativeIfChecked,
155 enableFatalTypeErrors); 157 enableFatalTypeErrors,
158 hasRuntimeErrors);
156 } 159 }
157 multitestDone(); 160 multitestDone();
158 } 161 }
159 162
160 163
161 String CreateMultitestDirectory(String outputDir, String testDir) { 164 String CreateMultitestDirectory(String outputDir, String testDir) {
162 final String generatedTestDirectory = 'generated_tests'; 165 final String generatedTestDirectory = 'generated_tests';
163 Directory generatedTestDir = new Directory('$outputDir/generated_tests'); 166 Directory generatedTestDir = new Directory('$outputDir/generated_tests');
164 if (!new Directory(outputDir).existsSync()) { 167 if (!new Directory(outputDir).existsSync()) {
165 new Directory(outputDir).createSync(); 168 new Directory(outputDir).createSync();
166 } 169 }
167 if (!generatedTestDir.existsSync()) { 170 if (!generatedTestDir.existsSync()) {
168 generatedTestDir.createSync(); 171 generatedTestDir.createSync();
169 } 172 }
170 var split = testDir.split('/'); 173 var split = testDir.split('/');
171 var lastComponent = split.removeLast(); 174 var lastComponent = split.removeLast();
172 Expect.isTrue(lastComponent == 'src'); 175 Expect.isTrue(lastComponent == 'src');
173 String path = '${generatedTestDir.path}/${split.last()}'; 176 String path = '${generatedTestDir.path}/${split.last()}';
174 Directory dir = new Directory(path); 177 Directory dir = new Directory(path);
175 if (!dir.existsSync()) { 178 if (!dir.existsSync()) {
176 dir.createSync(); 179 dir.createSync();
177 } 180 }
178 return path; 181 return path;
179 } 182 }
OLDNEW
« no previous file with comments | « no previous file | tools/testing/dart/test_suite.dart » ('j') | tools/testing/dart/test_suite.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698