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

Side by Side Diff: tests/compiler/dart2js/warnings_checker.dart

Issue 2345083003: dart2js: run dartfmt on tests (Closed)
Patch Set: revert another multipart test Created 4 years, 3 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 | « tests/compiler/dart2js/value_range_test.dart ('k') | tests/compiler/dart2js/world_test.dart » ('j') | 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 // Test that dart2js produces the expected static type warnings to ensures that 5 // Test that dart2js produces the expected static type warnings to ensures that
6 // the analyzer and dart2js agrees on the tests. 6 // the analyzer and dart2js agrees on the tests.
7 7
8 import 'dart:async'; 8 import 'dart:async';
9 import 'dart:io'; 9 import 'dart:io';
10 import 'package:expect/expect.dart'; 10 import 'package:expect/expect.dart';
11 import 'package:async_helper/async_helper.dart'; 11 import 'package:async_helper/async_helper.dart';
12 import 'memory_compiler.dart'; 12 import 'memory_compiler.dart';
13 import 'package:compiler/src/commandline_options.dart'; 13 import 'package:compiler/src/commandline_options.dart';
14 import 'package:compiler/src/filenames.dart'; 14 import 'package:compiler/src/filenames.dart';
15 import 'package:compiler/src/io/source_file.dart'; 15 import 'package:compiler/src/io/source_file.dart';
16 import 'package:compiler/src/source_file_provider.dart'; 16 import 'package:compiler/src/source_file_provider.dart';
17 import 'package:compiler/src/util/uri_extras.dart'; 17 import 'package:compiler/src/util/uri_extras.dart';
18 import 'dart:convert'; 18 import 'dart:convert';
19 19
20 void checkWarnings(Map<String, dynamic> tests, [List<String> arguments]) { 20 void checkWarnings(Map<String, dynamic> tests, [List<String> arguments]) {
21 bool isWindows = Platform.isWindows; 21 bool isWindows = Platform.isWindows;
22 Uri script = currentDirectory.resolveUri(Platform.script); 22 Uri script = currentDirectory.resolveUri(Platform.script);
23 bool warningsMismatch = false; 23 bool warningsMismatch = false;
24 bool verbose = arguments != null && arguments.contains('-v'); 24 bool verbose = arguments != null && arguments.contains('-v');
25 asyncTest(() => Future.forEach(tests.keys, (String test) async { 25 asyncTest(() => Future.forEach(tests.keys, (String test) async {
26 Uri uri = script.resolve('../../$test'); 26 Uri uri = script.resolve('../../$test');
27 String source = UTF8.decode(readAll(uriPathToNative(uri.path))); 27 String source = UTF8.decode(readAll(uriPathToNative(uri.path)));
28 SourceFile file = new StringSourceFile( 28 SourceFile file = new StringSourceFile(
29 uri, relativize(currentDirectory, uri, isWindows), source); 29 uri, relativize(currentDirectory, uri, isWindows), source);
30 Map<int,String> expectedWarnings = {}; 30 Map<int, String> expectedWarnings = {};
31 int lineNo = 0; 31 int lineNo = 0;
32 for (String line in source.split('\n')) { 32 for (String line in source.split('\n')) {
33 if (line.contains('///') && 33 if (line.contains('///') &&
34 (line.contains('static type warning') || 34 (line.contains('static type warning') ||
35 line.contains('static warning'))) { 35 line.contains('static warning'))) {
36 expectedWarnings[lineNo] = line; 36 expectedWarnings[lineNo] = line;
37 } 37 }
38 lineNo++; 38 lineNo++;
39 }
40 Set<int> unseenWarnings = new Set<int>.from(expectedWarnings.keys);
41 DiagnosticCollector collector = new DiagnosticCollector();
42 await runCompiler(
43 entryPoint: uri,
44 diagnosticHandler: collector,
45 options: [Flags.analyzeOnly],
46 showDiagnostics: verbose);
47 Map<String, List<int>> statusMap = tests[test];
48 // Line numbers with known unexpected warnings.
49 List<int> unexpectedStatus = [];
50 if (statusMap != null && statusMap.containsKey('unexpected')) {
51 unexpectedStatus = statusMap['unexpected'];
52 }
53 // Line numbers with known missing warnings.
54 List<int> missingStatus = [];
55 if (statusMap != null && statusMap.containsKey('missing')) {
56 missingStatus = statusMap['missing'];
57 }
58 for (CollectedMessage message in collector.warnings) {
59 Expect.equals(uri, message.uri);
60 int lineNo = file.getLine(message.begin);
61 if (expectedWarnings.containsKey(lineNo)) {
62 unseenWarnings.remove(lineNo);
63 } else if (!unexpectedStatus.contains(lineNo+1)) {
64 warningsMismatch = true;
65 print(file.getLocationMessage(
66 'Unexpected warning: ${message.message}',
67 message.begin, message.end));
68 }
69 }
70 if (!unseenWarnings.isEmpty) {
71 for (int lineNo in unseenWarnings) {
72 if (!missingStatus.contains(lineNo+1)) {
73 warningsMismatch = true;
74 String line = expectedWarnings[lineNo];
75 print('$uri [${lineNo+1}]: Missing static type warning.');
76 print(line);
77 } 39 }
78 } 40 Set<int> unseenWarnings = new Set<int>.from(expectedWarnings.keys);
79 } 41 DiagnosticCollector collector = new DiagnosticCollector();
80 }).then((_) { 42 await runCompiler(
81 Expect.isFalse(warningsMismatch); 43 entryPoint: uri,
82 })); 44 diagnosticHandler: collector,
45 options: [Flags.analyzeOnly],
46 showDiagnostics: verbose);
47 Map<String, List<int>> statusMap = tests[test];
48 // Line numbers with known unexpected warnings.
49 List<int> unexpectedStatus = [];
50 if (statusMap != null && statusMap.containsKey('unexpected')) {
51 unexpectedStatus = statusMap['unexpected'];
52 }
53 // Line numbers with known missing warnings.
54 List<int> missingStatus = [];
55 if (statusMap != null && statusMap.containsKey('missing')) {
56 missingStatus = statusMap['missing'];
57 }
58 for (CollectedMessage message in collector.warnings) {
59 Expect.equals(uri, message.uri);
60 int lineNo = file.getLine(message.begin);
61 if (expectedWarnings.containsKey(lineNo)) {
62 unseenWarnings.remove(lineNo);
63 } else if (!unexpectedStatus.contains(lineNo + 1)) {
64 warningsMismatch = true;
65 print(file.getLocationMessage(
66 'Unexpected warning: ${message.message}',
67 message.begin,
68 message.end));
69 }
70 }
71 if (!unseenWarnings.isEmpty) {
72 for (int lineNo in unseenWarnings) {
73 if (!missingStatus.contains(lineNo + 1)) {
74 warningsMismatch = true;
75 String line = expectedWarnings[lineNo];
76 print('$uri [${lineNo+1}]: Missing static type warning.');
77 print(line);
78 }
79 }
80 }
81 }).then((_) {
82 Expect.isFalse(warningsMismatch);
83 }));
83 } 84 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/value_range_test.dart ('k') | tests/compiler/dart2js/world_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698