| Index: tests/compiler/dart2js/frontend_checker.dart
|
| diff --git a/tests/compiler/dart2js/frontend_checker.dart b/tests/compiler/dart2js/frontend_checker.dart
|
| index b4bd3a0ad1f53ccedb3b3606b53fa13fb4c42cc1..91fb719d6c08809d040c84d3e5e6eff8707e2ee3 100644
|
| --- a/tests/compiler/dart2js/frontend_checker.dart
|
| +++ b/tests/compiler/dart2js/frontend_checker.dart
|
| @@ -1,110 +1,110 @@
|
| -// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -// Checks that dart2js produces the expected static type warnings and
|
| -// compile-time errors for the provided multitests.
|
| -
|
| -import 'dart:async';
|
| -import 'dart:io';
|
| -
|
| -import 'package:async_helper/async_helper.dart';
|
| -import 'package:compiler/src/util/uri_extras.dart'
|
| - show relativize;
|
| -import 'memory_compiler.dart';
|
| -
|
| -import '../../../tools/testing/dart/multitest.dart'
|
| - show ExtractTestsFromMultitest;
|
| -import '../../../tools/testing/dart/path.dart'
|
| - show Path;
|
| -
|
| -
|
| -/// Check the analysis of the multitests in [testFiles] to result in the
|
| -/// expected static warnings and compile-time errors.
|
| -///
|
| -/// [testFiles] is a map of the test files to be checked together with their
|
| -/// associated white listing.
|
| -///
|
| -/// For instance if [testFiles] contain the mapping
|
| -/// 'language/async_await_syntax_test.dart': const ['a03b', 'a04b']
|
| -/// the multitests in 'language/async_await_syntax_test.dart' are checked but
|
| -/// the subtests 'a03b' and 'a04c' are expected to fail.
|
| -void check(Map<String, List<String>> testFiles,
|
| - {List<String> arguments: const <String>[],
|
| - List<String> options: const <String>[]}) {
|
| - bool outcomeMismatch = false;
|
| - bool verbose = arguments.contains('-v');
|
| - var cachedCompiler;
|
| - asyncTest(() => Future.forEach(testFiles.keys, (String testFile) {
|
| - Map<String, String> testSources = {};
|
| - Map<String, Set<String>> testOutcomes = {};
|
| - String fileName = 'tests/$testFile';
|
| - ExtractTestsFromMultitest(new Path(fileName), testSources, testOutcomes);
|
| - return Future.forEach(testSources.keys, (String testName) {
|
| - String testFileName = '$fileName/$testName';
|
| - Set<String> expectedOutcome = testOutcomes[testName];
|
| - bool expectFailure = testFiles[testFile].contains(testName);
|
| - DiagnosticCollector collector = new DiagnosticCollector();
|
| - var compiler = compilerFor(
|
| - {testFileName: testSources[testName]},
|
| - diagnosticHandler: collector,
|
| - options: ['--analyze-only']..addAll(options),
|
| - showDiagnostics: verbose,
|
| - cachedCompiler: cachedCompiler);
|
| - return compiler.run(Uri.parse('memory:$testFileName')).then((_) {
|
| - bool unexpectedResult = false;
|
| - if (expectedOutcome.contains('compile-time error')) {
|
| - if (collector.errors.isEmpty) {
|
| - print('$testFileName: Missing compile-time error.');
|
| - unexpectedResult = true;
|
| - }
|
| - } else if (expectedOutcome.contains('static type warning')) {
|
| - if (collector.warnings.isEmpty) {
|
| - print('$testFileName: Missing static type warning.');
|
| - unexpectedResult = true;
|
| - }
|
| - } else {
|
| - // Expect ok.
|
| - if (!collector.errors.isEmpty ||
|
| - !collector.warnings.isEmpty) {
|
| - collector.errors.forEach((message) {
|
| - print('$testFileName: Unexpected error: ${message.message}');
|
| - });
|
| - collector.warnings.forEach((message) {
|
| - print('$testFileName: Unexpected warning: ${message.message}');
|
| - });
|
| - unexpectedResult = true;
|
| - }
|
| - }
|
| - if (expectFailure) {
|
| - if (unexpectedResult) {
|
| - unexpectedResult = false;
|
| - } else {
|
| - print('$testFileName: The test is white-listed '
|
| - 'and therefore expected to fail.');
|
| - unexpectedResult = true;
|
| - }
|
| - }
|
| - if (unexpectedResult) {
|
| - outcomeMismatch = true;
|
| - }
|
| - cachedCompiler = compiler;
|
| - });
|
| - });
|
| - }).then((_) {
|
| - if (outcomeMismatch) {
|
| - String testFileName =
|
| - relativize(Uri.base, Platform.script, Platform.isWindows);
|
| - print('''
|
| -
|
| -===
|
| -=== ERROR: Unexpected result of analysis.
|
| -===
|
| -=== Please update the white-listing in $testFileName
|
| -===
|
| -
|
| -''');
|
| - exit(1);
|
| - }
|
| - }));
|
| -}
|
| +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +// Checks that dart2js produces the expected static type warnings and
|
| +// compile-time errors for the provided multitests.
|
| +
|
| +import 'dart:async';
|
| +import 'dart:io';
|
| +
|
| +import 'package:async_helper/async_helper.dart';
|
| +import 'package:compiler/src/util/uri_extras.dart'
|
| + show relativize;
|
| +import 'memory_compiler.dart';
|
| +
|
| +import '../../../tools/testing/dart/multitest.dart'
|
| + show ExtractTestsFromMultitest;
|
| +import '../../../tools/testing/dart/path.dart'
|
| + show Path;
|
| +
|
| +
|
| +/// Check the analysis of the multitests in [testFiles] to result in the
|
| +/// expected static warnings and compile-time errors.
|
| +///
|
| +/// [testFiles] is a map of the test files to be checked together with their
|
| +/// associated white listing.
|
| +///
|
| +/// For instance if [testFiles] contain the mapping
|
| +/// 'language/async_await_syntax_test.dart': const ['a03b', 'a04b']
|
| +/// the multitests in 'language/async_await_syntax_test.dart' are checked but
|
| +/// the subtests 'a03b' and 'a04c' are expected to fail.
|
| +void check(Map<String, List<String>> testFiles,
|
| + {List<String> arguments: const <String>[],
|
| + List<String> options: const <String>[]}) {
|
| + bool outcomeMismatch = false;
|
| + bool verbose = arguments.contains('-v');
|
| + var cachedCompiler;
|
| + asyncTest(() => Future.forEach(testFiles.keys, (String testFile) {
|
| + Map<String, String> testSources = {};
|
| + Map<String, Set<String>> testOutcomes = {};
|
| + String fileName = 'tests/$testFile';
|
| + ExtractTestsFromMultitest(new Path(fileName), testSources, testOutcomes);
|
| + return Future.forEach(testSources.keys, (String testName) {
|
| + String testFileName = '$fileName/$testName';
|
| + Set<String> expectedOutcome = testOutcomes[testName];
|
| + bool expectFailure = testFiles[testFile].contains(testName);
|
| + DiagnosticCollector collector = new DiagnosticCollector();
|
| + var compiler = compilerFor(
|
| + {testFileName: testSources[testName]},
|
| + diagnosticHandler: collector,
|
| + options: ['--analyze-only']..addAll(options),
|
| + showDiagnostics: verbose,
|
| + cachedCompiler: cachedCompiler);
|
| + return compiler.run(Uri.parse('memory:$testFileName')).then((_) {
|
| + bool unexpectedResult = false;
|
| + if (expectedOutcome.contains('compile-time error')) {
|
| + if (collector.errors.isEmpty) {
|
| + print('$testFileName: Missing compile-time error.');
|
| + unexpectedResult = true;
|
| + }
|
| + } else if (expectedOutcome.contains('static type warning')) {
|
| + if (collector.warnings.isEmpty) {
|
| + print('$testFileName: Missing static type warning.');
|
| + unexpectedResult = true;
|
| + }
|
| + } else {
|
| + // Expect ok.
|
| + if (!collector.errors.isEmpty ||
|
| + !collector.warnings.isEmpty) {
|
| + collector.errors.forEach((message) {
|
| + print('$testFileName: Unexpected error: ${message.message}');
|
| + });
|
| + collector.warnings.forEach((message) {
|
| + print('$testFileName: Unexpected warning: ${message.message}');
|
| + });
|
| + unexpectedResult = true;
|
| + }
|
| + }
|
| + if (expectFailure) {
|
| + if (unexpectedResult) {
|
| + unexpectedResult = false;
|
| + } else {
|
| + print('$testFileName: The test is white-listed '
|
| + 'and therefore expected to fail.');
|
| + unexpectedResult = true;
|
| + }
|
| + }
|
| + if (unexpectedResult) {
|
| + outcomeMismatch = true;
|
| + }
|
| + cachedCompiler = compiler;
|
| + });
|
| + });
|
| + }).then((_) {
|
| + if (outcomeMismatch) {
|
| + String testFileName =
|
| + relativize(Uri.base, Platform.script, Platform.isWindows);
|
| + print('''
|
| +
|
| +===
|
| +=== ERROR: Unexpected result of analysis.
|
| +===
|
| +=== Please update the white-listing in $testFileName
|
| +===
|
| +
|
| +''');
|
| + exit(1);
|
| + }
|
| + }));
|
| +}
|
|
|