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

Unified Diff: pkg/analyzer/test/source/analysis_options_provider_test.dart

Issue 1832643002: Allow Analysis Server crawl up the folders to search .analysis_options file. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 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
Index: pkg/analyzer/test/source/analysis_options_provider_test.dart
diff --git a/pkg/analyzer/test/source/analysis_options_provider_test.dart b/pkg/analyzer/test/source/analysis_options_provider_test.dart
index 0b00a6d6ae45c797a1edcd38d60d608302de1ee4..13615dd6b1198303c3d5008e3421bedc80285cd7 100644
--- a/pkg/analyzer/test/source/analysis_options_provider_test.dart
+++ b/pkg/analyzer/test/source/analysis_options_provider_test.dart
@@ -4,15 +4,21 @@
library analyzer.test.source.analysis_options_provider_test;
+import 'dart:core' hide Resource;
+
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:analyzer/source/analysis_options_provider.dart';
import 'package:unittest/unittest.dart';
import 'package:yaml/yaml.dart';
+import '../reflective_tests.dart';
import '../resource_utils.dart';
+import '../utils.dart';
main() {
+ initializeTestEnvironment();
+ runReflectiveTests(AnalysisOptionsProviderTest);
group('AnalysisOptionsProvider', () {
void expectMergesTo(String defaults, String overrides, String expected) {
var optionsProvider = new AnalysisOptionsProvider();
@@ -67,68 +73,6 @@ linter:
});
group('AnalysisOptionsProvider', () {
- setUp(() {
- buildResourceProvider();
- });
- tearDown(() {
- clearResourceProvider();
- });
- test('test_simple', () {
- var optionsProvider = new AnalysisOptionsProvider();
- Map<String, YamlNode> options =
- optionsProvider.getOptions(pathTranslator.getResource('/'));
- expect(options, hasLength(1));
- expect(options['analyzer'], isNotNull);
- YamlMap analyzer = options['analyzer'];
- expect(analyzer, hasLength(1));
- expect(analyzer['ignore'], isNotNull);
- YamlList ignore = analyzer['ignore'];
- expect(ignore, hasLength(2));
- expect(ignore[0], 'ignoreme.dart');
- expect(ignore[1], 'sdk_ext/**');
- });
- test('test_doesnotexist', () {
- var optionsProvider = new AnalysisOptionsProvider();
- Map<String, YamlNode> options =
- optionsProvider.getOptions(pathTranslator.getResource('/empty'));
- expect(options, isEmpty);
- });
- });
- group('AnalysisOptionsProvider', () {
- setUp(() {
- buildResourceProvider(emptyAnalysisOptions: true);
- });
- tearDown(() {
- clearResourceProvider();
- });
- test('test_empty', () {
- var optionsProvider = new AnalysisOptionsProvider();
- Map<String, YamlNode> options =
- optionsProvider.getOptions(pathTranslator.getResource('/'));
- expect(options, isNotNull);
- });
- });
- group('AnalysisOptionsProvider', () {
- setUp(() {
- buildResourceProvider(badAnalysisOptions: true);
- });
- tearDown(() {
- clearResourceProvider();
- });
- test('test_invalid', () {
- var optionsProvider = new AnalysisOptionsProvider();
- bool exceptionCaught = false;
- try {
- Map<String, YamlNode> options =
- optionsProvider.getOptions(pathTranslator.getResource('/'));
- expect(options, isNotNull);
- } catch (e) {
- exceptionCaught = true;
- }
- expect(exceptionCaught, isTrue);
- });
- });
- group('AnalysisOptionsProvider', () {
test('test_bad_yaml (1)', () {
var src = '''
analyzer: # <= bang
@@ -155,8 +99,8 @@ analyzer:
});
}
-ResourceProvider resourceProvider;
TestPathTranslator pathTranslator;
+ResourceProvider resourceProvider;
buildResourceProvider(
{bool emptyAnalysisOptions: false, bool badAnalysisOptions: false}) {
@@ -184,3 +128,115 @@ analyzer:
clearResourceProvider() {
resourceProvider = null;
}
+
+@reflectiveTest
+class AnalysisOptionsProviderTest {
+ TestPathTranslator pathTranslator;
+ ResourceProvider resourceProvider;
+
+ AnalysisOptionsProvider provider = new AnalysisOptionsProvider();
+
+ void setUp() {
+ var rawProvider = new MemoryResourceProvider(isWindows: isWindows);
+ resourceProvider = new TestResourceProvider(rawProvider);
+ pathTranslator = new TestPathTranslator(rawProvider);
+ }
+
+ void test_getOptions_crawlUp_hasInFolder() {
+ pathTranslator.newFolder('/foo/bar');
+ pathTranslator.newFile(
+ '/foo/.analysis_options',
+ r'''
+analyzer:
+ ignore:
+ - foo
+''');
+ pathTranslator.newFile(
+ '/foo/bar/.analysis_options',
+ r'''
+analyzer:
+ ignore:
+ - bar
+''');
+ Map<String, YamlNode> options = _getOptions('/foo/bar', crawlUp: true);
+ expect(options, hasLength(1));
+ {
+ YamlMap analyzer = options['analyzer'];
+ expect(analyzer, isNotNull);
+ expect(analyzer['ignore'], unorderedEquals(['bar']));
+ }
+ }
+
+ void test_getOptions_crawlUp_hasInParent() {
+ pathTranslator.newFolder('/foo/bar/baz');
+ pathTranslator.newFile(
+ '/foo/.analysis_options',
+ r'''
+analyzer:
+ ignore:
+ - foo
+''');
+ pathTranslator.newFile(
+ '/foo/bar/.analysis_options',
+ r'''
+analyzer:
+ ignore:
+ - bar
+''');
+ Map<String, YamlNode> options = _getOptions('/foo/bar/baz', crawlUp: true);
+ expect(options, hasLength(1));
+ {
+ YamlMap analyzer = options['analyzer'];
+ expect(analyzer, isNotNull);
+ expect(analyzer['ignore'], unorderedEquals(['bar']));
+ }
+ }
+
+ void test_getOptions_doesNotExist() {
+ pathTranslator.newFolder('/notFile');
+ Map<String, YamlNode> options = _getOptions('/notFile');
+ expect(options, isEmpty);
+ }
+
+ void test_getOptions_empty() {
+ pathTranslator.newFile('/.analysis_options', r'''#empty''');
+ Map<String, YamlNode> options = _getOptions('/');
+ expect(options, isNotNull);
+ expect(options, isEmpty);
+ }
+
+ void test_getOptions_invalid() {
+ pathTranslator.newFile('/.analysis_options', r''':''');
+ expect(() {
+ _getOptions('/');
+ }, throws);
+ }
+
+ void test_getOptions_simple() {
+ pathTranslator.newFile(
+ '/.analysis_options',
+ r'''
+analyzer:
+ ignore:
+ - ignoreme.dart
+ - 'sdk_ext/**'
+''');
+ Map<String, YamlNode> options = _getOptions('/');
+ expect(options, hasLength(1));
+ {
+ YamlMap analyzer = options['analyzer'];
+ expect(analyzer, hasLength(1));
+ {
+ YamlList ignore = analyzer['ignore'];
+ expect(ignore, hasLength(2));
+ expect(ignore[0], 'ignoreme.dart');
+ expect(ignore[1], 'sdk_ext/**');
+ }
+ }
+ }
+
+ Map<String, YamlNode> _getOptions(String posixPath, {bool crawlUp: false}) {
+ Resource resource = pathTranslator.getResource(posixPath);
+ return provider.getOptions(resource, crawlUp: crawlUp);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698