blob: 86788dc2d61634dff0b627cf3f1513edd0a744f6 [file] [log] [blame]
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/lsp/client_configuration.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
void main() {
defineReflectiveSuite(() {
defineReflectiveTests(ClientConfigurationTest);
});
}
@reflectiveTest
class ClientConfigurationTest with ResourceProviderMixin {
void test_folderConfig() {
final folder = convertPath('/home/test');
final file = convertPath('/home/test/file.dart');
final config = LspClientConfiguration();
config.replace(
{'lineLength': 100},
{
folder: {'lineLength': 200}
},
);
expect(config.forResource(file).lineLength, equals(200));
}
void test_folderConfig_globalFallback() {
final file = convertPath('/home/test/file.dart');
final config = LspClientConfiguration();
config.replace({'lineLength': 100}, {});
// Should fall back to the global config.
expect(config.forResource(file).lineLength, equals(100));
}
void test_folderConfig_nested() {
final folderOne = convertPath('/one');
final folderTwo = convertPath('/one/two');
final folderThree = convertPath('/one/two/three');
final file = convertPath('/one/two/three/file.dart');
final config = LspClientConfiguration();
config.replace(
{'lineLength': 50},
{
folderOne: {'lineLength': 100},
folderThree: {'lineLength': 300},
folderTwo: {'lineLength': 200},
},
);
// Should use the inner-most folder (folderThree).
expect(config.forResource(file).lineLength, equals(300));
}
void test_globalConfig() {
final config = LspClientConfiguration();
config.replace({'lineLength': 100}, {});
expect(config.global.lineLength, equals(100));
}
}