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

Unified Diff: pkg/analysis_server/test/context_manager_test.dart

Issue 450103002: Support for pubspec based contexts in subfolders. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: tweak for tests Created 6 years, 4 months 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 side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/test/context_manager_test.dart
diff --git a/pkg/analysis_server/test/context_manager_test.dart b/pkg/analysis_server/test/context_manager_test.dart
index c379dd7204d1895b5ceecd9f3679729d83780b85..194128f4590b5c8f79d7fc02be01de4f97c3f0ce 100644
--- a/pkg/analysis_server/test/context_manager_test.dart
+++ b/pkg/analysis_server/test/context_manager_test.dart
@@ -105,6 +105,48 @@ class ContextManagerTest {
expect(manager.currentContextFilePaths[projPath], hasLength(0));
}
+ void test_setRoots_addFolderWithPubspecFolders() {
+ // prepare paths
+ String root = '/root';
+ String rootFile = '$root/root.dart';
+ String subProjectA = '$root/sub/aaa';
+ String subProjectB = '$root/sub/sub2/bbb';
+ String subProjectA_file = '$subProjectA/bin/a.dart';
+ String subProjectB_file = '$subProjectB/bin/b.dart';
+ // create files
+ resourceProvider.newFile('$subProjectA/pubspec.yaml', 'pubspec');
+ resourceProvider.newFile('$subProjectB/pubspec.yaml', 'pubspec');
+ resourceProvider.newFile(rootFile, 'library root;');
+ resourceProvider.newFile(subProjectA_file, 'library a;');
+ resourceProvider.newFile(subProjectB_file, 'library b;');
+ // configure package maps
+ packageMapProvider.packageMaps = {
+ subProjectA: {
+ 'foo': [resourceProvider.newFolder('/package/foo')]
+ },
+ subProjectA: {
+ 'bar': [resourceProvider.newFolder('/package/bar')]
+ },
+ };
+ // set roots
+ manager.setRoots(<String>[root], <String>[]);
+ manager.assertContextPaths([root, subProjectA, subProjectB]);
+ // verify files
+ manager.assertContextFiles(root, [rootFile]);
+ manager.assertContextFiles(subProjectA, [subProjectA_file]);
+ manager.assertContextFiles(subProjectB, [subProjectB_file]);
+ // verify package maps
+ expect(
+ manager.currentContextPackageMaps[root],
+ equals(packageMapProvider.packageMaps[root]));
+ expect(
+ manager.currentContextPackageMaps[subProjectA],
+ equals(packageMapProvider.packageMaps[subProjectA]));
+ expect(
+ manager.currentContextPackageMaps[subProjectB],
+ equals(packageMapProvider.packageMaps[subProjectB]));
+ }
+
void test_setRoots_addFolderWithoutPubspec() {
packageMapProvider.packageMap = null;
manager.setRoots(<String>[projPath], <String>[]);
@@ -139,6 +181,39 @@ class ContextManagerTest {
expect(manager.currentContextFilePaths, hasLength(0));
}
+ void test_setRoots_removeFolderWithPubspecFolder() {
+ // prepare paths
+ String projectA = '/projectA';
+ String projectB = '/projectB';
+ String subProjectA = '$projectA/sub';
+ String subProjectB = '$projectB/sub';
+ String projectA_file = '$projectA/a.dart';
+ String projectB_file = '$projectB/a.dart';
+ String subProjectA_pubspec = '$subProjectA/pubspec.yaml';
+ String subProjectB_pubspec = '$subProjectB/pubspec.yaml';
+ String subProjectA_file = '$subProjectA/bin/sub_a.dart';
+ String subProjectB_file = '$subProjectB/bin/sub_b.dart';
+ // create files
+ resourceProvider.newFile(projectA_file, '// a');
+ resourceProvider.newFile(projectB_file, '// b');
+ resourceProvider.newFile(subProjectA_pubspec, 'pubspec');
+ resourceProvider.newFile(subProjectB_pubspec, 'pubspec');
+ resourceProvider.newFile(subProjectA_file, '// sub-a');
+ resourceProvider.newFile(subProjectB_file, '// sub-b');
+ // set roots
+ manager.setRoots(<String>[projectA, projectB], <String>[]);
+ manager.assertContextPaths([projectA, subProjectA, projectB, subProjectB]);
+ manager.assertContextFiles(projectA, [projectA_file]);
+ manager.assertContextFiles(projectB, [projectB_file]);
+ manager.assertContextFiles(subProjectA, [subProjectA_file]);
+ manager.assertContextFiles(subProjectB, [subProjectB_file]);
+ // remove "projectB"
+ manager.setRoots(<String>[projectA], <String>[]);
+ manager.assertContextPaths([projectA, subProjectA]);
+ manager.assertContextFiles(projectA, [projectA_file]);
+ manager.assertContextFiles(subProjectA, [subProjectA_file]);
+ }
+
void test_setRoots_removeFolderWithoutPubspec() {
packageMapProvider.packageMap = null;
// add one root - there is a context
@@ -194,6 +269,30 @@ class ContextManagerTest {
});
}
+ test_watch_addPubspec() {
+ // prepare paths
+ String root = '/root';
+ String rootFile = '$root/root.dart';
+ String subProject = '$root/sub/aaa';
+ String subPubspec = '$subProject/pubspec.yaml';
+ String subFile = '$subProject/bin/a.dart';
+ // create files
+ resourceProvider.newFile(rootFile, 'library root;');
+ resourceProvider.newFile(subFile, 'library a;');
+ // set roots
+ manager.setRoots(<String>[root], <String>[]);
+ manager.assertContextPaths([root]);
+ // verify files
+ manager.assertContextFiles(root, [rootFile, subFile]);
+ // add pubspec
+ resourceProvider.newFile(subPubspec, 'pubspec');
+ return pumpEventQueue().then((_) {
+ manager.assertContextPaths([root, subProject]);
+ manager.assertContextFiles(root, [rootFile]);
+ manager.assertContextFiles(subProject, [subFile]);
+ });
+ }
+
test_watch_deleteFile() {
String filePath = posix.join(projPath, 'foo.dart');
// add root with a file
@@ -210,6 +309,31 @@ class ContextManagerTest {
});
}
+ test_watch_deletePubspec() {
+ // prepare paths
+ String root = '/root';
+ String rootFile = '$root/root.dart';
+ String subProject = '$root/sub/aaa';
+ String subPubspec = '$subProject/pubspec.yaml';
+ String subFile = '$subProject/bin/a.dart';
+ // create files
+ resourceProvider.newFile(subPubspec, 'pubspec');
+ resourceProvider.newFile(rootFile, 'library root;');
+ resourceProvider.newFile(subFile, 'library a;');
+ // set roots
+ manager.setRoots(<String>[root], <String>[]);
+ manager.assertContextPaths([root, subProject]);
+ // verify files
+ manager.assertContextFiles(root, [rootFile]);
+ manager.assertContextFiles(subProject, [subFile]);
+ // delete the pubspec
+ resourceProvider.deleteFile(subPubspec);
+ return pumpEventQueue().then((_) {
+ manager.assertContextPaths([root]);
+ manager.assertContextFiles(root, [rootFile, subFile]);
+ });
+ }
+
test_watch_modifyFile() {
String filePath = posix.join(projPath, 'foo.dart');
// add root with a file
@@ -332,6 +456,15 @@ class TestContextManager extends ContextManager {
}
}
+ void assertContextFiles(String contextPath, List<String> expectedFiles) {
+ var actualFiles = currentContextFilePaths[contextPath].keys;
+ expect(actualFiles, unorderedEquals(expectedFiles));
+ }
+
+ void assertContextPaths(List<String> expected) {
+ expect(currentContextPaths, unorderedEquals(expected));
+ }
+
@override
void removeContext(Folder folder) {
String path = folder.path;

Powered by Google App Engine
This is Rietveld 408576698