| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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.test.src.context.context_builder_test; | 5 library analyzer.test.src.context.context_builder_test; |
| 6 | 6 |
| 7 import 'package:analyzer/file_system/file_system.dart'; | 7 import 'package:analyzer/file_system/file_system.dart'; |
| 8 import 'package:analyzer/file_system/memory_file_system.dart'; | 8 import 'package:analyzer/file_system/memory_file_system.dart'; |
| 9 import 'package:analyzer/plugin/options.dart'; |
| 9 import 'package:analyzer/source/package_map_resolver.dart'; | 10 import 'package:analyzer/source/package_map_resolver.dart'; |
| 10 import 'package:analyzer/src/context/builder.dart'; | 11 import 'package:analyzer/src/context/builder.dart'; |
| 11 import 'package:analyzer/src/context/source.dart'; | 12 import 'package:analyzer/src/context/source.dart'; |
| 12 import 'package:analyzer/src/generated/engine.dart'; | 13 import 'package:analyzer/src/generated/engine.dart'; |
| 13 import 'package:analyzer/src/generated/sdk.dart'; | 14 import 'package:analyzer/src/generated/sdk.dart'; |
| 14 import 'package:analyzer/src/generated/source.dart'; | 15 import 'package:analyzer/src/generated/source.dart'; |
| 16 import 'package:analyzer/src/plugin/options_plugin.dart'; |
| 15 import 'package:package_config/packages.dart'; | 17 import 'package:package_config/packages.dart'; |
| 16 import 'package:package_config/src/packages_impl.dart'; | 18 import 'package:package_config/src/packages_impl.dart'; |
| 17 import 'package:path/path.dart' as path; | 19 import 'package:path/path.dart' as path; |
| 20 import 'package:plugin/src/plugin_impl.dart'; |
| 18 import 'package:unittest/unittest.dart'; | 21 import 'package:unittest/unittest.dart'; |
| 19 | 22 |
| 20 import '../../embedder_tests.dart'; | 23 import '../../embedder_tests.dart'; |
| 21 import '../../generated/test_support.dart'; | 24 import '../../generated/test_support.dart'; |
| 22 import '../../reflective_tests.dart'; | 25 import '../../reflective_tests.dart'; |
| 23 import '../../utils.dart'; | 26 import '../../utils.dart'; |
| 24 import 'mock_sdk.dart'; | 27 import 'mock_sdk.dart'; |
| 25 | 28 |
| 26 main() { | 29 main() { |
| 27 initializeTestEnvironment(); | 30 initializeTestEnvironment(); |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 String path = '/some/directory/path'; | 481 String path = '/some/directory/path'; |
| 479 String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}'; | 482 String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}'; |
| 480 resourceProvider.newFile( | 483 resourceProvider.newFile( |
| 481 filePath, | 484 filePath, |
| 482 ''' | 485 ''' |
| 483 linter: | 486 linter: |
| 484 rules: | 487 rules: |
| 485 - empty_constructor_bodies | 488 - empty_constructor_bodies |
| 486 '''); | 489 '''); |
| 487 | 490 |
| 488 AnalysisOptions options = builder.getAnalysisOptions(path); | 491 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); |
| 492 AnalysisOptions options = builder.getAnalysisOptions(context, path); |
| 489 _expectEqualOptions(options, expected); | 493 _expectEqualOptions(options, expected); |
| 490 } | 494 } |
| 491 | 495 |
| 492 void test_getAnalysisOptions_default_overrides() { | 496 void test_getAnalysisOptions_default_overrides() { |
| 493 AnalysisOptionsImpl defaultOptions = new AnalysisOptionsImpl(); | 497 AnalysisOptionsImpl defaultOptions = new AnalysisOptionsImpl(); |
| 494 defaultOptions.enableGenericMethods = true; | 498 defaultOptions.enableGenericMethods = true; |
| 495 builder.defaultOptions = defaultOptions; | 499 builder.defaultOptions = defaultOptions; |
| 496 AnalysisOptionsImpl expected = new AnalysisOptionsImpl(); | 500 AnalysisOptionsImpl expected = new AnalysisOptionsImpl(); |
| 497 expected.enableAsync = true; | 501 expected.enableAsync = true; |
| 498 expected.enableGenericMethods = true; | 502 expected.enableGenericMethods = true; |
| 499 String path = '/some/directory/path'; | 503 String path = '/some/directory/path'; |
| 500 String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}'; | 504 String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}'; |
| 501 resourceProvider.newFile( | 505 resourceProvider.newFile( |
| 502 filePath, | 506 filePath, |
| 503 ''' | 507 ''' |
| 504 analyzer: | 508 analyzer: |
| 505 enableAsync : true | 509 enableAsync : true |
| 506 '''); | 510 '''); |
| 507 | 511 |
| 508 AnalysisOptions options = builder.getAnalysisOptions(path); | 512 AnalysisEngine engine = AnalysisEngine.instance; |
| 509 _expectEqualOptions(options, expected); | 513 OptionsPlugin plugin = engine.optionsPlugin; |
| 514 plugin.registerExtensionPoints((_) {}); |
| 515 try { |
| 516 _TestOptionsProcessor processor = new _TestOptionsProcessor(); |
| 517 processor.expectedOptions = <String, Object>{ |
| 518 'analyzer': {'enableAsync': true} |
| 519 }; |
| 520 (plugin.optionsProcessorExtensionPoint as ExtensionPointImpl) |
| 521 .add(processor); |
| 522 AnalysisContext context = engine.createAnalysisContext(); |
| 523 AnalysisOptions options = builder.getAnalysisOptions(context, path); |
| 524 _expectEqualOptions(options, expected); |
| 525 } finally { |
| 526 plugin.registerExtensionPoints((_) {}); |
| 527 } |
| 528 } |
| 529 |
| 530 void test_getAnalysisOptions_invalid() { |
| 531 String path = '/some/directory/path'; |
| 532 String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}'; |
| 533 resourceProvider.newFile(filePath, ';'); |
| 534 |
| 535 AnalysisEngine engine = AnalysisEngine.instance; |
| 536 OptionsPlugin plugin = engine.optionsPlugin; |
| 537 plugin.registerExtensionPoints((_) {}); |
| 538 try { |
| 539 _TestOptionsProcessor processor = new _TestOptionsProcessor(); |
| 540 (plugin.optionsProcessorExtensionPoint as ExtensionPointImpl) |
| 541 .add(processor); |
| 542 AnalysisContext context = engine.createAnalysisContext(); |
| 543 AnalysisOptions options = builder.getAnalysisOptions(context, path); |
| 544 expect(options, isNotNull); |
| 545 expect(processor.errorCount, 1); |
| 546 } finally { |
| 547 plugin.registerExtensionPoints((_) {}); |
| 548 } |
| 510 } | 549 } |
| 511 | 550 |
| 512 void test_getAnalysisOptions_noDefault_noOverrides() { | 551 void test_getAnalysisOptions_noDefault_noOverrides() { |
| 513 String path = '/some/directory/path'; | 552 String path = '/some/directory/path'; |
| 514 String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}'; | 553 String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}'; |
| 515 resourceProvider.newFile( | 554 resourceProvider.newFile( |
| 516 filePath, | 555 filePath, |
| 517 ''' | 556 ''' |
| 518 linter: | 557 linter: |
| 519 rules: | 558 rules: |
| 520 - empty_constructor_bodies | 559 - empty_constructor_bodies |
| 521 '''); | 560 '''); |
| 522 | 561 |
| 523 AnalysisOptions options = builder.getAnalysisOptions(path); | 562 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); |
| 563 AnalysisOptions options = builder.getAnalysisOptions(context, path); |
| 524 _expectEqualOptions(options, new AnalysisOptionsImpl()); | 564 _expectEqualOptions(options, new AnalysisOptionsImpl()); |
| 525 } | 565 } |
| 526 | 566 |
| 527 void test_getAnalysisOptions_noDefault_overrides() { | 567 void test_getAnalysisOptions_noDefault_overrides() { |
| 528 AnalysisOptionsImpl expected = new AnalysisOptionsImpl(); | 568 AnalysisOptionsImpl expected = new AnalysisOptionsImpl(); |
| 529 expected.enableAsync = true; | 569 expected.enableAsync = true; |
| 530 String path = '/some/directory/path'; | 570 String path = '/some/directory/path'; |
| 531 String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}'; | 571 String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}'; |
| 532 resourceProvider.newFile( | 572 resourceProvider.newFile( |
| 533 filePath, | 573 filePath, |
| 534 ''' | 574 ''' |
| 535 analyzer: | 575 analyzer: |
| 536 enableAsync : true | 576 enableAsync : true |
| 537 '''); | 577 '''); |
| 538 | 578 |
| 539 AnalysisOptions options = builder.getAnalysisOptions(path); | 579 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); |
| 580 AnalysisOptions options = builder.getAnalysisOptions(context, path); |
| 540 _expectEqualOptions(options, expected); | 581 _expectEqualOptions(options, expected); |
| 541 } | 582 } |
| 542 | 583 |
| 543 void test_getOptionsFile_explicit() { | 584 void test_getOptionsFile_explicit() { |
| 544 String path = '/some/directory/path'; | 585 String path = '/some/directory/path'; |
| 545 String filePath = '/options/analysis.yaml'; | 586 String filePath = '/options/analysis.yaml'; |
| 546 resourceProvider.newFile(filePath, ''); | 587 resourceProvider.newFile(filePath, ''); |
| 547 | 588 |
| 548 builder.defaultAnalysisOptionsFilePath = filePath; | 589 builder.defaultAnalysisOptionsFilePath = filePath; |
| 549 File result = builder.getOptionsFile(path); | 590 File result = builder.getOptionsFile(path); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 644 expect(locator.embedderYamls, hasLength(0)); | 685 expect(locator.embedderYamls, hasLength(0)); |
| 645 } | 686 } |
| 646 | 687 |
| 647 void test_valid() { | 688 void test_valid() { |
| 648 EmbedderYamlLocator locator = new EmbedderYamlLocator({ | 689 EmbedderYamlLocator locator = new EmbedderYamlLocator({ |
| 649 'fox': [pathTranslator.getResource('/tmp')] | 690 'fox': [pathTranslator.getResource('/tmp')] |
| 650 }); | 691 }); |
| 651 expect(locator.embedderYamls, hasLength(1)); | 692 expect(locator.embedderYamls, hasLength(1)); |
| 652 } | 693 } |
| 653 } | 694 } |
| 695 |
| 696 class _TestOptionsProcessor implements OptionsProcessor { |
| 697 Map<String, Object> expectedOptions = null; |
| 698 |
| 699 int errorCount = 0; |
| 700 |
| 701 @override |
| 702 void onError(Exception exception) { |
| 703 errorCount++; |
| 704 } |
| 705 |
| 706 @override |
| 707 void optionsProcessed(AnalysisContext context, Map<String, Object> options) { |
| 708 if (expectedOptions == null) { |
| 709 fail('Unexpected invocation of optionsProcessed'); |
| 710 } |
| 711 expect(options, hasLength(expectedOptions.length)); |
| 712 for (String key in expectedOptions.keys) { |
| 713 expect(options.containsKey(key), isTrue, reason: 'missing key $key'); |
| 714 expect(options[key], expectedOptions[key], |
| 715 reason: 'values for key $key do not match'); |
| 716 } |
| 717 } |
| 718 } |
| OLD | NEW |