| Index: pkg/analyzer/test/src/task/options_test.dart
|
| diff --git a/pkg/analyzer/test/src/task/options_test.dart b/pkg/analyzer/test/src/task/options_test.dart
|
| index 869b6385e70e9bdb99593cd0517c1032ab0e2943..3b39f0baf4dbb55f6eb0fa038aeffab2117eb05e 100644
|
| --- a/pkg/analyzer/test/src/task/options_test.dart
|
| +++ b/pkg/analyzer/test/src/task/options_test.dart
|
| @@ -6,12 +6,13 @@ library test.src.task.options_test;
|
|
|
| import 'package:analyzer/analyzer.dart';
|
| import 'package:analyzer/source/analysis_options_provider.dart';
|
| -import 'package:analyzer/src/generated/engine.dart';
|
| +import 'package:analyzer/src/generated/engine.dart' hide AnalysisContextImpl;
|
| import 'package:analyzer/src/generated/source.dart';
|
| import 'package:analyzer/src/task/options.dart';
|
| import 'package:analyzer/task/general.dart';
|
| import 'package:analyzer/task/model.dart';
|
| import 'package:unittest/unittest.dart';
|
| +import 'package:yaml/yaml.dart';
|
|
|
| import '../../generated/test_support.dart';
|
| import '../../reflective_tests.dart';
|
| @@ -20,6 +21,7 @@ import '../context/abstract_context.dart';
|
|
|
| main() {
|
| initializeTestEnvironment();
|
| + runReflectiveTests(ContextConfigurationTest);
|
| runReflectiveTests(GenerateOptionsErrorsTaskTest);
|
| runReflectiveTests(OptionsFileValidatorTest);
|
| }
|
| @@ -28,6 +30,62 @@ isInstanceOf isGenerateOptionsErrorsTask =
|
| new isInstanceOf<GenerateOptionsErrorsTask>();
|
|
|
| @reflectiveTest
|
| +class ContextConfigurationTest extends AbstractContextTest {
|
| + final AnalysisOptionsProvider optionsProvider = new AnalysisOptionsProvider();
|
| +
|
| + AnalysisOptions get analysisOptions => context.analysisOptions;
|
| +
|
| + configureContext(String optionsSource) =>
|
| + configureContextOptions(context, parseOptions(optionsSource));
|
| +
|
| + Map<String, YamlNode> parseOptions(String source) =>
|
| + optionsProvider.getOptionsFromString(source);
|
| +
|
| + test_configure_enableSuperMixins() {
|
| + configureContext('''
|
| +analyzer:
|
| + language:
|
| + enableSuperMixins: true
|
| +''');
|
| + expect(analysisOptions.enableSuperMixins, true);
|
| + }
|
| +
|
| + test_configure_error_filters() {
|
| + configureContext('''
|
| +analyzer:
|
| + errors:
|
| + invalid_assignment: ignore
|
| + unused_local_variable: ignore
|
| +''');
|
| +
|
| + List<ErrorFilter> filters =
|
| + context.getConfigurationData(CONFIGURED_ERROR_FILTERS);
|
| + expect(filters, hasLength(2));
|
| +
|
| + var unused_error = new AnalysisError(
|
| + new TestSource(), 0, 1, HintCode.UNUSED_LOCAL_VARIABLE, [
|
| + ['x']
|
| + ]);
|
| + var invalid_assignment_error =
|
| + new AnalysisError(new TestSource(), 0, 1, HintCode.INVALID_ASSIGNMENT, [
|
| + ['x'],
|
| + ['y']
|
| + ]);
|
| +
|
| + expect(filters.any((filter) => filter(unused_error)), isTrue);
|
| + expect(filters.any((filter) => filter(invalid_assignment_error)), isTrue);
|
| + }
|
| +
|
| + test_configure_strong_mode() {
|
| + configureContext('''
|
| +analyzer:
|
| + strong-mode: true
|
| +''');
|
| + expect(analysisOptions.strongMode, true);
|
| + }
|
| +}
|
| +
|
| +@reflectiveTest
|
| class GenerateOptionsErrorsTaskTest extends AbstractContextTest {
|
| final optionsFilePath = '/${AnalysisEngine.ANALYSIS_OPTIONS_FILE}';
|
|
|
| @@ -129,8 +187,8 @@ analyzer:
|
| AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUES);
|
| expect(
|
| errors[0].message,
|
| - "The option 'not_supported' is not supported by analyzer, "
|
| - "supported values are 'errors', 'exclude', 'plugins' and 'strong-mode'");
|
| + "The option 'not_supported' is not supported by analyzer, supported "
|
| + "values are 'errors', 'exclude', 'language', 'plugins' and 'strong-mode'");
|
| }
|
| }
|
|
|
| @@ -146,7 +204,7 @@ class OptionsFileValidatorTest {
|
| analyzer:
|
| errors:
|
| unused_local_variable: ignore
|
| - ''',
|
| +''',
|
| []);
|
| }
|
|
|
| @@ -170,6 +228,36 @@ analyzer:
|
| [AnalysisOptionsWarningCode.UNRECOGNIZED_ERROR_CODE]);
|
| }
|
|
|
| + test_analyzer_language_supported() {
|
| + validate(
|
| + '''
|
| +analyzer:
|
| + language:
|
| + enableSuperMixins: true
|
| +''',
|
| + []);
|
| + }
|
| +
|
| + test_analyzer_language_unsupported_key() {
|
| + validate(
|
| + '''
|
| +analyzer:
|
| + language:
|
| + unsupported: true
|
| +''',
|
| + [AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUE]);
|
| + }
|
| +
|
| + test_analyzer_language_unsupported_value() {
|
| + validate(
|
| + '''
|
| +analyzer:
|
| + language:
|
| + enableSuperMixins: foo
|
| +''',
|
| + [AnalysisOptionsWarningCode.UNSUPPORTED_VALUE]);
|
| + }
|
| +
|
| test_analyzer_supported_exclude() {
|
| validate(
|
| '''
|
|
|