Skip to content

Commit ae72089

Browse files
Fix tests by using API Key for CI (#2255)
* Fix tests by using API Key for CI * new lines so codacy is happy * better logging of errors * tslint * refactor to more concise code
1 parent 3e16efd commit ae72089

File tree

2 files changed

+27
-11
lines changed

2 files changed

+27
-11
lines changed

src/features/UpdatePowerShell.ts

+25-10
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Copyright (C) Microsoft Corporation. All rights reserved.
33
*--------------------------------------------------------*/
44

5-
import fetch from "node-fetch";
5+
import fetch, { RequestInit } from "node-fetch";
66
import * as semver from "semver";
77
import { MessageItem, window } from "vscode";
88
import { LanguageClient } from "vscode-languageclient";
@@ -16,18 +16,33 @@ const PowerShellGitHubPrereleasesUrl =
1616

1717
export class GitHubReleaseInformation {
1818
public static async FetchLatestRelease(preview: boolean): Promise<GitHubReleaseInformation> {
19+
const requestConfig: RequestInit = {};
20+
21+
// For CI. This prevents GitHub from rate limiting us.
22+
if (process.env.PS_TEST_GITHUB_API_USERNAME && process.env.PS_TEST_GITHUB_API_PAT) {
23+
const authHeaderValue = Buffer
24+
.from(`${process.env.PS_TEST_GITHUB_API_USERNAME}:${process.env.PS_TEST_GITHUB_API_PAT}`)
25+
.toString("base64");
26+
requestConfig.headers = {
27+
Authorization: `Basic ${authHeaderValue}`,
28+
};
29+
}
30+
1931
// Fetch the latest PowerShell releases from GitHub.
20-
let releaseJson: any;
21-
if (preview) {
22-
// This gets all releases and the first one is the latest prerelease if
23-
// there is a prerelease version.
24-
releaseJson = (await fetch(PowerShellGitHubPrereleasesUrl)
25-
.then((res) => res.json())).find((release: any) => release.prerelease);
26-
} else {
27-
releaseJson = await fetch(PowerShellGitHubReleasesUrl)
28-
.then((res) => res.json());
32+
const response = await fetch(
33+
preview ? PowerShellGitHubPrereleasesUrl : PowerShellGitHubReleasesUrl,
34+
requestConfig);
35+
36+
if (!response.ok) {
37+
const json = await response.json();
38+
throw json.message || json || "response was not ok.";
2939
}
3040

41+
// For preview, we grab all the releases and then grab the first prerelease.
42+
const releaseJson = preview
43+
? (await response.json()).find((release: any) => release.prerelease)
44+
: await response.json();
45+
3146
return new GitHubReleaseInformation(
3247
releaseJson.tag_name, releaseJson.assets);
3348
}

src/session.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -591,8 +591,9 @@ export class SessionManager implements Middleware {
591591
localVersion,
592592
this.versionDetails.architecture,
593593
release);
594-
} catch {
594+
} catch (e) {
595595
// best effort. This probably failed to fetch the data from GitHub.
596+
this.log.writeWarning(e.message);
596597
}
597598
});
598599

0 commit comments

Comments
 (0)