OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 library test.integration.analysis.get.errors; | |
6 | |
7 import 'dart:async'; | |
8 import 'dart:io'; | |
9 | |
10 import 'package:analysis_server/plugin/protocol/protocol.dart'; | |
11 import 'package:analyzer/file_system/physical_file_system.dart'; | |
12 import 'package:analyzer/src/dart/sdk/sdk.dart'; | |
13 import 'package:analyzer/src/generated/sdk.dart'; | |
14 import 'package:path/path.dart' as path; | |
15 import 'package:test_reflective_loader/test_reflective_loader.dart'; | |
16 import 'package:unittest/unittest.dart'; | |
17 | |
18 import '../../mock_sdk.dart'; | |
19 import '../../utils.dart'; | |
20 import '../integration_tests.dart'; | |
21 | |
22 main() { | |
23 initializeTestEnvironment(); | |
24 defineReflectiveTests(AnalysisDomainGetErrorsTest); | |
25 } | |
26 | |
27 /** | |
28 * Base class for testing the "analysis.getErrors" request. | |
scheglov
2016/08/24 18:37:20
The comment seems out of sync with the tests.
Brian Wilkerson
2016/08/24 19:38:12
Done, thanks.
| |
29 */ | |
30 @reflectiveTest | |
31 class AnalysisDomainGetErrorsTest | |
32 extends AbstractAnalysisServerIntegrationTest { | |
33 AnalysisDomainGetErrorsTest(); | |
34 | |
35 String createNonStandardSdk() { | |
36 MockSdkLibrary fakeLibrary = | |
37 new MockSdkLibrary('dart:fake', '/lib/fake/fake.dart', ''); | |
38 String sdkPath = path.join(sourceDirectory.path, 'sdk'); | |
39 StringBuffer librariesContent = new StringBuffer(); | |
40 librariesContent.writeln( | |
41 'final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {'); | |
42 MockSdk.LIBRARIES.toList() | |
43 ..add(fakeLibrary) | |
44 ..forEach((SdkLibrary library) { | |
45 List<String> components = path.posix.split(library.path); | |
46 components[0] = sdkPath; | |
47 String libraryPath = path.joinAll(components); | |
48 new Directory(path.dirname(libraryPath)).createSync(recursive: true); | |
49 new File(libraryPath) | |
50 .writeAsStringSync((library as MockSdkLibrary).content); | |
51 | |
52 String relativePath = path.joinAll(components.sublist(2)); | |
53 librariesContent.write('"'); | |
54 librariesContent | |
55 .write(library.shortName.substring(5)); // Remove the 'dart:' prefix | |
56 librariesContent.write('": const LibraryInfo("'); | |
57 librariesContent.write(relativePath); | |
58 librariesContent.writeln('"),'); | |
59 }); | |
60 librariesContent.writeln('};'); | |
61 | |
62 String librariesPath = path.joinAll([ | |
63 sdkPath, | |
64 'lib', | |
65 '_internal', | |
66 'sdk_library_metadata', | |
67 'lib', | |
68 'libraries.dart' | |
69 ]); | |
70 new Directory(path.dirname(librariesPath)).createSync(recursive: true); | |
71 new File(librariesPath).writeAsStringSync(librariesContent.toString()); | |
72 | |
73 return sdkPath; | |
74 } | |
75 | |
76 @override | |
77 Future startServer({int servicesPort, bool checked: true}) { | |
78 String sdkPath = createNonStandardSdk(); | |
79 return server.start( | |
80 servicesPort: servicesPort, checked: checked, sdkPath: sdkPath); | |
81 } | |
82 | |
83 Future test_getErrors() async { | |
84 String pathname = sourcePath('test.dart'); | |
85 String text = r''' | |
86 import 'dart:core'; | |
87 import 'dart:fake'; | |
88 '''; | |
89 writeFile(pathname, text); | |
90 standardAnalysisSetup(); | |
91 await analysisFinished; | |
92 List<AnalysisError> errors = currentAnalysisErrors[pathname]; | |
93 expect(errors, hasLength(1)); | |
94 expect(errors[0].code, 'unused_import'); | |
95 } | |
96 } | |
OLD | NEW |