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

Side by Side Diff: pkg/analyzer/test/src/context/builder_test.dart

Issue 2559523005: Remove the AnalysisOptionsProcessor (Closed)
Patch Set: Created 4 years 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 unified diff | Download patch
OLDNEW
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';
10 import 'package:analyzer/src/context/builder.dart'; 9 import 'package:analyzer/src/context/builder.dart';
11 import 'package:analyzer/src/context/source.dart'; 10 import 'package:analyzer/src/context/source.dart';
12 import 'package:analyzer/src/generated/bazel.dart'; 11 import 'package:analyzer/src/generated/bazel.dart';
13 import 'package:analyzer/src/generated/engine.dart'; 12 import 'package:analyzer/src/generated/engine.dart';
14 import 'package:analyzer/src/generated/sdk.dart'; 13 import 'package:analyzer/src/generated/sdk.dart';
15 import 'package:analyzer/src/generated/source.dart'; 14 import 'package:analyzer/src/generated/source.dart';
16 import 'package:analyzer/src/plugin/options_plugin.dart';
17 import 'package:package_config/packages.dart'; 15 import 'package:package_config/packages.dart';
18 import 'package:package_config/src/packages_impl.dart'; 16 import 'package:package_config/src/packages_impl.dart';
19 import 'package:path/path.dart' as path; 17 import 'package:path/path.dart' as path;
20 import 'package:plugin/src/plugin_impl.dart';
21 import 'package:test/test.dart'; 18 import 'package:test/test.dart';
22 import 'package:test_reflective_loader/test_reflective_loader.dart'; 19 import 'package:test_reflective_loader/test_reflective_loader.dart';
23 20
24 import '../../embedder_tests.dart'; 21 import '../../embedder_tests.dart';
25 import '../../generated/test_support.dart'; 22 import '../../generated/test_support.dart';
26 import 'mock_sdk.dart'; 23 import 'mock_sdk.dart';
27 24
28 main() { 25 main() {
29 defineReflectiveSuite(() { 26 defineReflectiveSuite(() {
30 defineReflectiveTests(ContextBuilderTest); 27 defineReflectiveTests(ContextBuilderTest);
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 String filePath = 503 String filePath =
507 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); 504 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
508 resourceProvider.newFile( 505 resourceProvider.newFile(
509 filePath, 506 filePath,
510 ''' 507 '''
511 linter: 508 linter:
512 rules: 509 rules:
513 - empty_constructor_bodies 510 - empty_constructor_bodies
514 '''); 511 ''');
515 512
516 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); 513 AnalysisOptions options = builder.getAnalysisOptions(path);
517 AnalysisOptions options = builder.getAnalysisOptions(context, path);
518 _expectEqualOptions(options, expected); 514 _expectEqualOptions(options, expected);
519 } 515 }
520 516
521 void test_getAnalysisOptions_default_overrides() { 517 void test_getAnalysisOptions_default_overrides() {
522 AnalysisOptionsImpl defaultOptions = new AnalysisOptionsImpl(); 518 AnalysisOptionsImpl defaultOptions = new AnalysisOptionsImpl();
523 defaultOptions.enableLazyAssignmentOperators = true; 519 defaultOptions.enableLazyAssignmentOperators = true;
524 builderOptions.defaultOptions = defaultOptions; 520 builderOptions.defaultOptions = defaultOptions;
525 AnalysisOptionsImpl expected = new AnalysisOptionsImpl(); 521 AnalysisOptionsImpl expected = new AnalysisOptionsImpl();
526 expected.enableSuperMixins = true; 522 expected.enableSuperMixins = true;
527 expected.enableLazyAssignmentOperators = true; 523 expected.enableLazyAssignmentOperators = true;
528 String path = resourceProvider.convertPath('/some/directory/path'); 524 String path = resourceProvider.convertPath('/some/directory/path');
529 String filePath = 525 String filePath =
530 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); 526 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
531 resourceProvider.newFile( 527 resourceProvider.newFile(
532 filePath, 528 filePath,
533 ''' 529 '''
534 analyzer: 530 analyzer:
535 language: 531 language:
536 enableSuperMixins : true 532 enableSuperMixins : true
537 '''); 533 ''');
538 534
539 AnalysisEngine engine = AnalysisEngine.instance; 535 AnalysisOptions options = builder.getAnalysisOptions(path);
540 OptionsPlugin plugin = engine.optionsPlugin; 536 _expectEqualOptions(options, expected);
541 plugin.registerExtensionPoints((_) {});
542 try {
543 _TestOptionsProcessor processor = new _TestOptionsProcessor();
544 processor.expectedOptions = <String, Object>{
545 'analyzer': {
546 'language': {'enableSuperMixins': true}
547 }
548 };
549 (plugin.optionsProcessorExtensionPoint as ExtensionPointImpl)
550 .add(processor);
551 AnalysisContext context = engine.createAnalysisContext();
552 AnalysisOptions options = builder.getAnalysisOptions(context, path);
553 _expectEqualOptions(options, expected);
554 } finally {
555 plugin.registerExtensionPoints((_) {});
556 }
557 } 537 }
558 538
559 void test_getAnalysisOptions_includes() { 539 void test_getAnalysisOptions_includes() {
560 AnalysisOptionsImpl defaultOptions = new AnalysisOptionsImpl(); 540 AnalysisOptionsImpl defaultOptions = new AnalysisOptionsImpl();
561 builderOptions.defaultOptions = defaultOptions; 541 builderOptions.defaultOptions = defaultOptions;
562 AnalysisOptionsImpl expected = new AnalysisOptionsImpl(); 542 AnalysisOptionsImpl expected = new AnalysisOptionsImpl();
563 expected.enableSuperMixins = true; 543 expected.enableSuperMixins = true;
564 resourceProvider.newFile( 544 resourceProvider.newFile(
565 resourceProvider.convertPath('/mypkgs/somepkg/lib/here.yaml'), 545 resourceProvider.convertPath('/mypkgs/somepkg/lib/here.yaml'),
566 ''' 546 '''
(...skipping 15 matching lines...) Expand all
582 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); 562 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
583 resourceProvider.newFile( 563 resourceProvider.newFile(
584 filePath, 564 filePath,
585 ''' 565 '''
586 include: bar.yaml 566 include: bar.yaml
587 analyzer: 567 analyzer:
588 language: 568 language:
589 enableSuperMixins : true 569 enableSuperMixins : true
590 '''); 570 ''');
591 571
592 AnalysisEngine engine = AnalysisEngine.instance; 572 AnalysisOptions options = builder.getAnalysisOptions(path);
593 OptionsPlugin plugin = engine.optionsPlugin; 573 _expectEqualOptions(options, expected);
594 plugin.registerExtensionPoints((_) {});
595 try {
596 _TestOptionsProcessor processor = new _TestOptionsProcessor();
597 processor.expectedOptions = <String, Object>{
598 'analyzer': {
599 'language': {'enableSuperMixins': true}
600 },
601 'foo': {'bar': 'baz'},
602 'two': {'boo': 'newt'},
603 };
604 (plugin.optionsProcessorExtensionPoint as ExtensionPointImpl)
605 .add(processor);
606 AnalysisContext context = engine.createAnalysisContext();
607 AnalysisOptions options = builder.getAnalysisOptions(context, path);
608 _expectEqualOptions(options, expected);
609 } finally {
610 plugin.registerExtensionPoints((_) {});
611 }
612 } 574 }
613 575
614 void test_getAnalysisOptions_invalid() { 576 void test_getAnalysisOptions_invalid() {
615 String path = resourceProvider.convertPath('/some/directory/path'); 577 String path = resourceProvider.convertPath('/some/directory/path');
616 String filePath = 578 String filePath =
617 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); 579 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
618 resourceProvider.newFile(filePath, ';'); 580 resourceProvider.newFile(filePath, ';');
619 581
620 AnalysisEngine engine = AnalysisEngine.instance; 582 AnalysisOptions options = builder.getAnalysisOptions(path);
621 OptionsPlugin plugin = engine.optionsPlugin; 583 expect(options, isNotNull);
622 plugin.registerExtensionPoints((_) {});
623 try {
624 _TestOptionsProcessor processor = new _TestOptionsProcessor();
625 (plugin.optionsProcessorExtensionPoint as ExtensionPointImpl)
626 .add(processor);
627 AnalysisContext context = engine.createAnalysisContext();
628 AnalysisOptions options = builder.getAnalysisOptions(context, path);
629 expect(options, isNotNull);
630 expect(processor.errorCount, 1);
631 } finally {
632 plugin.registerExtensionPoints((_) {});
633 }
634 } 584 }
635 585
636 void test_getAnalysisOptions_noDefault_noOverrides() { 586 void test_getAnalysisOptions_noDefault_noOverrides() {
637 String path = resourceProvider.convertPath('/some/directory/path'); 587 String path = resourceProvider.convertPath('/some/directory/path');
638 String filePath = 588 String filePath =
639 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); 589 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
640 resourceProvider.newFile( 590 resourceProvider.newFile(
641 filePath, 591 filePath,
642 ''' 592 '''
643 linter: 593 linter:
644 rules: 594 rules:
645 - empty_constructor_bodies 595 - empty_constructor_bodies
646 '''); 596 ''');
647 597
648 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); 598 AnalysisOptions options = builder.getAnalysisOptions(path);
649 AnalysisOptions options = builder.getAnalysisOptions(context, path);
650 _expectEqualOptions(options, new AnalysisOptionsImpl()); 599 _expectEqualOptions(options, new AnalysisOptionsImpl());
651 } 600 }
652 601
653 void test_getAnalysisOptions_noDefault_overrides() { 602 void test_getAnalysisOptions_noDefault_overrides() {
654 AnalysisOptionsImpl expected = new AnalysisOptionsImpl(); 603 AnalysisOptionsImpl expected = new AnalysisOptionsImpl();
655 expected.enableSuperMixins = true; 604 expected.enableSuperMixins = true;
656 String path = resourceProvider.convertPath('/some/directory/path'); 605 String path = resourceProvider.convertPath('/some/directory/path');
657 String filePath = 606 String filePath =
658 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); 607 pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
659 resourceProvider.newFile( 608 resourceProvider.newFile(
660 filePath, 609 filePath,
661 ''' 610 '''
662 analyzer: 611 analyzer:
663 language: 612 language:
664 enableSuperMixins : true 613 enableSuperMixins : true
665 '''); 614 ''');
666 615
667 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); 616 AnalysisOptions options = builder.getAnalysisOptions(path);
668 AnalysisOptions options = builder.getAnalysisOptions(context, path);
669 _expectEqualOptions(options, expected); 617 _expectEqualOptions(options, expected);
670 } 618 }
671 619
672 void test_getOptionsFile_explicit() { 620 void test_getOptionsFile_explicit() {
673 String path = resourceProvider.convertPath('/some/directory/path'); 621 String path = resourceProvider.convertPath('/some/directory/path');
674 String filePath = resourceProvider.convertPath('/options/analysis.yaml'); 622 String filePath = resourceProvider.convertPath('/options/analysis.yaml');
675 resourceProvider.newFile(filePath, ''); 623 resourceProvider.newFile(filePath, '');
676 624
677 builderOptions.defaultAnalysisOptionsFilePath = filePath; 625 builderOptions.defaultAnalysisOptionsFilePath = filePath;
678 File result = builder.getOptionsFile(path); 626 File result = builder.getOptionsFile(path);
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 expect(locator.embedderYamls, hasLength(0)); 724 expect(locator.embedderYamls, hasLength(0));
777 } 725 }
778 726
779 void test_valid() { 727 void test_valid() {
780 EmbedderYamlLocator locator = new EmbedderYamlLocator({ 728 EmbedderYamlLocator locator = new EmbedderYamlLocator({
781 'fox': <Folder>[pathTranslator.getResource(foxLib)] 729 'fox': <Folder>[pathTranslator.getResource(foxLib)]
782 }); 730 });
783 expect(locator.embedderYamls, hasLength(1)); 731 expect(locator.embedderYamls, hasLength(1));
784 } 732 }
785 } 733 }
786
787 class _TestOptionsProcessor implements OptionsProcessor {
788 Map<String, Object> expectedOptions = null;
789
790 int errorCount = 0;
791
792 @override
793 void onError(Exception exception) {
794 errorCount++;
795 }
796
797 @override
798 void optionsProcessed(AnalysisContext context, Map<String, Object> options) {
799 if (expectedOptions == null) {
800 fail('Unexpected invocation of optionsProcessed');
801 }
802 expect(options, hasLength(expectedOptions.length));
803 for (String key in expectedOptions.keys) {
804 expect(options.containsKey(key), isTrue, reason: 'missing key $key');
805 expect(options[key], expectedOptions[key],
806 reason: 'values for key $key do not match');
807 }
808 }
809 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/source/error_processor_test.dart ('k') | pkg/analyzer/test/src/plugin/plugin_config_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698