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

Side by Side Diff: pkg/analysis_server/test/context_manager_test.dart

Issue 672003002: Add package root setting to analysis server API. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test.context.directory.manager; 5 library test.context.directory.manager;
6 6
7 import 'package:analysis_server/src/context_manager.dart'; 7 import 'package:analysis_server/src/context_manager.dart';
8 import 'reflective_tests.dart'; 8 import 'reflective_tests.dart';
9 import 'package:analyzer/file_system/file_system.dart'; 9 import 'package:analyzer/file_system/file_system.dart';
10 import 'package:analyzer/file_system/memory_file_system.dart'; 10 import 'package:analyzer/file_system/memory_file_system.dart';
(...skipping 28 matching lines...) Expand all
39 } 39 }
40 40
41 test_ignoreFilesInPackagesFolder() { 41 test_ignoreFilesInPackagesFolder() {
42 // create a context with a pubspec.yaml file 42 // create a context with a pubspec.yaml file
43 String pubspecPath = posix.join(projPath, 'pubspec.yaml'); 43 String pubspecPath = posix.join(projPath, 'pubspec.yaml');
44 resourceProvider.newFile(pubspecPath, 'pubspec'); 44 resourceProvider.newFile(pubspecPath, 'pubspec');
45 // create a file in the "packages" folder 45 // create a file in the "packages" folder
46 String filePath1 = posix.join(projPath, 'packages', 'file1.dart'); 46 String filePath1 = posix.join(projPath, 'packages', 'file1.dart');
47 resourceProvider.newFile(filePath1, 'contents'); 47 resourceProvider.newFile(filePath1, 'contents');
48 // "packages" files are ignored initially 48 // "packages" files are ignored initially
49 manager.setRoots(<String>[projPath], <String>[]); 49 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
50 expect(manager.currentContextFilePaths[projPath], isEmpty); 50 expect(manager.currentContextFilePaths[projPath], isEmpty);
51 // "packages" files are ignored during watch 51 // "packages" files are ignored during watch
52 String filePath2 = posix.join(projPath, 'packages', 'file2.dart'); 52 String filePath2 = posix.join(projPath, 'packages', 'file2.dart');
53 resourceProvider.newFile(filePath2, 'contents'); 53 resourceProvider.newFile(filePath2, 'contents');
54 return pumpEventQueue().then((_) { 54 return pumpEventQueue().then((_) {
55 expect(manager.currentContextFilePaths[projPath], isEmpty); 55 expect(manager.currentContextFilePaths[projPath], isEmpty);
56 }); 56 });
57 } 57 }
58 58
59 void test_isInAnalysisRoot_excluded() { 59 void test_isInAnalysisRoot_excluded() {
60 // prepare paths 60 // prepare paths
61 String project = '/project'; 61 String project = '/project';
62 String excludedFolder = '$project/excluded'; 62 String excludedFolder = '$project/excluded';
63 // set roots 63 // set roots
64 resourceProvider.newFolder(project); 64 resourceProvider.newFolder(project);
65 resourceProvider.newFolder(excludedFolder); 65 resourceProvider.newFolder(excludedFolder);
66 manager.setRoots(<String>[project], <String>[excludedFolder]); 66 manager.setRoots(<String>[project], <String>[excludedFolder],
67 <String, String>{});
67 // verify 68 // verify
68 expect(manager.isInAnalysisRoot('$excludedFolder/test.dart'), isFalse); 69 expect(manager.isInAnalysisRoot('$excludedFolder/test.dart'), isFalse);
69 } 70 }
70 71
71 void test_isInAnalysisRoot_inRoot() { 72 void test_isInAnalysisRoot_inRoot() {
72 manager.setRoots(<String>[projPath], <String>[]); 73 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
73 expect(manager.isInAnalysisRoot('$projPath/test.dart'), isTrue); 74 expect(manager.isInAnalysisRoot('$projPath/test.dart'), isTrue);
74 } 75 }
75 76
76 void test_isInAnalysisRoot_notInRoot() { 77 void test_isInAnalysisRoot_notInRoot() {
77 manager.setRoots(<String>[projPath], <String>[]); 78 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
78 expect(manager.isInAnalysisRoot('/test.dart'), isFalse); 79 expect(manager.isInAnalysisRoot('/test.dart'), isFalse);
79 } 80 }
80 81
81 test_refresh_folder_with_pubspec() { 82 test_refresh_folder_with_pubspec() {
82 // create a context with a pubspec.yaml file 83 // create a context with a pubspec.yaml file
83 String pubspecPath = posix.join(projPath, 'pubspec.yaml'); 84 String pubspecPath = posix.join(projPath, 'pubspec.yaml');
84 resourceProvider.newFile(pubspecPath, 'pubspec'); 85 resourceProvider.newFile(pubspecPath, 'pubspec');
85 manager.setRoots(<String>[projPath], <String>[]); 86 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
86 return pumpEventQueue().then((_) { 87 return pumpEventQueue().then((_) {
87 expect(manager.currentContextPaths.toList(), [projPath]); 88 expect(manager.currentContextPaths.toList(), [projPath]);
88 manager.now++; 89 manager.now++;
89 manager.refresh(); 90 manager.refresh();
90 return pumpEventQueue().then((_) { 91 return pumpEventQueue().then((_) {
91 expect(manager.currentContextPaths.toList(), [projPath]); 92 expect(manager.currentContextPaths.toList(), [projPath]);
92 expect(manager.currentContextTimestamps[projPath], manager.now); 93 expect(manager.currentContextTimestamps[projPath], manager.now);
93 }); 94 });
94 }); 95 });
95 } 96 }
96 97
97 test_refresh_folder_with_pubspec_subfolders() { 98 test_refresh_folder_with_pubspec_subfolders() {
98 // Create a folder with no pubspec.yaml, containing two subfolders with 99 // Create a folder with no pubspec.yaml, containing two subfolders with
99 // pubspec.yaml files. 100 // pubspec.yaml files.
100 String subdir1Path = posix.join(projPath, 'subdir1'); 101 String subdir1Path = posix.join(projPath, 'subdir1');
101 String subdir2Path = posix.join(projPath, 'subdir2'); 102 String subdir2Path = posix.join(projPath, 'subdir2');
102 String pubspec1Path = posix.join(subdir1Path, 'pubspec.yaml'); 103 String pubspec1Path = posix.join(subdir1Path, 'pubspec.yaml');
103 String pubspec2Path = posix.join(subdir2Path, 'pubspec.yaml'); 104 String pubspec2Path = posix.join(subdir2Path, 'pubspec.yaml');
104 resourceProvider.newFile(pubspec1Path, 'pubspec'); 105 resourceProvider.newFile(pubspec1Path, 'pubspec');
105 resourceProvider.newFile(pubspec2Path, 'pubspec'); 106 resourceProvider.newFile(pubspec2Path, 'pubspec');
106 manager.setRoots(<String>[projPath], <String>[]); 107 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
107 return pumpEventQueue().then((_) { 108 return pumpEventQueue().then((_) {
108 expect(manager.currentContextPaths.toSet(), 109 expect(manager.currentContextPaths.toSet(),
109 [subdir1Path, subdir2Path, projPath].toSet()); 110 [subdir1Path, subdir2Path, projPath].toSet());
110 manager.now++; 111 manager.now++;
111 manager.refresh(); 112 manager.refresh();
112 return pumpEventQueue().then((_) { 113 return pumpEventQueue().then((_) {
113 expect(manager.currentContextPaths.toSet(), 114 expect(manager.currentContextPaths.toSet(),
114 [subdir1Path, subdir2Path, projPath].toSet()); 115 [subdir1Path, subdir2Path, projPath].toSet());
115 expect(manager.currentContextTimestamps[projPath], manager.now); 116 expect(manager.currentContextTimestamps[projPath], manager.now);
116 expect(manager.currentContextTimestamps[subdir1Path], manager.now); 117 expect(manager.currentContextTimestamps[subdir1Path], manager.now);
117 expect(manager.currentContextTimestamps[subdir2Path], manager.now); 118 expect(manager.currentContextTimestamps[subdir2Path], manager.now);
118 }); 119 });
119 }); 120 });
120 } 121 }
121 122
122 void test_setRoots_addFolderWithDartFile() { 123 void test_setRoots_addFolderWithDartFile() {
123 String filePath = posix.join(projPath, 'foo.dart'); 124 String filePath = posix.join(projPath, 'foo.dart');
124 resourceProvider.newFile(filePath, 'contents'); 125 resourceProvider.newFile(filePath, 'contents');
125 manager.setRoots(<String>[projPath], <String>[]); 126 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
126 // verify 127 // verify
127 var filePaths = manager.currentContextFilePaths[projPath]; 128 var filePaths = manager.currentContextFilePaths[projPath];
128 expect(filePaths, hasLength(1)); 129 expect(filePaths, hasLength(1));
129 expect(filePaths, contains(filePath)); 130 expect(filePaths, contains(filePath));
130 } 131 }
131 132
132 void test_setRoots_addFolderWithDartFileInSubfolder() { 133 void test_setRoots_addFolderWithDartFileInSubfolder() {
133 String filePath = posix.join(projPath, 'foo', 'bar.dart'); 134 String filePath = posix.join(projPath, 'foo', 'bar.dart');
134 resourceProvider.newFile(filePath, 'contents'); 135 resourceProvider.newFile(filePath, 'contents');
135 manager.setRoots(<String>[projPath], <String>[]); 136 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
136 // verify 137 // verify
137 var filePaths = manager.currentContextFilePaths[projPath]; 138 var filePaths = manager.currentContextFilePaths[projPath];
138 expect(filePaths, hasLength(1)); 139 expect(filePaths, hasLength(1));
139 expect(filePaths, contains(filePath)); 140 expect(filePaths, contains(filePath));
140 } 141 }
141 142
142 void test_setRoots_addFolderWithDummyLink() { 143 void test_setRoots_addFolderWithDummyLink() {
143 String filePath = posix.join(projPath, 'foo.dart'); 144 String filePath = posix.join(projPath, 'foo.dart');
144 resourceProvider.newDummyLink(filePath); 145 resourceProvider.newDummyLink(filePath);
145 manager.setRoots(<String>[projPath], <String>[]); 146 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
146 // verify 147 // verify
147 var filePaths = manager.currentContextFilePaths[projPath]; 148 var filePaths = manager.currentContextFilePaths[projPath];
148 expect(filePaths, isEmpty); 149 expect(filePaths, isEmpty);
149 } 150 }
150 151
151 void test_setRoots_addFolderWithPubspec() { 152 void test_setRoots_addFolderWithPubspec() {
152 String pubspecPath = posix.join(projPath, 'pubspec.yaml'); 153 String pubspecPath = posix.join(projPath, 'pubspec.yaml');
153 resourceProvider.newFile(pubspecPath, 'pubspec'); 154 resourceProvider.newFile(pubspecPath, 'pubspec');
154 manager.setRoots(<String>[projPath], <String>[]); 155 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
155 // verify 156 // verify
156 expect(manager.currentContextPaths, hasLength(1)); 157 expect(manager.currentContextPaths, hasLength(1));
157 expect(manager.currentContextPaths, contains(projPath)); 158 expect(manager.currentContextPaths, contains(projPath));
158 expect(manager.currentContextFilePaths[projPath], hasLength(0)); 159 expect(manager.currentContextFilePaths[projPath], hasLength(0));
159 } 160 }
160 161
161 void test_setRoots_addFolderWithPubspecFolders() { 162 void test_setRoots_addFolderWithPubspecFolders() {
162 // prepare paths 163 // prepare paths
163 String root = '/root'; 164 String root = '/root';
164 String rootFile = '$root/root.dart'; 165 String rootFile = '$root/root.dart';
(...skipping 10 matching lines...) Expand all
175 // configure package maps 176 // configure package maps
176 packageMapProvider.packageMaps = { 177 packageMapProvider.packageMaps = {
177 subProjectA: { 178 subProjectA: {
178 'foo': [resourceProvider.newFolder('/package/foo')] 179 'foo': [resourceProvider.newFolder('/package/foo')]
179 }, 180 },
180 subProjectA: { 181 subProjectA: {
181 'bar': [resourceProvider.newFolder('/package/bar')] 182 'bar': [resourceProvider.newFolder('/package/bar')]
182 }, 183 },
183 }; 184 };
184 // set roots 185 // set roots
185 manager.setRoots(<String>[root], <String>[]); 186 manager.setRoots(<String>[root], <String>[], <String, String>{});
186 manager.assertContextPaths([root, subProjectA, subProjectB]); 187 manager.assertContextPaths([root, subProjectA, subProjectB]);
187 // verify files 188 // verify files
188 manager.assertContextFiles(root, [rootFile]); 189 manager.assertContextFiles(root, [rootFile]);
189 manager.assertContextFiles(subProjectA, [subProjectA_file]); 190 manager.assertContextFiles(subProjectA, [subProjectA_file]);
190 manager.assertContextFiles(subProjectB, [subProjectB_file]); 191 manager.assertContextFiles(subProjectB, [subProjectB_file]);
191 // verify package maps 192 // verify package maps
192 expect( 193 expect(
193 manager.currentContextPackageMaps[root], 194 manager.currentContextPackageMaps[root],
194 equals(packageMapProvider.packageMaps[root])); 195 equals(packageMapProvider.packageMaps[root]));
195 expect( 196 expect(
196 manager.currentContextPackageMaps[subProjectA], 197 manager.currentContextPackageMaps[subProjectA],
197 equals(packageMapProvider.packageMaps[subProjectA])); 198 equals(packageMapProvider.packageMaps[subProjectA]));
198 expect( 199 expect(
199 manager.currentContextPackageMaps[subProjectB], 200 manager.currentContextPackageMaps[subProjectB],
200 equals(packageMapProvider.packageMaps[subProjectB])); 201 equals(packageMapProvider.packageMaps[subProjectB]));
201 } 202 }
202 203
203 void test_setRoots_addFolderWithoutPubspec() { 204 void test_setRoots_addFolderWithoutPubspec() {
204 packageMapProvider.packageMap = null; 205 packageMapProvider.packageMap = null;
205 manager.setRoots(<String>[projPath], <String>[]); 206 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
206 // verify 207 // verify
207 expect(manager.currentContextPaths, hasLength(1)); 208 expect(manager.currentContextPaths, hasLength(1));
208 expect(manager.currentContextPaths, contains(projPath)); 209 expect(manager.currentContextPaths, contains(projPath));
209 expect(manager.currentContextFilePaths[projPath], hasLength(0)); 210 expect(manager.currentContextFilePaths[projPath], hasLength(0));
210 } 211 }
211 212
212 void test_setRoots_exclude_newRoot_withExcludedFile() { 213 void test_setRoots_exclude_newRoot_withExcludedFile() {
213 // prepare paths 214 // prepare paths
214 String project = '/project'; 215 String project = '/project';
215 String file1 = '$project/file1.dart'; 216 String file1 = '$project/file1.dart';
216 String file2 = '$project/file2.dart'; 217 String file2 = '$project/file2.dart';
217 // create files 218 // create files
218 resourceProvider.newFile(file1, '// 1'); 219 resourceProvider.newFile(file1, '// 1');
219 resourceProvider.newFile(file2, '// 2'); 220 resourceProvider.newFile(file2, '// 2');
220 // set roots 221 // set roots
221 manager.setRoots(<String>[project], <String>[file1]); 222 manager.setRoots(<String>[project], <String>[file1], <String, String>{});
222 manager.assertContextPaths([project]); 223 manager.assertContextPaths([project]);
223 manager.assertContextFiles(project, [file2]); 224 manager.assertContextFiles(project, [file2]);
224 } 225 }
225 226
226 void test_setRoots_exclude_newRoot_withExcludedFolder() { 227 void test_setRoots_exclude_newRoot_withExcludedFolder() {
227 // prepare paths 228 // prepare paths
228 String project = '/project'; 229 String project = '/project';
229 String folderA = '$project/aaa'; 230 String folderA = '$project/aaa';
230 String folderB = '$project/bbb'; 231 String folderB = '$project/bbb';
231 String fileA = '$folderA/a.dart'; 232 String fileA = '$folderA/a.dart';
232 String fileB = '$folderB/b.dart'; 233 String fileB = '$folderB/b.dart';
233 // create files 234 // create files
234 resourceProvider.newFile(fileA, 'library a;'); 235 resourceProvider.newFile(fileA, 'library a;');
235 resourceProvider.newFile(fileB, 'library b;'); 236 resourceProvider.newFile(fileB, 'library b;');
236 // set roots 237 // set roots
237 manager.setRoots(<String>[project], <String>[folderB]); 238 manager.setRoots(<String>[project], <String>[folderB], <String, String>{});
238 manager.assertContextPaths([project]); 239 manager.assertContextPaths([project]);
239 manager.assertContextFiles(project, [fileA]); 240 manager.assertContextFiles(project, [fileA]);
240 } 241 }
241 242
242 void test_setRoots_exclude_sameRoot_addExcludedFile() { 243 void test_setRoots_exclude_sameRoot_addExcludedFile() {
243 // prepare paths 244 // prepare paths
244 String project = '/project'; 245 String project = '/project';
245 String file1 = '$project/file1.dart'; 246 String file1 = '$project/file1.dart';
246 String file2 = '$project/file2.dart'; 247 String file2 = '$project/file2.dart';
247 // create files 248 // create files
248 resourceProvider.newFile(file1, '// 1'); 249 resourceProvider.newFile(file1, '// 1');
249 resourceProvider.newFile(file2, '// 2'); 250 resourceProvider.newFile(file2, '// 2');
250 // set roots 251 // set roots
251 manager.setRoots(<String>[project], <String>[]); 252 manager.setRoots(<String>[project], <String>[], <String, String>{});
252 manager.assertContextPaths([project]); 253 manager.assertContextPaths([project]);
253 manager.assertContextFiles(project, [file1, file2]); 254 manager.assertContextFiles(project, [file1, file2]);
254 // exclude "2" 255 // exclude "2"
255 manager.setRoots(<String>[project], <String>[file2]); 256 manager.setRoots(<String>[project], <String>[file2], <String, String>{});
256 manager.assertContextPaths([project]); 257 manager.assertContextPaths([project]);
257 manager.assertContextFiles(project, [file1]); 258 manager.assertContextFiles(project, [file1]);
258 } 259 }
259 260
260 void test_setRoots_exclude_sameRoot_addExcludedFolder() { 261 void test_setRoots_exclude_sameRoot_addExcludedFolder() {
261 // prepare paths 262 // prepare paths
262 String project = '/project'; 263 String project = '/project';
263 String folderA = '$project/aaa'; 264 String folderA = '$project/aaa';
264 String folderB = '$project/bbb'; 265 String folderB = '$project/bbb';
265 String fileA = '$folderA/a.dart'; 266 String fileA = '$folderA/a.dart';
266 String fileB = '$folderB/b.dart'; 267 String fileB = '$folderB/b.dart';
267 // create files 268 // create files
268 resourceProvider.newFile(fileA, 'library a;'); 269 resourceProvider.newFile(fileA, 'library a;');
269 resourceProvider.newFile(fileB, 'library b;'); 270 resourceProvider.newFile(fileB, 'library b;');
270 // initially both "aaa/a" and "bbb/b" are included 271 // initially both "aaa/a" and "bbb/b" are included
271 manager.setRoots(<String>[project], <String>[]); 272 manager.setRoots(<String>[project], <String>[], <String, String>{});
272 manager.assertContextPaths([project]); 273 manager.assertContextPaths([project]);
273 manager.assertContextFiles(project, [fileA, fileB]); 274 manager.assertContextFiles(project, [fileA, fileB]);
274 // exclude "bbb/" 275 // exclude "bbb/"
275 manager.setRoots(<String>[project], <String>[folderB]); 276 manager.setRoots(<String>[project], <String>[folderB], <String, String>{});
276 manager.assertContextPaths([project]); 277 manager.assertContextPaths([project]);
277 manager.assertContextFiles(project, [fileA]); 278 manager.assertContextFiles(project, [fileA]);
278 } 279 }
279 280
280 void test_setRoots_exclude_sameRoot_removeExcludedFile() { 281 void test_setRoots_exclude_sameRoot_removeExcludedFile() {
281 // prepare paths 282 // prepare paths
282 String project = '/project'; 283 String project = '/project';
283 String file1 = '$project/file1.dart'; 284 String file1 = '$project/file1.dart';
284 String file2 = '$project/file2.dart'; 285 String file2 = '$project/file2.dart';
285 // create files 286 // create files
286 resourceProvider.newFile(file1, '// 1'); 287 resourceProvider.newFile(file1, '// 1');
287 resourceProvider.newFile(file2, '// 2'); 288 resourceProvider.newFile(file2, '// 2');
288 // set roots 289 // set roots
289 manager.setRoots(<String>[project], <String>[file2]); 290 manager.setRoots(<String>[project], <String>[file2], <String, String>{});
290 manager.assertContextPaths([project]); 291 manager.assertContextPaths([project]);
291 manager.assertContextFiles(project, [file1]); 292 manager.assertContextFiles(project, [file1]);
292 // stop excluding "2" 293 // stop excluding "2"
293 manager.setRoots(<String>[project], <String>[]); 294 manager.setRoots(<String>[project], <String>[], <String, String>{});
294 manager.assertContextPaths([project]); 295 manager.assertContextPaths([project]);
295 manager.assertContextFiles(project, [file1, file2]); 296 manager.assertContextFiles(project, [file1, file2]);
296 } 297 }
297 298
298 void test_setRoots_exclude_sameRoot_removeExcludedFolder() { 299 void test_setRoots_exclude_sameRoot_removeExcludedFolder() {
299 // prepare paths 300 // prepare paths
300 String project = '/project'; 301 String project = '/project';
301 String folderA = '$project/aaa'; 302 String folderA = '$project/aaa';
302 String folderB = '$project/bbb'; 303 String folderB = '$project/bbb';
303 String fileA = '$folderA/a.dart'; 304 String fileA = '$folderA/a.dart';
304 String fileB = '$folderB/b.dart'; 305 String fileB = '$folderB/b.dart';
305 // create files 306 // create files
306 resourceProvider.newFile(fileA, 'library a;'); 307 resourceProvider.newFile(fileA, 'library a;');
307 resourceProvider.newFile(fileB, 'library b;'); 308 resourceProvider.newFile(fileB, 'library b;');
308 // exclude "bbb/" 309 // exclude "bbb/"
309 manager.setRoots(<String>[project], <String>[folderB]); 310 manager.setRoots(<String>[project], <String>[folderB], <String, String>{});
310 manager.assertContextPaths([project]); 311 manager.assertContextPaths([project]);
311 manager.assertContextFiles(project, [fileA]); 312 manager.assertContextFiles(project, [fileA]);
312 // stop excluding "bbb/" 313 // stop excluding "bbb/"
313 manager.setRoots(<String>[project], <String>[]); 314 manager.setRoots(<String>[project], <String>[], <String, String>{});
314 manager.assertContextPaths([project]); 315 manager.assertContextPaths([project]);
315 manager.assertContextFiles(project, [fileA, fileB]); 316 manager.assertContextFiles(project, [fileA, fileB]);
316 } 317 }
317 318
318 void test_setRoots_ignoreSubContext_ofSubContext() { 319 void test_setRoots_ignoreSubContext_ofSubContext() {
319 // prepare paths 320 // prepare paths
320 String root = '/root'; 321 String root = '/root';
321 String rootFile = '$root/root.dart'; 322 String rootFile = '$root/root.dart';
322 String subProject = '$root/sub'; 323 String subProject = '$root/sub';
323 String subPubspec = '$subProject/pubspec.yaml'; 324 String subPubspec = '$subProject/pubspec.yaml';
324 String subFile = '$subProject/bin/sub.dart'; 325 String subFile = '$subProject/bin/sub.dart';
325 String subSubPubspec = '$subProject/subsub/pubspec.yaml'; 326 String subSubPubspec = '$subProject/subsub/pubspec.yaml';
326 // create files 327 // create files
327 resourceProvider.newFile(rootFile, 'library root;'); 328 resourceProvider.newFile(rootFile, 'library root;');
328 resourceProvider.newFile(subPubspec, 'pubspec'); 329 resourceProvider.newFile(subPubspec, 'pubspec');
329 resourceProvider.newFile(subFile, 'library sub;'); 330 resourceProvider.newFile(subFile, 'library sub;');
330 resourceProvider.newFile(subSubPubspec, 'pubspec'); 331 resourceProvider.newFile(subSubPubspec, 'pubspec');
331 // set roots 332 // set roots
332 manager.setRoots(<String>[root], <String>[]); 333 manager.setRoots(<String>[root], <String>[], <String, String>{});
333 manager.assertContextPaths([root, subProject]); 334 manager.assertContextPaths([root, subProject]);
334 manager.assertContextFiles(root, [rootFile]); 335 manager.assertContextFiles(root, [rootFile]);
335 manager.assertContextFiles(subProject, [subFile]); 336 manager.assertContextFiles(subProject, [subFile]);
336 } 337 }
337 338
338 void test_setRoots_newlyAddedFoldersGetProperPackageMap() { 339 void test_setRoots_newlyAddedFoldersGetProperPackageMap() {
339 String packagePath = '/package/foo'; 340 String packagePath = '/package/foo';
340 Folder packageFolder = resourceProvider.newFolder(packagePath); 341 Folder packageFolder = resourceProvider.newFolder(packagePath);
341 packageMapProvider.packageMap = { 342 packageMapProvider.packageMap = {
342 'foo': [packageFolder] 343 'foo': [packageFolder]
343 }; 344 };
344 manager.setRoots(<String>[projPath], <String>[]); 345 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
345 expect( 346 expect(
346 manager.currentContextPackageMaps[projPath], 347 manager.currentContextPackageMaps[projPath],
347 equals(packageMapProvider.packageMap)); 348 equals(packageMapProvider.packageMap));
348 } 349 }
349 350
350 void test_setRoots_removeFolderWithPubspec() { 351 void test_setRoots_removeFolderWithPubspec() {
351 // create a pubspec 352 // create a pubspec
352 String pubspecPath = posix.join(projPath, 'pubspec.yaml'); 353 String pubspecPath = posix.join(projPath, 'pubspec.yaml');
353 resourceProvider.newFile(pubspecPath, 'pubspec'); 354 resourceProvider.newFile(pubspecPath, 'pubspec');
354 // add one root - there is a context 355 // add one root - there is a context
355 manager.setRoots(<String>[projPath], <String>[]); 356 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
356 expect(manager.currentContextPaths, hasLength(1)); 357 expect(manager.currentContextPaths, hasLength(1));
357 // set empty roots - no contexts 358 // set empty roots - no contexts
358 manager.setRoots(<String>[], <String>[]); 359 manager.setRoots(<String>[], <String>[], <String, String>{});
359 expect(manager.currentContextPaths, hasLength(0)); 360 expect(manager.currentContextPaths, hasLength(0));
360 expect(manager.currentContextFilePaths, hasLength(0)); 361 expect(manager.currentContextFilePaths, hasLength(0));
361 } 362 }
362 363
363 void test_setRoots_removeFolderWithPubspecFolder() { 364 void test_setRoots_removeFolderWithPubspecFolder() {
364 // prepare paths 365 // prepare paths
365 String projectA = '/projectA'; 366 String projectA = '/projectA';
366 String projectB = '/projectB'; 367 String projectB = '/projectB';
367 String subProjectA = '$projectA/sub'; 368 String subProjectA = '$projectA/sub';
368 String subProjectB = '$projectB/sub'; 369 String subProjectB = '$projectB/sub';
369 String projectA_file = '$projectA/a.dart'; 370 String projectA_file = '$projectA/a.dart';
370 String projectB_file = '$projectB/a.dart'; 371 String projectB_file = '$projectB/a.dart';
371 String subProjectA_pubspec = '$subProjectA/pubspec.yaml'; 372 String subProjectA_pubspec = '$subProjectA/pubspec.yaml';
372 String subProjectB_pubspec = '$subProjectB/pubspec.yaml'; 373 String subProjectB_pubspec = '$subProjectB/pubspec.yaml';
373 String subProjectA_file = '$subProjectA/bin/sub_a.dart'; 374 String subProjectA_file = '$subProjectA/bin/sub_a.dart';
374 String subProjectB_file = '$subProjectB/bin/sub_b.dart'; 375 String subProjectB_file = '$subProjectB/bin/sub_b.dart';
375 // create files 376 // create files
376 resourceProvider.newFile(projectA_file, '// a'); 377 resourceProvider.newFile(projectA_file, '// a');
377 resourceProvider.newFile(projectB_file, '// b'); 378 resourceProvider.newFile(projectB_file, '// b');
378 resourceProvider.newFile(subProjectA_pubspec, 'pubspec'); 379 resourceProvider.newFile(subProjectA_pubspec, 'pubspec');
379 resourceProvider.newFile(subProjectB_pubspec, 'pubspec'); 380 resourceProvider.newFile(subProjectB_pubspec, 'pubspec');
380 resourceProvider.newFile(subProjectA_file, '// sub-a'); 381 resourceProvider.newFile(subProjectA_file, '// sub-a');
381 resourceProvider.newFile(subProjectB_file, '// sub-b'); 382 resourceProvider.newFile(subProjectB_file, '// sub-b');
382 // set roots 383 // set roots
383 manager.setRoots(<String>[projectA, projectB], <String>[]); 384 manager.setRoots(<String>[projectA, projectB], <String>[],
385 <String, String>{});
384 manager.assertContextPaths([projectA, subProjectA, projectB, subProjectB]); 386 manager.assertContextPaths([projectA, subProjectA, projectB, subProjectB]);
385 manager.assertContextFiles(projectA, [projectA_file]); 387 manager.assertContextFiles(projectA, [projectA_file]);
386 manager.assertContextFiles(projectB, [projectB_file]); 388 manager.assertContextFiles(projectB, [projectB_file]);
387 manager.assertContextFiles(subProjectA, [subProjectA_file]); 389 manager.assertContextFiles(subProjectA, [subProjectA_file]);
388 manager.assertContextFiles(subProjectB, [subProjectB_file]); 390 manager.assertContextFiles(subProjectB, [subProjectB_file]);
389 // remove "projectB" 391 // remove "projectB"
390 manager.setRoots(<String>[projectA], <String>[]); 392 manager.setRoots(<String>[projectA], <String>[], <String, String>{});
391 manager.assertContextPaths([projectA, subProjectA]); 393 manager.assertContextPaths([projectA, subProjectA]);
392 manager.assertContextFiles(projectA, [projectA_file]); 394 manager.assertContextFiles(projectA, [projectA_file]);
393 manager.assertContextFiles(subProjectA, [subProjectA_file]); 395 manager.assertContextFiles(subProjectA, [subProjectA_file]);
394 } 396 }
395 397
396 void test_setRoots_removeFolderWithoutPubspec() { 398 void test_setRoots_removeFolderWithoutPubspec() {
397 packageMapProvider.packageMap = null; 399 packageMapProvider.packageMap = null;
398 // add one root - there is a context 400 // add one root - there is a context
399 manager.setRoots(<String>[projPath], <String>[]); 401 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
400 expect(manager.currentContextPaths, hasLength(1)); 402 expect(manager.currentContextPaths, hasLength(1));
401 // set empty roots - no contexts 403 // set empty roots - no contexts
402 manager.setRoots(<String>[], <String>[]); 404 manager.setRoots(<String>[], <String>[], <String, String>{});
403 expect(manager.currentContextPaths, hasLength(0)); 405 expect(manager.currentContextPaths, hasLength(0));
404 expect(manager.currentContextFilePaths, hasLength(0)); 406 expect(manager.currentContextFilePaths, hasLength(0));
405 } 407 }
406 408
407 test_watch_addDummyLink() { 409 test_watch_addDummyLink() {
408 manager.setRoots(<String>[projPath], <String>[]); 410 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
409 // empty folder initially 411 // empty folder initially
410 Map<String, int> filePaths = manager.currentContextFilePaths[projPath]; 412 Map<String, int> filePaths = manager.currentContextFilePaths[projPath];
411 expect(filePaths, isEmpty); 413 expect(filePaths, isEmpty);
412 // add link 414 // add link
413 String filePath = posix.join(projPath, 'foo.dart'); 415 String filePath = posix.join(projPath, 'foo.dart');
414 resourceProvider.newDummyLink(filePath); 416 resourceProvider.newDummyLink(filePath);
415 // the link was ignored 417 // the link was ignored
416 return pumpEventQueue().then((_) { 418 return pumpEventQueue().then((_) {
417 expect(filePaths, isEmpty); 419 expect(filePaths, isEmpty);
418 }); 420 });
419 } 421 }
420 422
421 test_watch_addFile() { 423 test_watch_addFile() {
422 manager.setRoots(<String>[projPath], <String>[]); 424 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
423 // empty folder initially 425 // empty folder initially
424 Map<String, int> filePaths = manager.currentContextFilePaths[projPath]; 426 Map<String, int> filePaths = manager.currentContextFilePaths[projPath];
425 expect(filePaths, hasLength(0)); 427 expect(filePaths, hasLength(0));
426 // add file 428 // add file
427 String filePath = posix.join(projPath, 'foo.dart'); 429 String filePath = posix.join(projPath, 'foo.dart');
428 resourceProvider.newFile(filePath, 'contents'); 430 resourceProvider.newFile(filePath, 'contents');
429 // the file was added 431 // the file was added
430 return pumpEventQueue().then((_) { 432 return pumpEventQueue().then((_) {
431 expect(filePaths, hasLength(1)); 433 expect(filePaths, hasLength(1));
432 expect(filePaths, contains(filePath)); 434 expect(filePaths, contains(filePath));
433 }); 435 });
434 } 436 }
435 437
436 test_watch_addFileInSubfolder() { 438 test_watch_addFileInSubfolder() {
437 manager.setRoots(<String>[projPath], <String>[]); 439 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
438 // empty folder initially 440 // empty folder initially
439 Map<String, int> filePaths = manager.currentContextFilePaths[projPath]; 441 Map<String, int> filePaths = manager.currentContextFilePaths[projPath];
440 expect(filePaths, hasLength(0)); 442 expect(filePaths, hasLength(0));
441 // add file in subfolder 443 // add file in subfolder
442 String filePath = posix.join(projPath, 'foo', 'bar.dart'); 444 String filePath = posix.join(projPath, 'foo', 'bar.dart');
443 resourceProvider.newFile(filePath, 'contents'); 445 resourceProvider.newFile(filePath, 'contents');
444 // the file was added 446 // the file was added
445 return pumpEventQueue().then((_) { 447 return pumpEventQueue().then((_) {
446 expect(filePaths, hasLength(1)); 448 expect(filePaths, hasLength(1));
447 expect(filePaths, contains(filePath)); 449 expect(filePaths, contains(filePath));
448 }); 450 });
449 } 451 }
450 452
451 test_watch_addFile_excluded() { 453 test_watch_addFile_excluded() {
452 // prepare paths 454 // prepare paths
453 String project = '/project'; 455 String project = '/project';
454 String folderA = '$project/aaa'; 456 String folderA = '$project/aaa';
455 String folderB = '$project/bbb'; 457 String folderB = '$project/bbb';
456 String fileA = '$folderA/a.dart'; 458 String fileA = '$folderA/a.dart';
457 String fileB = '$folderB/b.dart'; 459 String fileB = '$folderB/b.dart';
458 // create files 460 // create files
459 resourceProvider.newFile(fileA, 'library a;'); 461 resourceProvider.newFile(fileA, 'library a;');
460 // set roots 462 // set roots
461 manager.setRoots(<String>[project], <String>[folderB]); 463 manager.setRoots(<String>[project], <String>[folderB], <String, String>{});
462 manager.assertContextPaths([project]); 464 manager.assertContextPaths([project]);
463 manager.assertContextFiles(project, [fileA]); 465 manager.assertContextFiles(project, [fileA]);
464 // add a file, ignored as excluded 466 // add a file, ignored as excluded
465 resourceProvider.newFile(fileB, 'library b;'); 467 resourceProvider.newFile(fileB, 'library b;');
466 return pumpEventQueue().then((_) { 468 return pumpEventQueue().then((_) {
467 manager.assertContextPaths([project]); 469 manager.assertContextPaths([project]);
468 manager.assertContextFiles(project, [fileA]); 470 manager.assertContextFiles(project, [fileA]);
469 }); 471 });
470 } 472 }
471 473
472 test_watch_addPubspec_toRoot() { 474 test_watch_addPubspec_toRoot() {
473 // prepare paths 475 // prepare paths
474 String root = '/root'; 476 String root = '/root';
475 String rootFile = '$root/root.dart'; 477 String rootFile = '$root/root.dart';
476 String rootPubspec = '$root/pubspec.yaml'; 478 String rootPubspec = '$root/pubspec.yaml';
477 // create files 479 // create files
478 resourceProvider.newFile(rootFile, 'library root;'); 480 resourceProvider.newFile(rootFile, 'library root;');
479 // set roots 481 // set roots
480 manager.setRoots(<String>[root], <String>[]); 482 manager.setRoots(<String>[root], <String>[], <String, String>{});
481 manager.assertContextPaths([root]); 483 manager.assertContextPaths([root]);
482 // verify files 484 // verify files
483 manager.assertContextFiles(root, [rootFile]); 485 manager.assertContextFiles(root, [rootFile]);
484 // add pubspec - still just one root 486 // add pubspec - still just one root
485 resourceProvider.newFile(rootPubspec, 'pubspec'); 487 resourceProvider.newFile(rootPubspec, 'pubspec');
486 return pumpEventQueue().then((_) { 488 return pumpEventQueue().then((_) {
487 manager.assertContextPaths([root]); 489 manager.assertContextPaths([root]);
488 manager.assertContextFiles(root, [rootFile]); 490 manager.assertContextFiles(root, [rootFile]);
489 }); 491 });
490 } 492 }
491 493
492 test_watch_addPubspec_toSubFolder() { 494 test_watch_addPubspec_toSubFolder() {
493 // prepare paths 495 // prepare paths
494 String root = '/root'; 496 String root = '/root';
495 String rootFile = '$root/root.dart'; 497 String rootFile = '$root/root.dart';
496 String subProject = '$root/sub/aaa'; 498 String subProject = '$root/sub/aaa';
497 String subPubspec = '$subProject/pubspec.yaml'; 499 String subPubspec = '$subProject/pubspec.yaml';
498 String subFile = '$subProject/bin/a.dart'; 500 String subFile = '$subProject/bin/a.dart';
499 // create files 501 // create files
500 resourceProvider.newFile(rootFile, 'library root;'); 502 resourceProvider.newFile(rootFile, 'library root;');
501 resourceProvider.newFile(subFile, 'library a;'); 503 resourceProvider.newFile(subFile, 'library a;');
502 // set roots 504 // set roots
503 manager.setRoots(<String>[root], <String>[]); 505 manager.setRoots(<String>[root], <String>[], <String, String>{});
504 manager.assertContextPaths([root]); 506 manager.assertContextPaths([root]);
505 // verify files 507 // verify files
506 manager.assertContextFiles(root, [rootFile, subFile]); 508 manager.assertContextFiles(root, [rootFile, subFile]);
507 // add pubspec 509 // add pubspec
508 resourceProvider.newFile(subPubspec, 'pubspec'); 510 resourceProvider.newFile(subPubspec, 'pubspec');
509 return pumpEventQueue().then((_) { 511 return pumpEventQueue().then((_) {
510 manager.assertContextPaths([root, subProject]); 512 manager.assertContextPaths([root, subProject]);
511 manager.assertContextFiles(root, [rootFile]); 513 manager.assertContextFiles(root, [rootFile]);
512 manager.assertContextFiles(subProject, [subFile]); 514 manager.assertContextFiles(subProject, [subFile]);
513 }); 515 });
514 } 516 }
515 517
516 test_watch_addPubspec_toSubFolder_ofSubFolder() { 518 test_watch_addPubspec_toSubFolder_ofSubFolder() {
517 // prepare paths 519 // prepare paths
518 String root = '/root'; 520 String root = '/root';
519 String rootFile = '$root/root.dart'; 521 String rootFile = '$root/root.dart';
520 String subProject = '$root/sub'; 522 String subProject = '$root/sub';
521 String subPubspec = '$subProject/pubspec.yaml'; 523 String subPubspec = '$subProject/pubspec.yaml';
522 String subFile = '$subProject/bin/sub.dart'; 524 String subFile = '$subProject/bin/sub.dart';
523 String subSubPubspec = '$subProject/subsub/pubspec.yaml'; 525 String subSubPubspec = '$subProject/subsub/pubspec.yaml';
524 // create files 526 // create files
525 resourceProvider.newFile(rootFile, 'library root;'); 527 resourceProvider.newFile(rootFile, 'library root;');
526 resourceProvider.newFile(subPubspec, 'pubspec'); 528 resourceProvider.newFile(subPubspec, 'pubspec');
527 resourceProvider.newFile(subFile, 'library sub;'); 529 resourceProvider.newFile(subFile, 'library sub;');
528 // set roots 530 // set roots
529 manager.setRoots(<String>[root], <String>[]); 531 manager.setRoots(<String>[root], <String>[], <String, String>{});
530 manager.assertContextPaths([root, subProject]); 532 manager.assertContextPaths([root, subProject]);
531 manager.assertContextFiles(root, [rootFile]); 533 manager.assertContextFiles(root, [rootFile]);
532 manager.assertContextFiles(subProject, [subFile]); 534 manager.assertContextFiles(subProject, [subFile]);
533 // add pubspec - ignore, because is already in a pubspec-based context 535 // add pubspec - ignore, because is already in a pubspec-based context
534 resourceProvider.newFile(subSubPubspec, 'pubspec'); 536 resourceProvider.newFile(subSubPubspec, 'pubspec');
535 return pumpEventQueue().then((_) { 537 return pumpEventQueue().then((_) {
536 manager.assertContextPaths([root, subProject]); 538 manager.assertContextPaths([root, subProject]);
537 manager.assertContextFiles(root, [rootFile]); 539 manager.assertContextFiles(root, [rootFile]);
538 manager.assertContextFiles(subProject, [subFile]); 540 manager.assertContextFiles(subProject, [subFile]);
539 }); 541 });
540 } 542 }
541 543
542 test_watch_deleteFile() { 544 test_watch_deleteFile() {
543 String filePath = posix.join(projPath, 'foo.dart'); 545 String filePath = posix.join(projPath, 'foo.dart');
544 // add root with a file 546 // add root with a file
545 resourceProvider.newFile(filePath, 'contents'); 547 resourceProvider.newFile(filePath, 'contents');
546 manager.setRoots(<String>[projPath], <String>[]); 548 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
547 // the file was added 549 // the file was added
548 Map<String, int> filePaths = manager.currentContextFilePaths[projPath]; 550 Map<String, int> filePaths = manager.currentContextFilePaths[projPath];
549 expect(filePaths, hasLength(1)); 551 expect(filePaths, hasLength(1));
550 expect(filePaths, contains(filePath)); 552 expect(filePaths, contains(filePath));
551 // delete the file 553 // delete the file
552 resourceProvider.deleteFile(filePath); 554 resourceProvider.deleteFile(filePath);
553 return pumpEventQueue().then((_) { 555 return pumpEventQueue().then((_) {
554 return expect(filePaths, hasLength(0)); 556 return expect(filePaths, hasLength(0));
555 }); 557 });
556 } 558 }
557 559
558 test_watch_deletePubspec_fromRoot() { 560 test_watch_deletePubspec_fromRoot() {
559 // prepare paths 561 // prepare paths
560 String root = '/root'; 562 String root = '/root';
561 String rootPubspec = '$root/pubspec.yaml'; 563 String rootPubspec = '$root/pubspec.yaml';
562 String rootFile = '$root/root.dart'; 564 String rootFile = '$root/root.dart';
563 // create files 565 // create files
564 resourceProvider.newFile(rootPubspec, 'pubspec'); 566 resourceProvider.newFile(rootPubspec, 'pubspec');
565 resourceProvider.newFile(rootFile, 'library root;'); 567 resourceProvider.newFile(rootFile, 'library root;');
566 // set roots 568 // set roots
567 manager.setRoots(<String>[root], <String>[]); 569 manager.setRoots(<String>[root], <String>[], <String, String>{});
568 manager.assertContextPaths([root]); 570 manager.assertContextPaths([root]);
569 manager.assertContextFiles(root, [rootFile]); 571 manager.assertContextFiles(root, [rootFile]);
570 // delete the pubspec 572 // delete the pubspec
571 resourceProvider.deleteFile(rootPubspec); 573 resourceProvider.deleteFile(rootPubspec);
572 return pumpEventQueue().then((_) { 574 return pumpEventQueue().then((_) {
573 manager.assertContextPaths([root]); 575 manager.assertContextPaths([root]);
574 manager.assertContextFiles(root, [rootFile]); 576 manager.assertContextFiles(root, [rootFile]);
575 }); 577 });
576 } 578 }
577 579
578 test_watch_deletePubspec_fromSubFolder() { 580 test_watch_deletePubspec_fromSubFolder() {
579 // prepare paths 581 // prepare paths
580 String root = '/root'; 582 String root = '/root';
581 String rootFile = '$root/root.dart'; 583 String rootFile = '$root/root.dart';
582 String subProject = '$root/sub/aaa'; 584 String subProject = '$root/sub/aaa';
583 String subPubspec = '$subProject/pubspec.yaml'; 585 String subPubspec = '$subProject/pubspec.yaml';
584 String subFile = '$subProject/bin/a.dart'; 586 String subFile = '$subProject/bin/a.dart';
585 // create files 587 // create files
586 resourceProvider.newFile(subPubspec, 'pubspec'); 588 resourceProvider.newFile(subPubspec, 'pubspec');
587 resourceProvider.newFile(rootFile, 'library root;'); 589 resourceProvider.newFile(rootFile, 'library root;');
588 resourceProvider.newFile(subFile, 'library a;'); 590 resourceProvider.newFile(subFile, 'library a;');
589 // set roots 591 // set roots
590 manager.setRoots(<String>[root], <String>[]); 592 manager.setRoots(<String>[root], <String>[], <String, String>{});
591 manager.assertContextPaths([root, subProject]); 593 manager.assertContextPaths([root, subProject]);
592 // verify files 594 // verify files
593 manager.assertContextFiles(root, [rootFile]); 595 manager.assertContextFiles(root, [rootFile]);
594 manager.assertContextFiles(subProject, [subFile]); 596 manager.assertContextFiles(subProject, [subFile]);
595 // delete the pubspec 597 // delete the pubspec
596 resourceProvider.deleteFile(subPubspec); 598 resourceProvider.deleteFile(subPubspec);
597 return pumpEventQueue().then((_) { 599 return pumpEventQueue().then((_) {
598 manager.assertContextPaths([root]); 600 manager.assertContextPaths([root]);
599 manager.assertContextFiles(root, [rootFile, subFile]); 601 manager.assertContextFiles(root, [rootFile, subFile]);
600 }); 602 });
601 } 603 }
602 604
603 test_watch_modifyFile() { 605 test_watch_modifyFile() {
604 String filePath = posix.join(projPath, 'foo.dart'); 606 String filePath = posix.join(projPath, 'foo.dart');
605 // add root with a file 607 // add root with a file
606 resourceProvider.newFile(filePath, 'contents'); 608 resourceProvider.newFile(filePath, 'contents');
607 manager.setRoots(<String>[projPath], <String>[]); 609 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
608 // the file was added 610 // the file was added
609 Map<String, int> filePaths = manager.currentContextFilePaths[projPath]; 611 Map<String, int> filePaths = manager.currentContextFilePaths[projPath];
610 expect(filePaths, hasLength(1)); 612 expect(filePaths, hasLength(1));
611 expect(filePaths, contains(filePath)); 613 expect(filePaths, contains(filePath));
612 expect(filePaths[filePath], equals(manager.now)); 614 expect(filePaths[filePath], equals(manager.now));
613 // update the file 615 // update the file
614 manager.now++; 616 manager.now++;
615 resourceProvider.modifyFile(filePath, 'new contents'); 617 resourceProvider.modifyFile(filePath, 'new contents');
616 return pumpEventQueue().then((_) { 618 return pumpEventQueue().then((_) {
617 return expect(filePaths[filePath], equals(manager.now)); 619 return expect(filePaths[filePath], equals(manager.now));
618 }); 620 });
619 } 621 }
620 622
621 test_watch_modifyPackageMapDependency() { 623 test_watch_modifyPackageMapDependency() {
622 // create a dependency file 624 // create a dependency file
623 String dependencyPath = posix.join(projPath, 'dep'); 625 String dependencyPath = posix.join(projPath, 'dep');
624 resourceProvider.newFile(dependencyPath, 'contents'); 626 resourceProvider.newFile(dependencyPath, 'contents');
625 packageMapProvider.dependencies.add(dependencyPath); 627 packageMapProvider.dependencies.add(dependencyPath);
626 // create a Dart file 628 // create a Dart file
627 String dartFilePath = posix.join(projPath, 'main.dart'); 629 String dartFilePath = posix.join(projPath, 'main.dart');
628 resourceProvider.newFile(dartFilePath, 'contents'); 630 resourceProvider.newFile(dartFilePath, 'contents');
629 // the created context has the expected empty package map 631 // the created context has the expected empty package map
630 manager.setRoots(<String>[projPath], <String>[]); 632 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
631 expect(manager.currentContextPackageMaps[projPath], isEmpty); 633 expect(manager.currentContextPackageMaps[projPath], isEmpty);
632 // configure package map 634 // configure package map
633 String packagePath = '/package/foo'; 635 String packagePath = '/package/foo';
634 resourceProvider.newFolder(packagePath); 636 resourceProvider.newFolder(packagePath);
635 packageMapProvider.packageMap = { 637 packageMapProvider.packageMap = {
636 'foo': projPath 638 'foo': projPath
637 }; 639 };
638 // Changing a .dart file in the project shouldn't cause a new 640 // Changing a .dart file in the project shouldn't cause a new
639 // package map to be picked up. 641 // package map to be picked up.
640 resourceProvider.modifyFile(dartFilePath, 'new contents'); 642 resourceProvider.modifyFile(dartFilePath, 'new contents');
(...skipping 11 matching lines...) Expand all
652 654
653 test_watch_modifyPackageMapDependency_fail() { 655 test_watch_modifyPackageMapDependency_fail() {
654 // create a dependency file 656 // create a dependency file
655 String dependencyPath = posix.join(projPath, 'dep'); 657 String dependencyPath = posix.join(projPath, 'dep');
656 resourceProvider.newFile(dependencyPath, 'contents'); 658 resourceProvider.newFile(dependencyPath, 'contents');
657 packageMapProvider.dependencies.add(dependencyPath); 659 packageMapProvider.dependencies.add(dependencyPath);
658 // create a Dart file 660 // create a Dart file
659 String dartFilePath = posix.join(projPath, 'main.dart'); 661 String dartFilePath = posix.join(projPath, 'main.dart');
660 resourceProvider.newFile(dartFilePath, 'contents'); 662 resourceProvider.newFile(dartFilePath, 'contents');
661 // the created context has the expected empty package map 663 // the created context has the expected empty package map
662 manager.setRoots(<String>[projPath], <String>[]); 664 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
663 expect(manager.currentContextPackageMaps[projPath], isEmpty); 665 expect(manager.currentContextPackageMaps[projPath], isEmpty);
664 // Change the package map dependency so that the packageMapProvider is 666 // Change the package map dependency so that the packageMapProvider is
665 // re-run, and arrange for it to return null from computePackageMap(). 667 // re-run, and arrange for it to return null from computePackageMap().
666 packageMapProvider.packageMap = null; 668 packageMapProvider.packageMap = null;
667 resourceProvider.modifyFile(dependencyPath, 'new contents'); 669 resourceProvider.modifyFile(dependencyPath, 'new contents');
668 return pumpEventQueue().then((_) { 670 return pumpEventQueue().then((_) {
669 // The package map should have been changed to null. 671 // The package map should have been changed to null.
670 expect(manager.currentContextPackageMaps[projPath], isNull); 672 expect(manager.currentContextPackageMaps[projPath], isNull);
671 }); 673 });
672 } 674 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 currentContextFilePaths.remove(path); 750 currentContextFilePaths.remove(path);
749 currentContextPackageMaps.remove(path); 751 currentContextPackageMaps.remove(path);
750 } 752 }
751 753
752 @override 754 @override
753 void updateContextPackageMap(Folder contextFolder, Map<String, 755 void updateContextPackageMap(Folder contextFolder, Map<String,
754 List<Folder>> packageMap) { 756 List<Folder>> packageMap) {
755 currentContextPackageMaps[contextFolder.path] = packageMap; 757 currentContextPackageMaps[contextFolder.path] = packageMap;
756 } 758 }
757 } 759 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698