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

Unified Diff: pkg/analyzer_cli/test/driver_test.dart

Issue 2967413002: Split driver_test main() into 4 tests methods. (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer_cli/test/driver_test.dart
diff --git a/pkg/analyzer_cli/test/driver_test.dart b/pkg/analyzer_cli/test/driver_test.dart
index fb7db7ea997397717e6584f3daf9897bed4a762f..1a49153a5f68962f600805bc3ad14db3bed7c87f 100644
--- a/pkg/analyzer_cli/test/driver_test.dart
+++ b/pkg/analyzer_cli/test/driver_test.dart
@@ -63,405 +63,10 @@ main() {
});
});
- group('exit codes', () {
- test('fatal hints', () async {
- await drive('data/file_with_hint.dart', args: ['--fatal-hints']);
- expect(exitCode, 1);
- });
-
- test('not fatal hints', () async {
- await drive('data/file_with_hint.dart');
- expect(exitCode, 0);
- });
-
- test('fatal errors', () async {
- await drive('data/file_with_error.dart');
- expect(exitCode, 3);
- });
-
- test('not fatal warnings', () async {
- await drive('data/file_with_warning.dart');
- expect(exitCode, 0);
- });
-
- test('fatal warnings', () async {
- await drive('data/file_with_warning.dart', args: ['--fatal-warnings']);
- expect(exitCode, 2);
- });
-
- test('not parse enableAssertInitializer', () async {
- await drive('data/file_with_assert_initializers.dart',
- args: ['--enable-assert-initializers']);
- expect(exitCode, 0);
- });
-
- test('missing options file', () async {
- await drive('data/test_file.dart', options: 'data/NO_OPTIONS_HERE');
- expect(exitCode, 3);
- });
-
- test('missing dart file', () async {
- await drive('data/NO_DART_FILE_HERE.dart');
- expect(exitCode, 3);
- });
-
- test('part file', () async {
- await drive('data/library_and_parts/part2.dart');
- expect(exitCode, 3);
- });
-
- test('non-dangling part file', () async {
- Driver driver = new Driver(isTesting: true);
- await driver.start([
- path.join(testDirectory, 'data/library_and_parts/lib.dart'),
- path.join(testDirectory, 'data/library_and_parts/part1.dart')
- ]);
- expect(exitCode, 0);
- });
-
- test('extra part file', () async {
- Driver driver = new Driver(isTesting: true);
- await driver.start([
- path.join(testDirectory, 'data/library_and_parts/lib.dart'),
- path.join(testDirectory, 'data/library_and_parts/part1.dart'),
- path.join(testDirectory, 'data/library_and_parts/part2.dart')
- ]);
- expect(exitCode, 3);
- });
-
- test('bazel workspace relative path', () async {
- // Copy to temp dir so that existing analysis options
- // in the test directory hierarchy do not interfere
- await withTempDirAsync((String tempDirPath) async {
- String dartSdkPath = path.absolute(getSdkPath());
- await recursiveCopy(
- new Directory(path.join(testDirectory, 'data', 'bazel')),
- tempDirPath);
- Directory origWorkingDir = Directory.current;
- try {
- Directory.current = path.join(tempDirPath, 'proj');
- Driver driver = new Driver(isTesting: true);
- try {
- await driver.start([
- path.join('lib', 'file.dart'),
- '--dart-sdk',
- dartSdkPath,
- ]);
- } catch (e) {
- print('=== debug info ===');
- print('dartSdkPath: $dartSdkPath');
- print('stderr:\n${errorSink.toString()}');
- rethrow;
- }
- expect(errorSink.toString(), isEmpty);
- expect(outSink.toString(), contains('No issues found'));
- expect(exitCode, 0);
- } finally {
- Directory.current = origWorkingDir;
- }
- });
- });
- });
-
- group('linter', () {
- void createTests(String designator, String optionsFileName) {
- group('lints in options - $designator', () {
- // Shared lint command.
- Future<Null> runLinter() async {
- return await drive('data/linter_project/test_file.dart',
- options: 'data/linter_project/$optionsFileName',
- args: ['--lints']);
- }
-
- test('gets analysis options', () async {
- await runLinter();
-
- /// Lints should be enabled.
- expect(driver.context.analysisOptions.lint, isTrue);
-
- /// The analysis options file only specifies 'camel_case_types'.
- var lintNames = getLints(driver.context).map((r) => r.name);
- expect(lintNames, orderedEquals(['camel_case_types']));
- });
-
- test('generates lints', () async {
- await runLinter();
- expect(_bulletToDash(outSink),
- contains('lint - Name types using UpperCamelCase'));
- });
- });
-
- group('default lints - $designator', () {
- // Shared lint command.
- Future<Null> runLinter() async {
- return await drive('data/linter_project/test_file.dart',
- options: 'data/linter_project/$optionsFileName',
- args: ['--lints']);
- }
-
- test('gets default lints', () async {
- await runLinter();
-
- /// Lints should be enabled.
- expect(driver.context.analysisOptions.lint, isTrue);
-
- /// Default list should include camel_case_types.
- var lintNames = getLints(driver.context).map((r) => r.name);
- expect(lintNames, contains('camel_case_types'));
- });
-
- test('generates lints', () async {
- await runLinter();
- expect(_bulletToDash(outSink),
- contains('lint - Name types using UpperCamelCase'));
- });
- });
-
- group('no `--lints` flag (none in options) - $designator', () {
- // Shared lint command.
- Future<Null> runLinter() async {
- return await drive('data/no_lints_project/test_file.dart',
- options: 'data/no_lints_project/$optionsFileName');
- }
-
- test('lints disabled', () async {
- await runLinter();
- expect(driver.context.analysisOptions.lint, isFalse);
- });
-
- test('no registered lints', () async {
- await runLinter();
- expect(getLints(driver.context), isEmpty);
- });
-
- test('no generated warnings', () async {
- await runLinter();
- expect(outSink.toString(), contains('No issues found'));
- });
- });
- }
-
- createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE);
- createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
- });
-
- test('containsLintRuleEntry', () {
- Map<String, YamlNode> options;
- options = parseOptions('''
-linter:
- rules:
- - foo
- ''');
- expect(containsLintRuleEntry(options), true);
- options = parseOptions('''
- ''');
- expect(containsLintRuleEntry(options), false);
- options = parseOptions('''
-linter:
- rules:
- # - foo
- ''');
- expect(containsLintRuleEntry(options), true);
- options = parseOptions('''
-linter:
- # rules:
- # - foo
- ''');
- expect(containsLintRuleEntry(options), false);
- });
-
- group('options processing', () {
- void createTests(String designator, String optionsFileName) {
- group('basic config - $designator', () {
- // Shared driver command.
- Future<Null> doDrive() async {
- await drive('data/options_tests_project/test_file.dart',
- options: 'data/options_tests_project/$optionsFileName');
- }
-
- test('filters', () async {
- await doDrive();
- expect(processors, hasLength(3));
-
- // unused_local_variable: ignore
- var unused_local_variable = new AnalysisError(
- new TestSource(), 0, 1, HintCode.UNUSED_LOCAL_VARIABLE, [
- ['x']
- ]);
- expect(processorFor(unused_local_variable).severity, isNull);
-
- // missing_return: error
- var missing_return = new AnalysisError(
- new TestSource(), 0, 1, HintCode.MISSING_RETURN, [
- ['x']
- ]);
- expect(processorFor(missing_return).severity, ErrorSeverity.ERROR);
- expect(
- _bulletToDash(outSink),
- contains(
- "error - This function declares a return type of 'int'"));
- expect(
- outSink.toString(), contains("1 error and 1 warning found."));
- });
-
- test('language', () async {
- await doDrive();
- expect(driver.context.analysisOptions.enableSuperMixins, isTrue);
- });
-
- test('strongMode', () async {
- await doDrive();
- expect(driver.context.analysisOptions.strongMode, isTrue);
- //https://github.com/dart-lang/sdk/issues/26129
- AnalysisContext sdkContext =
- driver.context.sourceFactory.dartSdk.context;
- expect(sdkContext.analysisOptions.strongMode, isTrue);
- });
- });
-
- group('with flags - $designator', () {
- // Shared driver command.
- Future<Null> doDrive() async {
- await drive('data/options_tests_project/test_file.dart',
- args: ['--fatal-warnings'],
- options: 'data/options_tests_project/$optionsFileName');
- }
-
- test('override fatal warning', () async {
- await doDrive();
- // missing_return: error
- var undefined_function = new AnalysisError(new TestSource(), 0, 1,
- StaticTypeWarningCode.UNDEFINED_FUNCTION, [
- ['x']
- ]);
- expect(processorFor(undefined_function).severity,
- ErrorSeverity.WARNING);
- // Should not be made fatal by `--fatal-warnings`.
- expect(_bulletToDash(outSink),
- contains("warning - The function 'baz' isn't defined"));
- expect(
- outSink.toString(), contains("1 error and 1 warning found."));
- });
- });
- }
-
- createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE);
- createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
-
- test('include directive', () async {
- String testDir = path.join(
- testDirectory, 'data', 'options_include_directive_tests_project');
- await drive(
- path.join(testDir, 'lib', 'test_file.dart'),
- args: [
- '--fatal-warnings',
- '--packages',
- path.join(testDir, '_packages'),
- ],
- options: path.join(testDir, 'analysis_options.yaml'),
- );
- expect(exitCode, 3);
- expect(outSink.toString(),
- contains('but doesn\'t end with a return statement'));
- expect(outSink.toString(), contains('isn\'t defined'));
- expect(outSink.toString(), contains('Avoid empty else statements'));
- });
-
- test('test strong SDK', () async {
- String testDir = path.join(testDirectory, 'data', 'strong_sdk');
- await drive(path.join(testDir, 'main.dart'), args: ['--strong']);
- expect(driver.context.analysisOptions.strongMode, isTrue);
- expect(outSink.toString(), contains('No issues found'));
- expect(exitCode, 0);
- });
- });
-
- void createTests(String designator, String optionsFileName) {
- group('build-mode - $designator', () {
- // Shared driver command.
- Future<Null> doDrive(String filePath,
- {List<String> additionalArgs: const []}) async {
- await drive('file:///test_file.dart|$filePath',
- args: [
- '--dart-sdk',
- findSdkDirForSummaries(),
- '--build-mode',
- '--format=machine'
- ]..addAll(additionalArgs),
- options: 'data/options_tests_project/$optionsFileName');
- }
-
- test('no stats', () async {
- await doDrive(path.join('data', 'test_file.dart'));
- // Should not print stat summary.
- expect(outSink.toString(), isEmpty);
- expect(errorSink.toString(), isEmpty);
- expect(exitCode, 0);
- });
-
- test(
- 'Fails if file not found, even when --build-suppress-exit-code is given',
- () async {
- await doDrive(path.join('data', 'non_existent_file.dart'),
- additionalArgs: ['--build-suppress-exit-code']);
- expect(exitCode, isNot(0));
- });
-
- test('Fails if there are errors', () async {
- await doDrive(path.join('data', 'file_with_error.dart'));
- expect(exitCode, isNot(0));
- });
-
- test(
- 'Succeeds if there are errors, when --build-suppress-exit-code is given',
- () async {
- await doDrive(path.join('data', 'file_with_error.dart'),
- additionalArgs: ['--build-suppress-exit-code']);
- expect(exitCode, 0);
- });
-
- test('Linked summary', () async {
- await withTempDirAsync((tempDir) async {
- var outputPath = path.join(tempDir, 'test_file.dart.sum');
- await doDrive(path.join('data', 'test_file.dart'), additionalArgs: [
- '--build-summary-only',
- '--build-summary-output=$outputPath'
- ]);
- var output = new File(outputPath);
- expect(output.existsSync(), isTrue);
- PackageBundle bundle =
- new PackageBundle.fromBuffer(await output.readAsBytes());
- var testFileUri = 'file:///test_file.dart';
- expect(bundle.unlinkedUnitUris, equals([testFileUri]));
- expect(bundle.linkedLibraryUris, equals([testFileUri]));
- expect(exitCode, 0);
- });
- });
-
- test('Unlinked summary only', () async {
- await withTempDirAsync((tempDir) async {
- var outputPath = path.join(tempDir, 'test_file.dart.sum');
- await doDrive(path.join('data', 'test_file.dart'), additionalArgs: [
- '--build-summary-only',
- '--build-summary-only-unlinked',
- '--build-summary-output=$outputPath'
- ]);
- var output = new File(outputPath);
- expect(output.existsSync(), isTrue);
- PackageBundle bundle =
- new PackageBundle.fromBuffer(await output.readAsBytes());
- var testFileUri = 'file:///test_file.dart';
- expect(bundle.unlinkedUnits.length, 1);
- expect(bundle.unlinkedUnitUris, equals([testFileUri]));
- expect(bundle.linkedLibraryUris, isEmpty);
- expect(exitCode, 0);
- });
- });
- });
- }
-
- createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE);
- createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
+ _test_exitCodes();
+ _test_linter();
+ _test_optionsProcessing();
+ _test_buildMode();
//TODO(pq): fix to be bot-friendly (sdk#25258).
// group('in temp directory', () {
@@ -613,6 +218,412 @@ ErrorProcessor processorFor(AnalysisError error) =>
/// Normalize text with bullets.
String _bulletToDash(item) => '$item'.replaceAll('•', '-');
+void _test_buildMode() {
+ void createTests(String designator, String optionsFileName) {
+ group('build-mode - $designator', () {
+ // Shared driver command.
+ Future<Null> doDrive(String filePath,
+ {List<String> additionalArgs: const []}) async {
+ await drive('file:///test_file.dart|$filePath',
+ args: [
+ '--dart-sdk',
+ findSdkDirForSummaries(),
+ '--build-mode',
+ '--format=machine'
+ ]..addAll(additionalArgs),
+ options: 'data/options_tests_project/$optionsFileName');
+ }
+
+ test('no stats', () async {
+ await doDrive(path.join('data', 'test_file.dart'));
+ // Should not print stat summary.
+ expect(outSink.toString(), isEmpty);
+ expect(errorSink.toString(), isEmpty);
+ expect(exitCode, 0);
+ });
+
+ test(
+ 'Fails if file not found, even when --build-suppress-exit-code is given',
+ () async {
+ await doDrive(path.join('data', 'non_existent_file.dart'),
+ additionalArgs: ['--build-suppress-exit-code']);
+ expect(exitCode, isNot(0));
+ });
+
+ test('Fails if there are errors', () async {
+ await doDrive(path.join('data', 'file_with_error.dart'));
+ expect(exitCode, isNot(0));
+ });
+
+ test(
+ 'Succeeds if there are errors, when --build-suppress-exit-code is given',
+ () async {
+ await doDrive(path.join('data', 'file_with_error.dart'),
+ additionalArgs: ['--build-suppress-exit-code']);
+ expect(exitCode, 0);
+ });
+
+ test('Linked summary', () async {
+ await withTempDirAsync((tempDir) async {
+ var outputPath = path.join(tempDir, 'test_file.dart.sum');
+ await doDrive(path.join('data', 'test_file.dart'), additionalArgs: [
+ '--build-summary-only',
+ '--build-summary-output=$outputPath'
+ ]);
+ var output = new File(outputPath);
+ expect(output.existsSync(), isTrue);
+ PackageBundle bundle =
+ new PackageBundle.fromBuffer(await output.readAsBytes());
+ var testFileUri = 'file:///test_file.dart';
+ expect(bundle.unlinkedUnitUris, equals([testFileUri]));
+ expect(bundle.linkedLibraryUris, equals([testFileUri]));
+ expect(exitCode, 0);
+ });
+ });
+
+ test('Unlinked summary only', () async {
+ await withTempDirAsync((tempDir) async {
+ var outputPath = path.join(tempDir, 'test_file.dart.sum');
+ await doDrive(path.join('data', 'test_file.dart'), additionalArgs: [
+ '--build-summary-only',
+ '--build-summary-only-unlinked',
+ '--build-summary-output=$outputPath'
+ ]);
+ var output = new File(outputPath);
+ expect(output.existsSync(), isTrue);
+ PackageBundle bundle =
+ new PackageBundle.fromBuffer(await output.readAsBytes());
+ var testFileUri = 'file:///test_file.dart';
+ expect(bundle.unlinkedUnits.length, 1);
+ expect(bundle.unlinkedUnitUris, equals([testFileUri]));
+ expect(bundle.linkedLibraryUris, isEmpty);
+ expect(exitCode, 0);
+ });
+ });
+ });
+ }
+
+ createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE);
+ createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
+}
+
+void _test_exitCodes() {
+ group('exit codes', () {
+ test('fatal hints', () async {
+ await drive('data/file_with_hint.dart', args: ['--fatal-hints']);
+ expect(exitCode, 1);
+ });
+
+ test('not fatal hints', () async {
+ await drive('data/file_with_hint.dart');
+ expect(exitCode, 0);
+ });
+
+ test('fatal errors', () async {
+ await drive('data/file_with_error.dart');
+ expect(exitCode, 3);
+ });
+
+ test('not fatal warnings', () async {
+ await drive('data/file_with_warning.dart');
+ expect(exitCode, 0);
+ });
+
+ test('fatal warnings', () async {
+ await drive('data/file_with_warning.dart', args: ['--fatal-warnings']);
+ expect(exitCode, 2);
+ });
+
+ test('not parse enableAssertInitializer', () async {
+ await drive('data/file_with_assert_initializers.dart',
+ args: ['--enable-assert-initializers']);
+ expect(exitCode, 0);
+ });
+
+ test('missing options file', () async {
+ await drive('data/test_file.dart', options: 'data/NO_OPTIONS_HERE');
+ expect(exitCode, 3);
+ });
+
+ test('missing dart file', () async {
+ await drive('data/NO_DART_FILE_HERE.dart');
+ expect(exitCode, 3);
+ });
+
+ test('part file', () async {
+ await drive('data/library_and_parts/part2.dart');
+ expect(exitCode, 3);
+ });
+
+ test('non-dangling part file', () async {
+ Driver driver = new Driver(isTesting: true);
+ await driver.start([
+ path.join(testDirectory, 'data/library_and_parts/lib.dart'),
+ path.join(testDirectory, 'data/library_and_parts/part1.dart')
+ ]);
+ expect(exitCode, 0);
+ });
+
+ test('extra part file', () async {
+ Driver driver = new Driver(isTesting: true);
+ await driver.start([
+ path.join(testDirectory, 'data/library_and_parts/lib.dart'),
+ path.join(testDirectory, 'data/library_and_parts/part1.dart'),
+ path.join(testDirectory, 'data/library_and_parts/part2.dart')
+ ]);
+ expect(exitCode, 3);
+ });
+
+ test('bazel workspace relative path', () async {
+ // Copy to temp dir so that existing analysis options
+ // in the test directory hierarchy do not interfere
+ await withTempDirAsync((String tempDirPath) async {
+ String dartSdkPath = path.absolute(getSdkPath());
+ await recursiveCopy(
+ new Directory(path.join(testDirectory, 'data', 'bazel')),
+ tempDirPath);
+ Directory origWorkingDir = Directory.current;
+ try {
+ Directory.current = path.join(tempDirPath, 'proj');
+ Driver driver = new Driver(isTesting: true);
+ try {
+ await driver.start([
+ path.join('lib', 'file.dart'),
+ '--dart-sdk',
+ dartSdkPath,
+ ]);
+ } catch (e) {
+ print('=== debug info ===');
+ print('dartSdkPath: $dartSdkPath');
+ print('stderr:\n${errorSink.toString()}');
+ rethrow;
+ }
+ expect(errorSink.toString(), isEmpty);
+ expect(outSink.toString(), contains('No issues found'));
+ expect(exitCode, 0);
+ } finally {
+ Directory.current = origWorkingDir;
+ }
+ });
+ });
+ });
+}
+
+void _test_linter() {
+ test('containsLintRuleEntry', () {
+ Map<String, YamlNode> options;
+ options = parseOptions('''
+linter:
+ rules:
+ - foo
+ ''');
+ expect(containsLintRuleEntry(options), true);
+ options = parseOptions('''
+ ''');
+ expect(containsLintRuleEntry(options), false);
+ options = parseOptions('''
+linter:
+ rules:
+ # - foo
+ ''');
+ expect(containsLintRuleEntry(options), true);
+ options = parseOptions('''
+linter:
+ # rules:
+ # - foo
+ ''');
+ expect(containsLintRuleEntry(options), false);
+ });
+
+ group('linter', () {
+ void createTests(String designator, String optionsFileName) {
+ group('lints in options - $designator', () {
+ // Shared lint command.
+ Future<Null> runLinter() async {
+ return await drive('data/linter_project/test_file.dart',
+ options: 'data/linter_project/$optionsFileName',
+ args: ['--lints']);
+ }
+
+ test('gets analysis options', () async {
+ await runLinter();
+
+ /// Lints should be enabled.
+ expect(driver.context.analysisOptions.lint, isTrue);
+
+ /// The analysis options file only specifies 'camel_case_types'.
+ var lintNames = getLints(driver.context).map((r) => r.name);
+ expect(lintNames, orderedEquals(['camel_case_types']));
+ });
+
+ test('generates lints', () async {
+ await runLinter();
+ expect(_bulletToDash(outSink),
+ contains('lint - Name types using UpperCamelCase'));
+ });
+ });
+
+ group('default lints - $designator', () {
+ // Shared lint command.
+ Future<Null> runLinter() async {
+ return await drive('data/linter_project/test_file.dart',
+ options: 'data/linter_project/$optionsFileName',
+ args: ['--lints']);
+ }
+
+ test('gets default lints', () async {
+ await runLinter();
+
+ /// Lints should be enabled.
+ expect(driver.context.analysisOptions.lint, isTrue);
+
+ /// Default list should include camel_case_types.
+ var lintNames = getLints(driver.context).map((r) => r.name);
+ expect(lintNames, contains('camel_case_types'));
+ });
+
+ test('generates lints', () async {
+ await runLinter();
+ expect(_bulletToDash(outSink),
+ contains('lint - Name types using UpperCamelCase'));
+ });
+ });
+
+ group('no `--lints` flag (none in options) - $designator', () {
+ // Shared lint command.
+ Future<Null> runLinter() async {
+ return await drive('data/no_lints_project/test_file.dart',
+ options: 'data/no_lints_project/$optionsFileName');
+ }
+
+ test('lints disabled', () async {
+ await runLinter();
+ expect(driver.context.analysisOptions.lint, isFalse);
+ });
+
+ test('no registered lints', () async {
+ await runLinter();
+ expect(getLints(driver.context), isEmpty);
+ });
+
+ test('no generated warnings', () async {
+ await runLinter();
+ expect(outSink.toString(), contains('No issues found'));
+ });
+ });
+ }
+
+ createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE);
+ createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
+ });
+}
+
+void _test_optionsProcessing() {
+ group('options processing', () {
+ void createTests(String designator, String optionsFileName) {
+ group('basic config - $designator', () {
+ // Shared driver command.
+ Future<Null> doDrive() async {
+ await drive('data/options_tests_project/test_file.dart',
+ options: 'data/options_tests_project/$optionsFileName');
+ }
+
+ test('filters', () async {
+ await doDrive();
+ expect(processors, hasLength(3));
+
+ // unused_local_variable: ignore
+ var unused_local_variable = new AnalysisError(
+ new TestSource(), 0, 1, HintCode.UNUSED_LOCAL_VARIABLE, [
+ ['x']
+ ]);
+ expect(processorFor(unused_local_variable).severity, isNull);
+
+ // missing_return: error
+ var missing_return = new AnalysisError(
+ new TestSource(), 0, 1, HintCode.MISSING_RETURN, [
+ ['x']
+ ]);
+ expect(processorFor(missing_return).severity, ErrorSeverity.ERROR);
+ expect(
+ _bulletToDash(outSink),
+ contains(
+ "error - This function declares a return type of 'int'"));
+ expect(outSink.toString(), contains("1 error and 1 warning found."));
+ });
+
+ test('language', () async {
+ await doDrive();
+ expect(driver.context.analysisOptions.enableSuperMixins, isTrue);
+ });
+
+ test('strongMode', () async {
+ await doDrive();
+ expect(driver.context.analysisOptions.strongMode, isTrue);
+ //https://github.com/dart-lang/sdk/issues/26129
+ AnalysisContext sdkContext =
+ driver.context.sourceFactory.dartSdk.context;
+ expect(sdkContext.analysisOptions.strongMode, isTrue);
+ });
+ });
+
+ group('with flags - $designator', () {
+ // Shared driver command.
+ Future<Null> doDrive() async {
+ await drive('data/options_tests_project/test_file.dart',
+ args: ['--fatal-warnings'],
+ options: 'data/options_tests_project/$optionsFileName');
+ }
+
+ test('override fatal warning', () async {
+ await doDrive();
+ // missing_return: error
+ var undefined_function = new AnalysisError(new TestSource(), 0, 1,
+ StaticTypeWarningCode.UNDEFINED_FUNCTION, [
+ ['x']
+ ]);
+ expect(
+ processorFor(undefined_function).severity, ErrorSeverity.WARNING);
+ // Should not be made fatal by `--fatal-warnings`.
+ expect(_bulletToDash(outSink),
+ contains("warning - The function 'baz' isn't defined"));
+ expect(outSink.toString(), contains("1 error and 1 warning found."));
+ });
+ });
+ }
+
+ createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE);
+ createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
+
+ test('include directive', () async {
+ String testDir = path.join(
+ testDirectory, 'data', 'options_include_directive_tests_project');
+ await drive(
+ path.join(testDir, 'lib', 'test_file.dart'),
+ args: [
+ '--fatal-warnings',
+ '--packages',
+ path.join(testDir, '_packages'),
+ ],
+ options: path.join(testDir, 'analysis_options.yaml'),
+ );
+ expect(exitCode, 3);
+ expect(outSink.toString(),
+ contains('but doesn\'t end with a return statement'));
+ expect(outSink.toString(), contains('isn\'t defined'));
+ expect(outSink.toString(), contains('Avoid empty else statements'));
+ });
+
+ test('test strong SDK', () async {
+ String testDir = path.join(testDirectory, 'data', 'strong_sdk');
+ await drive(path.join(testDir, 'main.dart'), args: ['--strong']);
+ expect(driver.context.analysisOptions.strongMode, isTrue);
+ expect(outSink.toString(), contains('No issues found'));
+ expect(exitCode, 0);
+ });
+ });
+}
+
class TestSource implements Source {
TestSource();
« 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