diff --git a/src/cli/plugin-authoring/plugin-folder-validation.ts b/src/cli/plugin-authoring/plugin-folder-validation.ts index b58f57c572b..282c30d2dca 100644 --- a/src/cli/plugin-authoring/plugin-folder-validation.ts +++ b/src/cli/plugin-authoring/plugin-folder-validation.ts @@ -14,6 +14,10 @@ import { } from '../../shared/plugins/approval/plugin-cli-approval' import { strictPluginArtifactErrors } from '../../shared/plugins/authoring/plugin-strict-artifact-checks' import { validatePluginFile } from '../../shared/plugins/installation/plugin-file-validation' +import { + localPluginPublisher, + withPluginPublisher +} from '../../shared/plugins/installation/plugin-publisher-derivation' import { PLUGIN_MANIFEST_FILENAME, parsePluginManifest, @@ -114,7 +118,10 @@ export async function validatePluginTarget(target: string): Promise { expect(report.errors.join('\n')).toContain('contributes.themes') }) + it('names a folder without a publisher the way Orca loads it', async () => { + const dir = join(await tempRoot(), 'nopub') + await createPluginFromTemplate({ dir, template: 'theme', publisher: 'acme' }) + const manifestPath = join(dir, 'orca-plugin.json') + const manifest = JSON.parse(await readFile(manifestPath, 'utf8')) + delete manifest.publisher + manifest.engines.orca = '>=1.4.246' + await writeFile(manifestPath, JSON.stringify(manifest)) + const report = await validatePluginTarget(dir) + expect(report.errors).toEqual([]) + expect(report.plugin?.pluginKey).toBe('local.nopub') + }) + it('reports a missing panel entry', async () => { const dir = join(await tempRoot(), 'panel') await createPluginFromTemplate({ dir, template: 'panel', publisher: 'acme' })