diff --git a/src/package.ts b/src/package.ts index ec8f2d3f..e9c6cbf1 100644 --- a/src/package.ts +++ b/src/package.ts @@ -401,7 +401,7 @@ export class ManifestProcessor extends BaseProcessor { } if (target) { - if (engineVersion !== 'latest' && !semver.satisfies(engineVersion, '>=1.61')) { + if (engineVersion !== 'latest' && !semver.satisfies(engineVersion, '>=1.61', { includePrerelease: true })) { throw new Error( `Platform specific extension is supported by VS Code >=1.61. Current 'engines.vscode' is '${manifest.engines['vscode']}'.` ); @@ -412,7 +412,7 @@ export class ManifestProcessor extends BaseProcessor { } if (preRelease) { - if (engineVersion !== 'latest' && !semver.satisfies(engineVersion, '>=1.63')) { + if (engineVersion !== 'latest' && !semver.satisfies(engineVersion, '>=1.63', { includePrerelease: true })) { throw new Error( `Pre-release versions are supported by VS Code >=1.63. Current 'engines.vscode' is '${manifest.engines['vscode']}'.` ); diff --git a/src/test/package.test.ts b/src/test/package.test.ts index 95cae87b..3cd904db 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -1604,6 +1604,17 @@ describe('toVsixManifest', () => { assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.TargetPlatform, 'win32-x64'); }); + it('should set the target platform when engine is set to insider', async () => { + const manifest = createManifest({ engines: { vscode: '>=1.62.0-insider' } }); + const raw = await _toVsixManifest(manifest, [], { target: 'win32-x64' }); + const dom = await parseXmlManifest(raw); + + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.Id, 'test'); + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.Version, '0.0.1'); + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.Publisher, 'mocha'); + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.TargetPlatform, 'win32-x64'); + }); + it('should fail when target is invalid', async () => { const manifest = createManifest(); @@ -1649,6 +1660,15 @@ describe('toVsixManifest', () => { assertProperty(xmlManifest, 'Microsoft.VisualStudio.Code.PreRelease', 'true'); }); + it('should add prerelease property when --pre-release flag is passed when engine property is for insiders', async () => { + const manifest = createManifest({ engines: { vscode: '>=1.64.0-insider' } }); + + const raw = await _toVsixManifest(manifest, [], { preRelease: true }); + const xmlManifest = await parseXmlManifest(raw); + + assertProperty(xmlManifest, 'Microsoft.VisualStudio.Code.PreRelease', 'true'); + }); + it('should not add prerelease property when --pre-release flag is not passed', async () => { const manifest = createManifest({ engines: { vscode: '>=1.64.0' } });