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

Unified Diff: pkg/analysis_server/test/src/plugin/plugin_manager_test.dart

Issue 2988673002: Add support for creating a .packages file when the plugin is in a Bazel workspace (Closed)
Patch Set: address comments Created 3 years, 5 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/src/plugin/plugin_manager_test.dart
diff --git a/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart b/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart
index fbd394257a60b2c6b7debb1edf84a9f092b3b6ae..45867729fdd56c25b065b2a81bd91a65aa3f23ea 100644
--- a/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart
+++ b/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart
@@ -394,6 +394,80 @@ class PluginManagerTest {
expect(manager.notificationManager, notificationManager);
}
+ void test_pathsFor_withPackagesFile() {
+ path.Context context = resourceProvider.pathContext;
+ //
+ // Build the minimal directory structure for a plugin package that includes
+ // a .packages file.
+ //
+ String pluginDirPath = resourceProvider.convertPath('/plugin');
+ String pluginFilePath = context.join(pluginDirPath, 'bin', 'plugin.dart');
+ resourceProvider.newFile(pluginFilePath, '');
+ String packagesFilePath = context.join(pluginDirPath, '.packages');
+ resourceProvider.newFile(packagesFilePath, '');
+ //
+ // Test path computation.
+ //
+ List<String> paths = manager.pathsFor(pluginDirPath);
+ expect(paths, hasLength(2));
+ expect(paths[0], pluginFilePath);
+ expect(paths[1], packagesFilePath);
+ }
+
+ void test_pathsFor_withPubspec_inBazelWorkspace() {
+ path.Context context = resourceProvider.pathContext;
+ //
+ // Build a Bazel workspace containing four packages, including the plugin.
+ //
+ String rootPath = resourceProvider.convertPath('/workspaceRoot');
+ resourceProvider.newFile(context.join(rootPath, 'WORKSPACE'), '');
+ resourceProvider.newFolder(context.join(rootPath, 'bazel-bin'));
+ resourceProvider.newFolder(context.join(rootPath, 'bazel-genfiles'));
+
+ String newPackage(String packageName, [List<String> dependencies]) {
+ String packageRoot =
+ context.join(rootPath, 'third_party', 'dart', packageName);
+ resourceProvider.newFile(
+ context.join(packageRoot, 'lib', packageName + '.dart'), '');
+ StringBuffer buffer = new StringBuffer();
+ if (dependencies != null) {
+ buffer.writeln('dependencies:');
+ for (String dependency in dependencies) {
+ buffer.writeln(' $dependency: any');
+ }
+ }
+ resourceProvider.newFile(
+ context.join(packageRoot, 'pubspec.yaml'), buffer.toString());
+ return packageRoot;
+ }
+
+ String pluginDirPath = newPackage('plugin', ['b', 'c']);
+ newPackage('b', ['d']);
+ newPackage('c', ['d']);
+ newPackage('d');
+ String pluginFilePath = context.join(pluginDirPath, 'bin', 'plugin.dart');
+ resourceProvider.newFile(pluginFilePath, '');
+ //
+ // Test path computation.
+ //
+ List<String> paths = manager.pathsFor(pluginDirPath);
+ expect(paths, hasLength(2));
+ expect(paths[0], pluginFilePath);
+ File packagesFile = resourceProvider.getFile(paths[1]);
+ expect(packagesFile.exists, isTrue);
+ String content = packagesFile.readAsStringSync();
+ List<String> lines = content.split('\n');
+ expect(
+ lines,
+ unorderedEquals([
+ 'plugin:file:///workspaceRoot/third_party/dart/plugin/lib',
+ 'b:file:///workspaceRoot/third_party/dart/b/lib',
+ 'c:file:///workspaceRoot/third_party/dart/c/lib',
+ 'd:file:///workspaceRoot/third_party/dart/d/lib',
+ ''
+ ]));
+ }
+
void test_pluginsForContextRoot_none() {
ContextRoot contextRoot = new ContextRoot('/pkg1', []);
expect(manager.pluginsForContextRoot(contextRoot), isEmpty);

Powered by Google App Engine
This is Rietveld 408576698