tree 6e2b62217d5349df682a1ec258d492a0d757dc88
parent 9ec20d11e7218e2f8e268f2a769df60e0ec4aad5
author Hana (Hyang-Ah) Kim <hyangah@gmail.com> 1590784901 +0000
committer Hyang-Ah Hana Kim <hyangah@gmail.com> 1590785061 +0000

src/goLanguageServer: improve handling of invalid or pre-release vers…

…ion strings

If getLocalGoplsVersion is completely busted and returns a nonsense value as
user's version, the later call to semver.lt with it can cause an exception.
Prevent it. Also, semver.lt does not handle comparison with a prerelease version
string correctly by itself. Avoid the issue by passing a correctly parsed
semver object instead.

Also, fix the gopls update tests by making the functions in goLanguageServers
really stubbable by making them function variables.

Previously,

export async function getLatestGoplsVersion(...) {  // to stub
}

export function shouldUpdateLanguageServer(...) {
  ...
  getLatestGoplsVersion(...)
  ...
}

This makes the getLatestGoplsVersion is captured in the exported
shouldUpdateLanguageServer closure. Later we attempt to stub getLatestGoplsVersion
with sinon, but it is too late.

This CL changes the above to

export const getLatestGoplsVersion = async (...) => { ... }

That makes shouldUpdateLanguageServer use the version of function we later configure.

Also, made the test not sensitive to the data in allToolsInformation (goTools.ts).
We will keep changing the latest release/prerelease versions, so depending on
them is not desirable.

Changed some of usersVersion in the test data. We are stubbing
getLocalGoplsVersion, that's supposed to return the part of the version string
without the hash part.

Update golang/vscode-go#37

Change-Id: I095fe90217aae6eca80cc3655c1211c8b863201f

Change-Id: I095fe90217aae6eca80cc3655c1211c8b863201f
GitHub-Last-Rev: e583fb32aa630d1c6bc25eee372c9e75bd462513
GitHub-Pull-Request: golang/vscode-go#140
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/235524
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
