diff --git a/platform/platform-tests/testData/plugins/withModules/META-INF/plugin.xml b/platform/platform-tests/testData/plugins/withModules/META-INF/plugin.xml
new file mode 100644
index 000000000000..f17b65dbb3dd
--- /dev/null
+++ b/platform/platform-tests/testData/plugins/withModules/META-INF/plugin.xml
@@ -0,0 +1,5 @@
+
+ my.plugin
+ 0.1.0
+
+
\ No newline at end of file
diff --git a/platform/platform-tests/testSrc/com/intellij/ide/plugins/PluginManagerTest.java b/platform/platform-tests/testSrc/com/intellij/ide/plugins/PluginManagerTest.java
index f2cf5b115670..8619e7fddb95 100644
--- a/platform/platform-tests/testSrc/com/intellij/ide/plugins/PluginManagerTest.java
+++ b/platform/platform-tests/testSrc/com/intellij/ide/plugins/PluginManagerTest.java
@@ -122,6 +122,16 @@ public class PluginManagerTest {
doPluginSortTest("ultimatePlugins", true);
}
+ @Test
+ public void testModulePluginIdContract() throws Exception {
+ Path pluginsPath = Paths.get(PlatformTestUtil.getPlatformTestDataPath(), "plugins", "withModules");
+ IdeaPluginDescriptorImpl descriptorBundled = loadDescriptorInTest(pluginsPath, Collections.emptySet(), true);
+ Map idMap = PluginManagerCore.buildPluginIdMap(Collections.singletonList(descriptorBundled));
+ PluginId moduleId = PluginId.getId("foo.bar");
+ PluginId corePlugin = PluginId.getId("my.plugin");
+ assertEquals(corePlugin, idMap.get(moduleId).getPluginId());
+ }
+
@Test
public void testIdentifyPreInstalledPlugins() {
Path pluginsPath = Paths.get(PlatformTestUtil.getPlatformTestDataPath(), "plugins", "updatedBundled");