blob: 993fb070ae1273291d5d144b55c8f554c0ff32ee [file] [log] [blame]
// Copyright (c) 2014, 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/protocol/protocol.dart';
import 'package:analysis_server/protocol/protocol_generated.dart';
import 'package:analysis_server/src/domain_analysis.dart';
import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../analysis_abstract.dart';
import '../mocks.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(SetPriorityFilesTest);
});
}
@reflectiveTest
class SetPriorityFilesTest extends AbstractAnalysisTest {
@override
void setUp() {
super.setUp();
server.handlers = [
new AnalysisDomainHandler(server),
];
createProject();
}
test_fileDoesNotExist() async {
String file = '$projectPath/doesNotExist.dart';
Response response = await _setPriorityFile(file);
expect(response, isResponseSuccess('0'));
}
test_fileInAnalysisRoot() async {
addTestFile('');
// set priority files
Response response = await _setPriorityFile(testFile);
expect(response, isResponseSuccess('0'));
// verify
_verifyPriorityFiles(testFile);
}
test_fileInSdk() async {
addTestFile('');
// set priority files
String filePath = '/lib/convert/convert.dart';
Response response = await _setPriorityFile(filePath);
expect(response, isResponseSuccess('0'));
// verify
_verifyPriorityFiles(filePath);
}
test_fileNotInAnalysisRoot() async {
String path = '/other/file.dart';
newFile(path);
await _setPriorityFile(path);
_verifyPriorityFiles(path);
}
test_ignoredInAnalysisOptions() async {
String sampleFile = '$projectPath/samples/sample.dart';
newFile('$projectPath/.analysis_options', content: r'''
analyzer:
exclude:
- 'samples/**'
''');
newFile(sampleFile);
// attempt to set priority file
await _setPriorityFile(sampleFile);
_verifyPriorityFiles(sampleFile);
}
test_ignoredInAnalysisOptions_inChildContext() async {
newFile('$projectPath/.packages');
newFile('$projectPath/child/.packages');
String sampleFile = '$projectPath/child/samples/sample.dart';
newFile('$projectPath/child/.analysis_options', content: r'''
analyzer:
exclude:
- 'samples/**'
''');
newFile(sampleFile);
// attempt to set priority file
await _setPriorityFile(sampleFile);
_verifyPriorityFiles(sampleFile);
}
test_ignoredInAnalysisOptions_inRootContext() async {
newFile('$projectPath/.packages');
newFile('$projectPath/child/.packages');
String sampleFile = '$projectPath/child/samples/sample.dart';
newFile('$projectPath/.analysis_options', content: r'''
analyzer:
exclude:
- 'child/samples/**'
''');
newFile(sampleFile);
// attempt to set priority file
await _setPriorityFile(sampleFile);
_verifyPriorityFiles(sampleFile);
}
test_sentToPlugins() async {
addTestFile('');
// set priority files
Response response = await _setPriorityFile(testFile);
expect(response, isResponseSuccess('0'));
// verify
plugin.AnalysisSetPriorityFilesParams params =
pluginManager.analysisSetPriorityFilesParams;
expect(params, isNotNull);
expect(params.files, <String>[testFile]);
}
_setPriorityFile(String file) async {
Request request =
new AnalysisSetPriorityFilesParams(<String>[file]).toRequest('0');
return await serverChannel.sendRequest(request);
}
void _verifyPriorityFiles(String path) {
AnalysisDriver driver = server.getAnalysisDriver(path);
List<String> prioritySources = driver.priorityFiles;
expect(prioritySources, [path]);
}
}