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

Side by Side Diff: pkg/analyzer_cli/test/driver_test.dart

Issue 2968303002: Additional tests for build mode. (Closed)
Patch Set: Created 3 years, 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 analyzer_cli.test.driver; 5 library analyzer_cli.test.driver;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:analyzer/error/error.dart'; 10 import 'package:analyzer/error/error.dart';
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 ErrorProcessor processorFor(AnalysisError error) => 215 ErrorProcessor processorFor(AnalysisError error) =>
216 processors.firstWhere((p) => p.appliesTo(error)); 216 processors.firstWhere((p) => p.appliesTo(error));
217 217
218 /// Normalize text with bullets. 218 /// Normalize text with bullets.
219 String _bulletToDash(item) => '$item'.replaceAll('•', '-'); 219 String _bulletToDash(item) => '$item'.replaceAll('•', '-');
220 220
221 void _test_buildMode() { 221 void _test_buildMode() {
222 void createTests(String designator, String optionsFileName) { 222 void createTests(String designator, String optionsFileName) {
223 group('build-mode - $designator', () { 223 group('build-mode - $designator', () {
224 // Shared driver command. 224 // Shared driver command.
225 Future<Null> doDrive(String filePath, 225 Future<Null> doDrive(String path,
226 {List<String> additionalArgs: const []}) async { 226 {String uri, List<String> additionalArgs: const []}) async {
227 await drive('file:///test_file.dart|$filePath', 227 uri ??= 'file:///test_file.dart';
228 await drive('$uri|$path',
228 args: [ 229 args: [
229 '--dart-sdk', 230 '--dart-sdk',
230 findSdkDirForSummaries(), 231 findSdkDirForSummaries(),
231 '--build-mode', 232 '--build-mode',
232 '--format=machine' 233 '--format=machine'
233 ]..addAll(additionalArgs), 234 ]..addAll(additionalArgs),
234 options: 'data/options_tests_project/$optionsFileName'); 235 options: 'data/options_tests_project/$optionsFileName');
235 } 236 }
236 237
237 test('no stats', () async { 238 test('no stats', () async {
(...skipping 18 matching lines...) Expand all
256 }); 257 });
257 258
258 test( 259 test(
259 'Succeeds if there are errors, when --build-suppress-exit-code is give n', 260 'Succeeds if there are errors, when --build-suppress-exit-code is give n',
260 () async { 261 () async {
261 await doDrive(path.join('data', 'file_with_error.dart'), 262 await doDrive(path.join('data', 'file_with_error.dart'),
262 additionalArgs: ['--build-suppress-exit-code']); 263 additionalArgs: ['--build-suppress-exit-code']);
263 expect(exitCode, 0); 264 expect(exitCode, 0);
264 }); 265 });
265 266
267 test('Consume summaries', () async {
268 await withTempDirAsync((tempDir) async {
269 var aDart = path.join(tempDir, 'a.dart');
270 var bDart = path.join(tempDir, 'b.dart');
271 var cDart = path.join(tempDir, 'c.dart');
272
273 var aUri = 'package:aaa/a.dart';
274 var bUri = 'package:bbb/b.dart';
275 var cUri = 'package:ccc/c.dart';
276
277 var aSum = path.join(tempDir, 'a.sum');
278 var bSum = path.join(tempDir, 'b.sum');
279 var cSum = path.join(tempDir, 'c.sum');
280
281 new File(aDart).writeAsStringSync('class A {}');
282 new File(bDart).writeAsStringSync('''
283 export 'package:aaa/a.dart';
284 class B {}
285 ''');
286 new File(cDart).writeAsStringSync('''
287 import 'package:bbb/b.dart';
288 var a = new A();
289 var b = new B();
290 ''');
291
292 // Analyze package:aaa/a.dart and compute summary.
293 {
294 await doDrive(aDart,
295 uri: aUri, additionalArgs: ['--build-summary-output=$aSum']);
296 expect(exitCode, 0);
297 var bytes = new File(aSum).readAsBytesSync();
298 var bundle = new PackageBundle.fromBuffer(bytes);
299 expect(bundle.unlinkedUnitUris, equals([aUri]));
300 expect(bundle.linkedLibraryUris, equals([aUri]));
301 }
302
303 // Analyze package:bbb/b.dart and compute summary.
304 {
305 await doDrive(bDart, uri: bUri, additionalArgs: [
306 '--build-summary-input=$aSum',
307 '--build-summary-output=$bSum'
308 ]);
309 expect(exitCode, 0);
310 var bytes = new File(bSum).readAsBytesSync();
311 var bundle = new PackageBundle.fromBuffer(bytes);
312 expect(bundle.unlinkedUnitUris, equals([bUri]));
313 expect(bundle.linkedLibraryUris, equals([bUri]));
314 }
315
316 // Analyze package:ccc/c.dart and compute summary.
317 {
318 await doDrive(cDart, uri: cUri, additionalArgs: [
319 '--build-summary-input=$aSum,$bSum',
320 '--build-summary-output=$cSum'
321 ]);
322 expect(exitCode, 0);
323 var bytes = new File(cSum).readAsBytesSync();
324 var bundle = new PackageBundle.fromBuffer(bytes);
325 expect(bundle.unlinkedUnitUris, equals([cUri]));
326 expect(bundle.linkedLibraryUris, equals([cUri]));
327 }
328 });
329 });
330
331 test('Error - unlinked summary as linked', () async {
332 await withTempDirAsync((tempDir) async {
333 var aDart = path.join(tempDir, 'a.dart');
334 var bDart = path.join(tempDir, 'b.dart');
335
336 var aUri = 'package:aaa/a.dart';
337 var bUri = 'package:bbb/b.dart';
338
339 var aSum = path.join(tempDir, 'a.sum');
340 var bSum = path.join(tempDir, 'b.sum');
341
342 new File(aDart).writeAsStringSync('class A {}');
343
344 // Build unlinked a.sum
345 await doDrive(aDart, uri: aUri, additionalArgs: [
346 '--build-summary-only',
347 '--build-summary-only-unlinked',
348 '--build-summary-output=$aSum'
349 ]);
350 expect(new File(aSum).existsSync(), isTrue);
351
352 // Try to consume unlinked a.sum as linked.
353 try {
354 await doDrive(bDart, uri: bUri, additionalArgs: [
355 '--build-summary-input=$aSum',
356 '--build-summary-output=$bSum'
357 ]);
358 fail('ArgumentError expected.');
359 } on ArgumentError catch (e) {
360 expect(e.message,
361 contains('Got an unlinked summary for --build-summary-input'));
362 }
363 });
364 });
365
366 test('Error - linked summary as unlinked', () async {
367 await withTempDirAsync((tempDir) async {
368 var aDart = path.join(tempDir, 'a.dart');
369 var bDart = path.join(tempDir, 'b.dart');
370
371 var aUri = 'package:aaa/a.dart';
372 var bUri = 'package:bbb/b.dart';
373
374 var aSum = path.join(tempDir, 'a.sum');
375 var bSum = path.join(tempDir, 'b.sum');
376
377 new File(aDart).writeAsStringSync('class A {}');
378
379 // Build linked a.sum
380 await doDrive(aDart, uri: aUri, additionalArgs: [
381 '--build-summary-only',
382 '--build-summary-output=$aSum'
383 ]);
384 expect(new File(aSum).existsSync(), isTrue);
385
386 // Try to consume linked a.sum as unlinked.
387 try {
388 await doDrive(bDart, uri: bUri, additionalArgs: [
389 '--build-summary-unlinked-input=$aSum',
390 '--build-summary-output=$bSum'
391 ]);
392 fail('ArgumentError expected.');
393 } on ArgumentError catch (e) {
394 expect(
395 e.message,
396 contains(
397 'Got a linked summary for --build-summary-input-unlinked'));
398 }
399 });
400 });
401
266 test('Linked summary', () async { 402 test('Linked summary', () async {
267 await withTempDirAsync((tempDir) async { 403 await withTempDirAsync((tempDir) async {
268 var outputPath = path.join(tempDir, 'test_file.dart.sum'); 404 var outputPath = path.join(tempDir, 'test_file.dart.sum');
269 await doDrive(path.join('data', 'test_file.dart'), additionalArgs: [ 405 await doDrive(path.join('data', 'test_file.dart'), additionalArgs: [
270 '--build-summary-only', 406 '--build-summary-only',
271 '--build-summary-output=$outputPath' 407 '--build-summary-output=$outputPath'
272 ]); 408 ]);
273 var output = new File(outputPath); 409 var output = new File(outputPath);
274 expect(output.existsSync(), isTrue); 410 expect(output.existsSync(), isTrue);
275 PackageBundle bundle = 411 PackageBundle bundle =
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 }); 759 });
624 }); 760 });
625 } 761 }
626 762
627 class TestSource implements Source { 763 class TestSource implements Source {
628 TestSource(); 764 TestSource();
629 765
630 @override 766 @override
631 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); 767 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
632 } 768 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698