2
2
// for details. All rights reserved. Use of this source code is governed by a
3
3
// BSD-style license that can be found in the LICENSE file.
4
4
5
+ import 'package:analyzer/dart/analysis/results.dart' ;
5
6
import 'package:analyzer/dart/sdk/build_sdk_summary.dart' ;
7
+ import 'package:analyzer/file_system/file_system.dart' ;
6
8
import 'package:analyzer/src/clients/build_resolvers/build_resolvers.dart' ;
9
+ import 'package:analyzer/src/context/packages.dart' ;
10
+ import 'package:analyzer/src/source/package_map_resolver.dart' ;
7
11
import 'package:analyzer/src/test_utilities/mock_sdk.dart' ;
12
+ import 'package:analyzer/src/test_utilities/package_config_file_builder.dart' ;
8
13
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart' ;
9
14
import 'package:test/test.dart' ;
10
15
import 'package:test_reflective_loader/test_reflective_loader.dart' ;
@@ -17,7 +22,72 @@ main() {
17
22
18
23
@reflectiveTest
19
24
class AnalysisDriverForPackageBuildTest with ResourceProviderMixin {
25
+ File get testFile => getFile ('$testPackageLibPath /test.dart' );
26
+
27
+ String get testPackageLibPath => '$testPackageRootPath /lib' ;
28
+
29
+ String get testPackageRootPath => '$workspaceRootPath /test' ;
30
+
31
+ String get workspaceRootPath => '/home' ;
32
+
33
+ void setUp () {
34
+ newPubspecYamlFile (testPackageRootPath, r'''
35
+ name: test
36
+ ''' );
37
+
38
+ newPackageConfigJsonFileFromBuilder (
39
+ testPackageRootPath,
40
+ PackageConfigFileBuilder ()
41
+ ..add (
42
+ name: 'test' ,
43
+ rootPath: testPackageRootPath,
44
+ ),
45
+ );
46
+ }
47
+
48
+ test_currentSession_afterChangeFile () async {
49
+ var analysisDriver = await _createAnalysisDriver ();
50
+ var analysisSession = analysisDriver.currentSession;
51
+
52
+ var a = newFile ('$testPackageLibPath /a.dart' , r'''
53
+ class A {}
54
+ ''' );
55
+
56
+ analysisDriver.changeFile (a.path);
57
+
58
+ var unitResult = await analysisSession.getResolvedUnit (a.path);
59
+ unitResult as ResolvedUnitResult ;
60
+ }
61
+
62
+ test_currentSession_getResolvedUnit () async {
63
+ var analysisDriver = await _createAnalysisDriver ();
64
+ var analysisSession = analysisDriver.currentSession;
65
+
66
+ var a = newFile ('$testPackageLibPath /a.dart' , r'''
67
+ class A {}
68
+ ''' );
69
+
70
+ var unitResult = await analysisSession.getResolvedUnit (a.path);
71
+ unitResult as ResolvedUnitResult ;
72
+ expect (unitResult.unit.declarations, hasLength (1 ));
73
+ }
74
+
20
75
test_sdkLibraryUris () async {
76
+ var analysisDriver = await _createAnalysisDriver ();
77
+
78
+ expect (
79
+ analysisDriver.sdkLibraryUris,
80
+ containsAll ([
81
+ Uri .parse ('dart:core' ),
82
+ Uri .parse ('dart:async' ),
83
+ Uri .parse ('dart:io' ),
84
+ Uri .parse ('dart:_internal' ),
85
+ ]),
86
+ );
87
+ }
88
+
89
+ /// Creates the driver for [testFile] .
90
+ Future <AnalysisDriverForPackageBuild > _createAnalysisDriver () async {
21
91
var sdkRoot = getFolder ('/sdk' );
22
92
23
93
createMockSdk (
@@ -30,22 +100,24 @@ class AnalysisDriverForPackageBuildTest with ResourceProviderMixin {
30
100
sdkPath: sdkRoot.path,
31
101
);
32
102
103
+ var packages = findPackagesFrom (resourceProvider, testFile);
104
+ var uriResolver = _toPackageMapUriResolver (packages);
105
+
33
106
var analysisDriver = createAnalysisDriver (
34
107
resourceProvider: resourceProvider,
35
108
sdkSummaryBytes: sdkSummaryBytes,
36
109
analysisOptions: AnalysisOptionsImpl (),
37
- uriResolvers : [] ,
38
- packages : Packages ({}) ,
110
+ packages : packages ,
111
+ uriResolvers : [uriResolver] ,
39
112
);
113
+ return analysisDriver;
114
+ }
40
115
41
- expect (
42
- analysisDriver.sdkLibraryUris,
43
- containsAll ([
44
- Uri .parse ('dart:core' ),
45
- Uri .parse ('dart:async' ),
46
- Uri .parse ('dart:io' ),
47
- Uri .parse ('dart:_internal' ),
48
- ]),
49
- );
116
+ PackageMapUriResolver _toPackageMapUriResolver (Packages packages) {
117
+ var map = < String , List <Folder >> {};
118
+ for (var package in packages.packages) {
119
+ map[package.name] = [package.libFolder];
120
+ }
121
+ return PackageMapUriResolver (resourceProvider, map);
50
122
}
51
123
}
0 commit comments