diff --git a/.vscode/launch.json b/.vscode/launch.json index 6b21f9497a..b7c488c839 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -194,9 +194,9 @@ "args": ["tasks/debugger/updatePackageDependencies.ts"], "env": { "NEW_DEPS_ID": "OmniSharp", - "NEW_DEPS_URLS": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-x64.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-x86.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-arm64.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-osx.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-win-x64.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-win-arm64.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-musl-x64-net6.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-musl-arm64-net6.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-x64-net6.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-arm64-net6.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-osx-x64-net6.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-osx-arm64-net6.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-win-x64-net6.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-win-arm64-net6.0.zip", + "NEW_DEPS_URLS": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-x64.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-x86.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-arm64.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-osx.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-win-x64.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-win-arm64.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-musl-x64-net6.0.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-musl-arm64-net6.0.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-x64-net6.0.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-arm64-net6.0.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-osx-x64-net6.0.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-osx-arm64-net6.0.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-win-x64-net6.0.zip,https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-win-arm64-net6.0.zip", "OLD_DEPS_VERSION": "1.39.12", - "NEW_DEPS_VERSION": "1.39.14" + "NEW_DEPS_VERSION": "1.39.15" }, "cwd": "${workspaceFolder}" }, diff --git a/package.json b/package.json index d5eb5d2377..76c4b6f9d4 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ ], "defaults": { "roslyn": "5.12.0-1.26465.4", - "omniSharp": "1.39.14", + "omniSharp": "1.39.15", "razorOmnisharp": "7.0.0-preview.23363.1", "xamlTools": "18.10.12014.341", "testDiscovery": "11.0.24-gea15b2" @@ -161,72 +161,72 @@ { "id": "OmniSharp", "description": "OmniSharp for Windows (.NET 4.7.2 / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-win-x64.zip", - "installPath": ".omnisharp/1.39.14", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-win-x64.zip", + "installPath": ".omnisharp/1.39.15", "platforms": [ "win32" ], "architectures": [ "x86_64" ], - "installTestPath": "./.omnisharp/1.39.14/OmniSharp.exe", + "installTestPath": "./.omnisharp/1.39.15/OmniSharp.exe", "platformId": "win-x64", "isFramework": true, - "integrity": "64B040ECD9390C1A595D764561653E80EE857298E1B079661081A234326B9B97" + "integrity": "AFA4B20C97BF5BA4AF0AC87E120C5730FF50B285EA129B353A3761681A3B5183" }, { "id": "OmniSharp", "description": "OmniSharp for Windows (.NET 6 / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-win-x64-net6.0.zip", - "installPath": ".omnisharp/1.39.14-net6.0", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-win-x64-net6.0.zip", + "installPath": ".omnisharp/1.39.15-net6.0", "platforms": [ "win32" ], "architectures": [ "x86_64" ], - "installTestPath": "./.omnisharp/1.39.14-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.15-net6.0/OmniSharp.dll", "platformId": "win-x64", "isFramework": false, - "integrity": "DA298BCBD471E9A8D2B5A007132B5F5CD567FE6A9C84BC97A7ABD4005AAD6A96" + "integrity": "B03EB6B9AC6446FCE803B87C0965E94CEF5570CC86F47BFEFE2F60933D8658E8" }, { "id": "OmniSharp", "description": "OmniSharp for Windows (.NET 4.7.2 / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-win-arm64.zip", - "installPath": ".omnisharp/1.39.14", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-win-arm64.zip", + "installPath": ".omnisharp/1.39.15", "platforms": [ "win32" ], "architectures": [ "arm64" ], - "installTestPath": "./.omnisharp/1.39.14/OmniSharp.exe", + "installTestPath": "./.omnisharp/1.39.15/OmniSharp.exe", "platformId": "win-arm64", "isFramework": true, - "integrity": "D171EFE3D50D2C5E6F05AF124144E6DA3083866A867DE8E10C115E44F32A03F3" + "integrity": "E3CE8034EBB85F07FA71D9560BBCAE37DDE6E73CF0335B8EC0BFA839C0EF6EBB" }, { "id": "OmniSharp", "description": "OmniSharp for Windows (.NET 6 / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-win-arm64-net6.0.zip", - "installPath": ".omnisharp/1.39.14-net6.0", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-win-arm64-net6.0.zip", + "installPath": ".omnisharp/1.39.15-net6.0", "platforms": [ "win32" ], "architectures": [ "arm64" ], - "installTestPath": "./.omnisharp/1.39.14-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.15-net6.0/OmniSharp.dll", "platformId": "win-arm64", "isFramework": false, - "integrity": "60324F7482472E081AA560F5FB46BC8A286A38D327C76F7ECE2595994154D7F6" + "integrity": "B8294F77E368A85875767F8E3A82CD4F9C8DE2ECC727D71D0DD378A9107C4588" }, { "id": "OmniSharp", "description": "OmniSharp for OSX (Mono / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-osx.zip", - "installPath": ".omnisharp/1.39.14", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-osx.zip", + "installPath": ".omnisharp/1.39.15", "platforms": [ "darwin" ], @@ -238,48 +238,48 @@ "./mono.osx", "./run" ], - "installTestPath": "./.omnisharp/1.39.14/run", + "installTestPath": "./.omnisharp/1.39.15/run", "platformId": "osx", "isFramework": true, - "integrity": "D1CD0A8A55E99BD8636D329946D69CDE3E0FEA518A3AB9F1A300C8C62FFD9980" + "integrity": "CED2D517DCF042879BAEFCD12D87E6A6CDC108B2D92C98A19F40E6323B6AE5D1" }, { "id": "OmniSharp", "description": "OmniSharp for OSX (.NET 6 / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-osx-x64-net6.0.zip", - "installPath": ".omnisharp/1.39.14-net6.0", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-osx-x64-net6.0.zip", + "installPath": ".omnisharp/1.39.15-net6.0", "platforms": [ "darwin" ], "architectures": [ "x86_64" ], - "installTestPath": "./.omnisharp/1.39.14-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.15-net6.0/OmniSharp.dll", "platformId": "osx-x64", "isFramework": false, - "integrity": "C1DD5FB6A45420B55B1698F1A49DA056B643C834D57004BC65ED32EE9335F308" + "integrity": "6AC1F8B1DFB1E4515F61D120F2CB5AB8404134EC62C441E4AB70EF30E0AC6D07" }, { "id": "OmniSharp", "description": "OmniSharp for OSX (.NET 6 / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-osx-arm64-net6.0.zip", - "installPath": ".omnisharp/1.39.14-net6.0", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-osx-arm64-net6.0.zip", + "installPath": ".omnisharp/1.39.15-net6.0", "platforms": [ "darwin" ], "architectures": [ "arm64" ], - "installTestPath": "./.omnisharp/1.39.14-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.15-net6.0/OmniSharp.dll", "platformId": "osx-arm64", "isFramework": false, - "integrity": "C3A345E07E6EDA5C6ADF9D4FC067640DABE0C1A75C2CAC49340AEC21F1687799" + "integrity": "678BE5BB972D04BBF5E1426E5E7562261E176FA781784D0F13877D8C4391EC3E" }, { "id": "OmniSharp", "description": "OmniSharp for Linux (Mono / x86)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-x86.zip", - "installPath": ".omnisharp/1.39.14", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-x86.zip", + "installPath": ".omnisharp/1.39.15", "platforms": [ "linux" ], @@ -291,16 +291,16 @@ "./mono.linux-x86", "./run" ], - "installTestPath": "./.omnisharp/1.39.14/run", + "installTestPath": "./.omnisharp/1.39.15/run", "platformId": "linux-x86", "isFramework": true, - "integrity": "8A35A36FAE073E975F9D8C7F1DE58AFB07F504E12D7DBFFA95E4A52E2D0E6610" + "integrity": "345E5B1BCFBA9AFCBD420AFE563474E595CD3DF36E3EFA08A28CC7A4887FB02A" }, { "id": "OmniSharp", "description": "OmniSharp for Linux (Mono / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-x64.zip", - "installPath": ".omnisharp/1.39.14", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-x64.zip", + "installPath": ".omnisharp/1.39.15", "platforms": [ "linux" ], @@ -311,32 +311,32 @@ "./mono.linux-x86_64", "./run" ], - "installTestPath": "./.omnisharp/1.39.14/run", + "installTestPath": "./.omnisharp/1.39.15/run", "platformId": "linux-x64", "isFramework": true, - "integrity": "4F146EB94A195A437361C0FEC527309F0AA31474C6D9B7B9E0BC9A1804BD8EAF" + "integrity": "A8CBA256B179840D098BA42BF3CD926D02C9C3F37EB018DC9FB20A9402A26A20" }, { "id": "OmniSharp", "description": "OmniSharp for Linux (.NET 6 / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-x64-net6.0.zip", - "installPath": ".omnisharp/1.39.14-net6.0", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-x64-net6.0.zip", + "installPath": ".omnisharp/1.39.15-net6.0", "platforms": [ "linux" ], "architectures": [ "x86_64" ], - "installTestPath": "./.omnisharp/1.39.14-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.15-net6.0/OmniSharp.dll", "platformId": "linux-x64", "isFramework": false, - "integrity": "EBA3F00A807517789BE0188F86F8B685D74359D6BD684D7A0B0125E33AD59D89" + "integrity": "41838CD21ABBF01D7AB41FD53D19297A6F3EC5A07BB75EC139B0EAD4195D1239" }, { "id": "OmniSharp", "description": "OmniSharp for Linux (Mono / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-arm64.zip", - "installPath": ".omnisharp/1.39.14", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-arm64.zip", + "installPath": ".omnisharp/1.39.15", "platforms": [ "linux" ], @@ -347,58 +347,58 @@ "./mono.linux-arm64", "./run" ], - "installTestPath": "./.omnisharp/1.39.14/run", + "installTestPath": "./.omnisharp/1.39.15/run", "platformId": "linux-arm64", "isFramework": true, - "integrity": "B33419B089119D5327A228636BBA5713715D4D76B4B0FB4EFEFCBECE2F8F2D22" + "integrity": "9494910E8A08D8141692BECD671B47CF31A69D7AD9AB1DD35BA85E852FDBB601" }, { "id": "OmniSharp", "description": "OmniSharp for Linux (.NET 6 / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-arm64-net6.0.zip", - "installPath": ".omnisharp/1.39.14-net6.0", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-arm64-net6.0.zip", + "installPath": ".omnisharp/1.39.15-net6.0", "platforms": [ "linux" ], "architectures": [ "arm64" ], - "installTestPath": "./.omnisharp/1.39.14-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.15-net6.0/OmniSharp.dll", "platformId": "linux-arm64", "isFramework": false, - "integrity": "0E2C69F191268959D68A35E1CC8FD832A688AF516A9945EF25DC8C6EA014A7C2" + "integrity": "376E2007B9A828E7EF58AAC1C3397723E0060C8251F29A86B0D8D6747C000E85" }, { "id": "OmniSharp", "description": "OmniSharp for Linux musl (.NET 6 / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-musl-x64-net6.0.zip", - "installPath": ".omnisharp/1.39.14-net6.0", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-musl-x64-net6.0.zip", + "installPath": ".omnisharp/1.39.15-net6.0", "platforms": [ "linux-musl" ], "architectures": [ "x86_64" ], - "installTestPath": "./.omnisharp/1.39.14-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.15-net6.0/OmniSharp.dll", "platformId": "linux-musl-x64", "isFramework": false, - "integrity": "098106AA7AA22FB427A5333B120916BD0C2FA8A303DA9653992E45F20BFD6AAF" + "integrity": "53AAC7333C0A72FC79F6E6C6E0AB656515AD8136EA622D1BE121067EE60F5BC4" }, { "id": "OmniSharp", "description": "OmniSharp for Linux musl (.NET 6 / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.14/omnisharp-linux-musl-arm64-net6.0.zip", - "installPath": ".omnisharp/1.39.14-net6.0", + "url": "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.39.15/omnisharp-linux-musl-arm64-net6.0.zip", + "installPath": ".omnisharp/1.39.15-net6.0", "platforms": [ "linux-musl" ], "architectures": [ "arm64" ], - "installTestPath": "./.omnisharp/1.39.14-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.15-net6.0/OmniSharp.dll", "platformId": "linux-musl-arm64", "isFramework": false, - "integrity": "7CF8465D490D6D5362C0FBB5F9550C95FBCB8D306079185CC533D37A7A40F666" + "integrity": "1263192EB1FED8E39C507CB870BAD88DE6D1A51098EBD1C9C66728CED06D2F89" }, { "id": "RoslynCopilot", diff --git a/src/omnisharp/omnisharpDownloader.ts b/src/omnisharp/omnisharpDownloader.ts index dd0ea5bab0..31f33f832e 100644 --- a/src/omnisharp/omnisharpDownloader.ts +++ b/src/omnisharp/omnisharpDownloader.ts @@ -71,13 +71,17 @@ export class OmnisharpDownloader { return false; } - public async GetLatestVersion(serverUrl: string, latestVersionFileServerPath: string): Promise { + public async GetLatestVersion(latestVersionUrl: string): Promise { const description = 'Latest OmniSharp Version Information'; - const url = `${serverUrl}/${latestVersionFileServerPath}`; try { this.eventStream.post(new LatestBuildDownloadStart()); - const versionBuffer = await DownloadFile(description, this.eventStream, this.networkSettingsProvider, url); - return versionBuffer.toString('utf8'); + const versionBuffer = await DownloadFile( + description, + this.eventStream, + this.networkSettingsProvider, + latestVersionUrl + ); + return versionBuffer.toString('utf8').trim(); } catch (error) { this.eventStream.post(new InstallationFailure('getLatestVersionInfoFile', error)); throw error; diff --git a/src/omnisharp/omnisharpManager.ts b/src/omnisharp/omnisharpManager.ts index 91159a3690..20ba3529ea 100644 --- a/src/omnisharp/omnisharpManager.ts +++ b/src/omnisharp/omnisharpManager.ts @@ -8,11 +8,9 @@ import * as semver from 'semver'; import * as util from '../common'; import { OmnisharpDownloader } from './omnisharpDownloader'; import { PlatformInformation } from '../shared/platform'; -import { modernNetVersion } from './omnisharpPackageCreator'; +import { getModernNetVersion } from './omnisharpPackageCreator'; export class OmnisharpManager { - private readonly latestVersionFileServerPath = 'releases/versioninfo.txt'; - private readonly installPath = '.omnisharp'; public constructor( @@ -20,7 +18,8 @@ export class OmnisharpManager { private platformInfo: PlatformInformation, // Only the tests set this. Instead of making this configurable, // we should probably just mock the HTTP requests, not create an entire mock HTTP server. - private serverUrl: string = 'https://roslynomnisharp.blob.core.windows.net' + private serverUrl: string = 'https://github.com/OmniSharp/omnisharp-roslyn', + private latestVersionUrl: string = 'https://raw.githubusercontent.com/OmniSharp/omnisharp-roslyn/version/latestVersion.txt' ) {} public async GetOmniSharpLaunchPath( @@ -54,7 +53,7 @@ export class OmnisharpManager { } private async InstallLatestAndReturnLaunchInfo(useFramework: boolean, extensionPath: string): Promise { - const version = await this.downloader.GetLatestVersion(this.serverUrl, this.latestVersionFileServerPath); + const version = await this.downloader.GetLatestVersion(this.latestVersionUrl); return await this.InstallVersionAndReturnLaunchInfo(version, useFramework, extensionPath); } @@ -80,7 +79,7 @@ export class OmnisharpManager { const basePath = path.resolve( extensionPath, this.installPath, - version + (useFramework ? '' : `-net${modernNetVersion}`) + version + (useFramework ? '' : `-net${getModernNetVersion(version)}`) ); if (!useFramework) { return path.join(basePath, 'OmniSharp.dll'); diff --git a/src/omnisharp/omnisharpPackageCreator.ts b/src/omnisharp/omnisharpPackageCreator.ts index ff68e4c26c..48ec43adbf 100644 --- a/src/omnisharp/omnisharpPackageCreator.ts +++ b/src/omnisharp/omnisharpPackageCreator.ts @@ -4,8 +4,13 @@ *--------------------------------------------------------------------------------------------*/ import { Package } from '../packageManager/package'; +import * as semver from 'semver'; -export const modernNetVersion = '6.0'; +export function getModernNetVersion(version: string): string { + // OmniSharp 1.39.16 moved modern packages from .NET 6 to .NET 10. + const normalizedVersion = semver.coerce(version); + return normalizedVersion && semver.gte(normalizedVersion, '1.39.16') ? '10.0' : '6.0'; +} export function GetPackagesFromVersion( version: string, @@ -28,7 +33,7 @@ export function SetBinaryAndGetPackage( ): Package { let installBinary: string; if (!useFramework) { - // .NET 6 packages use system `dotnet OmniSharp.dll` + // Modern .NET packages use system `dotnet OmniSharp.dll`. installBinary = 'OmniSharp.dll'; } else if (inputPackage.platforms.includes('win32')) { installBinary = 'OmniSharp.exe'; @@ -47,13 +52,13 @@ function GetPackage( installPath: string, installBinary: string ): Package { - const packageSuffix = useFramework ? '' : `-net${modernNetVersion}`; + const packageSuffix = useFramework ? '' : `-net${getModernNetVersion(version)}`; return { ...inputPackage, integrity: undefined, description: `${inputPackage.description}, Version = ${version}`, - url: `${serverUrl}/releases/${version}/omnisharp-${inputPackage.platformId}${packageSuffix}.zip`, + url: `${serverUrl}/releases/download/v${version}/omnisharp-${inputPackage.platformId}${packageSuffix}.zip`, installPath: `${installPath}/${version}${packageSuffix}`, installTestPath: `./${installPath}/${version}${packageSuffix}/${installBinary}`, }; diff --git a/test/omnisharp/omnisharpUnitTests/omnisharpDownloader.test.ts b/test/omnisharp/omnisharpUnitTests/omnisharpDownloader.test.ts index 74d2b999f7..ebf6e8a671 100644 --- a/test/omnisharp/omnisharpUnitTests/omnisharpDownloader.test.ts +++ b/test/omnisharp/omnisharpUnitTests/omnisharpDownloader.test.ts @@ -27,7 +27,7 @@ import { } from '../../../src/shared/loggingEvents'; import TestEventBus from './testAssets/testEventBus'; import { testPackageJSON } from './testAssets/testAssets'; -import { modernNetVersion } from '../../../src/omnisharp/omnisharpPackageCreator'; +import { getModernNetVersion } from '../../../src/omnisharp/omnisharpPackageCreator'; [true, false].forEach((useFramework) => { describe(`OmnisharpDownloader (useFramework: ${useFramework})`, () => { @@ -42,7 +42,7 @@ import { modernNetVersion } from '../../../src/omnisharp/omnisharpPackageCreator let tmpDir: TmpAsset; let testZip: TestZip; let eventBus: TestEventBus; - const suffix = useFramework ? '' : `-net${modernNetVersion}`; + const suffix = useFramework ? '' : `-net${getModernNetVersion(version)}`; beforeEach(async () => { eventStream = new EventStream(); @@ -61,7 +61,7 @@ import { modernNetVersion } from '../../../src/omnisharp/omnisharpPackageCreator await server.start(); server.addRequestHandler( 'GET', - `/releases/${version}/omnisharp-win-x64${suffix}.zip`, + `/releases/download/v${version}/omnisharp-win-x64${suffix}.zip`, 200, { 'content-type': 'application/zip', diff --git a/test/omnisharp/omnisharpUnitTests/omnisharpManager.test.ts b/test/omnisharp/omnisharpUnitTests/omnisharpManager.test.ts index 78f882771e..97ab8bfb12 100644 --- a/test/omnisharp/omnisharpUnitTests/omnisharpManager.test.ts +++ b/test/omnisharp/omnisharpUnitTests/omnisharpManager.test.ts @@ -16,7 +16,7 @@ import { testPackageJSON } from './testAssets/testAssets'; import { TmpAsset, CreateTmpDir, CreateTmpFile } from '../../createTmpAsset'; import * as path from 'path'; import * as util from '../../../src/common'; -import { modernNetVersion } from '../../../src/omnisharp/omnisharpPackageCreator'; +import { getModernNetVersion } from '../../../src/omnisharp/omnisharpPackageCreator'; describe(OmnisharpManager.name, () => { let server: MockHttpsServer; @@ -32,6 +32,7 @@ describe(OmnisharpManager.name, () => { let testZip: TestZip; let useFramework: boolean; let suffix: string; + let latestSuffix: string; [ { @@ -84,10 +85,11 @@ describe(OmnisharpManager.name, () => { manager = GetTestOmniSharpManager(elem.platformInfo, eventStream, extensionPath, server.baseUrl); testZip = await TestZip.createTestZipAsync(createTestFile('Foo', 'foo.txt')); useFramework = elem.useFramework; - suffix = useFramework ? '' : `-net${modernNetVersion}`; + suffix = useFramework ? '' : `-net${getModernNetVersion(testVersion)}`; + latestSuffix = useFramework ? '' : `-net${getModernNetVersion(latestVersion)}`; server.addRequestHandler( 'GET', - `/releases/${testVersion}/omnisharp-${elem.platformId}${suffix}.zip`, + `/releases/download/v${testVersion}/omnisharp-${elem.platformId}${suffix}.zip`, 200, { 'content-type': 'application/zip', @@ -98,17 +100,17 @@ describe(OmnisharpManager.name, () => { server.addRequestHandler( 'GET', - `/releases/versioninfo.txt`, + `/version/latestVersion.txt`, 200, { 'content-type': 'application/text', }, - latestVersion + `${latestVersion}\n` ); server.addRequestHandler( 'GET', - `/releases/${latestVersion}/omnisharp-${elem.platformId}${suffix}.zip`, + `/releases/download/v${latestVersion}/omnisharp-${elem.platformId}${latestSuffix}.zip`, 200, { 'content-type': 'application/zip', @@ -175,7 +177,7 @@ describe(OmnisharpManager.name, () => { if (useFramework) { if (elem.platformInfo.isWindows()) { expect(launchPath).toEqual( - path.join(extensionPath, installPath, latestVersion + suffix, 'OmniSharp.exe') + path.join(extensionPath, installPath, latestVersion + latestSuffix, 'OmniSharp.exe') ); } else { expect(launchPath).toEqual( @@ -184,7 +186,7 @@ describe(OmnisharpManager.name, () => { } } else { expect(launchPath).toEqual( - path.join(extensionPath, installPath, latestVersion + suffix, 'OmniSharp.dll') + path.join(extensionPath, installPath, latestVersion + latestSuffix, 'OmniSharp.dll') ); } }); @@ -247,5 +249,5 @@ function GetTestOmniSharpManager( platformInfo, extensionPath ); - return new OmnisharpManager(downloader, platformInfo, serverUrl); + return new OmnisharpManager(downloader, platformInfo, serverUrl, `${serverUrl}/version/latestVersion.txt`); } diff --git a/test/omnisharp/omnisharpUnitTests/omnisharpPackageCreator.test.ts b/test/omnisharp/omnisharpUnitTests/omnisharpPackageCreator.test.ts index 68425752c9..5371dfb92e 100644 --- a/test/omnisharp/omnisharpUnitTests/omnisharpPackageCreator.test.ts +++ b/test/omnisharp/omnisharpUnitTests/omnisharpPackageCreator.test.ts @@ -7,7 +7,7 @@ import { describe, test, expect, beforeEach } from '@jest/globals'; import { SetBinaryAndGetPackage, GetPackagesFromVersion, - modernNetVersion, + getModernNetVersion, } from '../../../src/omnisharp/omnisharpPackageCreator'; import { Package } from '../../../src/packageManager/package'; import { testPackageJSON } from './testAssets/testAssets'; @@ -30,7 +30,7 @@ describe('GetOmnisharpPackage : Output package depends on the input package and const useFrameworkOptions = [true, false]; useFrameworkOptions.forEach((useFramework) => { - const pathSuffix = useFramework ? '' : `-net${modernNetVersion}`; + const pathSuffix = useFramework ? '' : `-net${getModernNetVersion('1.2.3')}`; test(`Architectures, binaries and platforms do not change ${useFramework ? 'on framework' : ''}`, () => { const testPackage = inputPackages.find( @@ -152,7 +152,7 @@ describe('GetOmnisharpPackage : Output package depends on the input package and '1.1.1', installPath ); - expect(resultPackage.url).toEqual('http://someurl/releases/1.1.1/omnisharp-os-architecture.zip'); + expect(resultPackage.url).toEqual('http://someurl/releases/download/v1.1.1/omnisharp-os-architecture.zip'); }); test('Download url is calculated using server url and version (useFramework: false)', () => { @@ -167,9 +167,15 @@ describe('GetOmnisharpPackage : Output package depends on the input package and installPath ); expect(resultPackage.url).toEqual( - `http://someurl/releases/1.1.1/omnisharp-os-architecture-net${modernNetVersion}.zip` + `http://someurl/releases/download/v1.1.1/omnisharp-os-architecture-net${getModernNetVersion('1.1.1')}.zip` ); }); + + test('Modern package target framework follows the OmniSharp release version', () => { + expect(getModernNetVersion('1.39.15')).toEqual('6.0'); + expect(getModernNetVersion('1.39.16-beta.1')).toEqual('10.0'); + expect(getModernNetVersion('1.39.16')).toEqual('10.0'); + }); }); describe('GetPackagesFromVersion : Gets the experimental omnisharp packages from a set of input packages', () => { @@ -227,7 +233,7 @@ describe('GetPackagesFromVersion : Gets the experimental omnisharp packages from serverUrl, 'experimentPath' ); - const suffix = useFramework ? '' : `-net${modernNetVersion}`; + const suffix = useFramework ? '' : `-net${getModernNetVersion('1.1.1')}`; expect(outPackages).toHaveLength(2); expect(outPackages[0].installTestPath).toEqual( `./experimentPath/1.1.1${suffix}/OmniSharp.${useFramework ? 'exe' : 'dll'}`