| OLD | NEW |
| 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:io'; | 7 import 'dart:io'; |
| 8 | 8 |
| 9 import 'package:analyzer/error/error.dart'; |
| 9 import 'package:analyzer/plugin/options.dart'; | 10 import 'package:analyzer/plugin/options.dart'; |
| 10 import 'package:analyzer/source/analysis_options_provider.dart'; | 11 import 'package:analyzer/source/analysis_options_provider.dart'; |
| 11 import 'package:analyzer/source/error_processor.dart'; | 12 import 'package:analyzer/source/error_processor.dart'; |
| 13 import 'package:analyzer/src/error/codes.dart'; |
| 12 import 'package:analyzer/src/generated/engine.dart'; | 14 import 'package:analyzer/src/generated/engine.dart'; |
| 13 import 'package:analyzer/src/generated/error.dart'; | |
| 14 import 'package:analyzer/src/generated/source.dart'; | 15 import 'package:analyzer/src/generated/source.dart'; |
| 15 import 'package:analyzer/src/services/lint.dart'; | 16 import 'package:analyzer/src/services/lint.dart'; |
| 17 import 'package:analyzer/src/task/options.dart'; |
| 16 import 'package:analyzer_cli/src/driver.dart'; | 18 import 'package:analyzer_cli/src/driver.dart'; |
| 17 import 'package:analyzer_cli/src/options.dart'; | 19 import 'package:analyzer_cli/src/options.dart'; |
| 18 import 'package:path/path.dart' as path; | 20 import 'package:path/path.dart' as path; |
| 19 import 'package:plugin/plugin.dart'; | 21 import 'package:plugin/plugin.dart'; |
| 20 import 'package:unittest/unittest.dart'; | 22 import 'package:unittest/unittest.dart'; |
| 21 import 'package:yaml/src/yaml_node.dart'; | 23 import 'package:yaml/src/yaml_node.dart'; |
| 22 | 24 |
| 23 import 'utils.dart'; | 25 import 'utils.dart'; |
| 24 | 26 |
| 25 main() { | 27 main() { |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 runLinter(); | 199 runLinter(); |
| 198 expect(getLints(driver.context), isEmpty); | 200 expect(getLints(driver.context), isEmpty); |
| 199 }); | 201 }); |
| 200 | 202 |
| 201 test('no generated warnings', () { | 203 test('no generated warnings', () { |
| 202 runLinter(); | 204 runLinter(); |
| 203 expect(outSink.toString(), contains('No issues found')); | 205 expect(outSink.toString(), contains('No issues found')); |
| 204 }); | 206 }); |
| 205 }); | 207 }); |
| 206 } | 208 } |
| 209 |
| 207 createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE); | 210 createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE); |
| 208 createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); | 211 createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); |
| 209 }); | 212 }); |
| 210 | 213 |
| 211 test('containsLintRuleEntry', () { | 214 test('containsLintRuleEntry', () { |
| 212 Map<String, YamlNode> options; | 215 Map<String, YamlNode> options; |
| 213 options = parseOptions(''' | 216 options = parseOptions(''' |
| 214 linter: | 217 linter: |
| 215 rules: | 218 rules: |
| 216 - foo | 219 - foo |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 expect(processorFor(undefined_function).severity, | 299 expect(processorFor(undefined_function).severity, |
| 297 ErrorSeverity.WARNING); | 300 ErrorSeverity.WARNING); |
| 298 // Should not be made fatal by `--fatal-warnings`. | 301 // Should not be made fatal by `--fatal-warnings`. |
| 299 expect(outSink.toString(), | 302 expect(outSink.toString(), |
| 300 contains("[warning] The function 'baz' is not defined")); | 303 contains("[warning] The function 'baz' is not defined")); |
| 301 expect( | 304 expect( |
| 302 outSink.toString(), contains("1 error and 1 warning found.")); | 305 outSink.toString(), contains("1 error and 1 warning found.")); |
| 303 }); | 306 }); |
| 304 }); | 307 }); |
| 305 } | 308 } |
| 309 |
| 306 createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE); | 310 createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE); |
| 307 createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); | 311 createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); |
| 308 }); | 312 }); |
| 309 | 313 |
| 310 void createTests(String designator, String optionsFileName) { | 314 void createTests(String designator, String optionsFileName) { |
| 311 group('build-mode - $designator', () { | 315 group('build-mode - $designator', () { |
| 312 // Shared driver command. | 316 // Shared driver command. |
| 313 void doDrive(String filePath, {List<String> additionalArgs: const []}) { | 317 void doDrive(String filePath, {List<String> additionalArgs: const []}) { |
| 314 drive('file:///test_file.dart|$filePath', | 318 drive('file:///test_file.dart|$filePath', |
| 315 args: [ | 319 args: [ |
| (...skipping 28 matching lines...) Expand all Loading... |
| 344 | 348 |
| 345 test( | 349 test( |
| 346 'Succeeds if there are errors, when --build-suppress-exit-code is gi
ven', | 350 'Succeeds if there are errors, when --build-suppress-exit-code is gi
ven', |
| 347 () { | 351 () { |
| 348 doDrive('data/file_with_error.dart', | 352 doDrive('data/file_with_error.dart', |
| 349 additionalArgs: ['--build-suppress-exit-code']); | 353 additionalArgs: ['--build-suppress-exit-code']); |
| 350 expect(exitCode, 0); | 354 expect(exitCode, 0); |
| 351 }); | 355 }); |
| 352 }); | 356 }); |
| 353 } | 357 } |
| 358 |
| 354 createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE); | 359 createTests('old', AnalysisEngine.ANALYSIS_OPTIONS_FILE); |
| 355 createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); | 360 createTests('new', AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); |
| 356 | 361 |
| 357 //TODO(pq): fix to be bot-friendly (sdk#25258). | 362 //TODO(pq): fix to be bot-friendly (sdk#25258). |
| 358 // group('in temp directory', () { | 363 // group('in temp directory', () { |
| 359 // Directory savedCurrentDirectory; | 364 // Directory savedCurrentDirectory; |
| 360 // Directory tempDir; | 365 // Directory tempDir; |
| 361 // setUp(() { | 366 // setUp(() { |
| 362 // // Call base setUp. | 367 // // Call base setUp. |
| 363 // _setUp(); | 368 // _setUp(); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 | 457 |
| 453 /// Try to find a appropriate directory to pass to "--dart-sdk" that will | 458 /// Try to find a appropriate directory to pass to "--dart-sdk" that will |
| 454 /// allow summaries to be found. | 459 /// allow summaries to be found. |
| 455 String findSdkDirForSummaries() { | 460 String findSdkDirForSummaries() { |
| 456 Set<String> triedDirectories = new Set<String>(); | 461 Set<String> triedDirectories = new Set<String>(); |
| 457 bool isSuitable(String sdkDir) { | 462 bool isSuitable(String sdkDir) { |
| 458 triedDirectories.add(sdkDir); | 463 triedDirectories.add(sdkDir); |
| 459 return new File(path.join(sdkDir, 'lib', '_internal', 'spec.sum')) | 464 return new File(path.join(sdkDir, 'lib', '_internal', 'spec.sum')) |
| 460 .existsSync(); | 465 .existsSync(); |
| 461 } | 466 } |
| 467 |
| 462 // Usually the sdk directory is the parent of the parent of the "dart" | 468 // Usually the sdk directory is the parent of the parent of the "dart" |
| 463 // executable. | 469 // executable. |
| 464 Directory executableParent = new File(Platform.executable).parent; | 470 Directory executableParent = new File(Platform.executable).parent; |
| 465 Directory executableGrandparent = executableParent.parent; | 471 Directory executableGrandparent = executableParent.parent; |
| 466 if (isSuitable(executableGrandparent.path)) { | 472 if (isSuitable(executableGrandparent.path)) { |
| 467 return executableGrandparent.path; | 473 return executableGrandparent.path; |
| 468 } | 474 } |
| 469 // During buildbot execution, the sdk directory is simply the parent of the | 475 // During buildbot execution, the sdk directory is simply the parent of the |
| 470 // "dart" executable. | 476 // "dart" executable. |
| 471 if (isSuitable(executableParent.path)) { | 477 if (isSuitable(executableParent.path)) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 this.options = options; | 537 this.options = options; |
| 532 } | 538 } |
| 533 } | 539 } |
| 534 | 540 |
| 535 class TestSource implements Source { | 541 class TestSource implements Source { |
| 536 TestSource(); | 542 TestSource(); |
| 537 | 543 |
| 538 @override | 544 @override |
| 539 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 545 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 540 } | 546 } |
| OLD | NEW |