Skip to content

feat: proxy URI environment variable #4681

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Jan 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ implementation (#4414).
- The last opened folder/workspace is no longer stored separately in the
settings file (we rely on the already-existing query object instead).

### Added

- `VSCODE_PROXY_URI` env var for use in the terminal and extensions.

### Deprecated

- `--link` is now deprecated (#4562).
Expand Down
22 changes: 17 additions & 5 deletions ci/dev/postinstall.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,30 @@ set -euo pipefail

main() {
cd "$(dirname "$0")/../.."
source ./ci/lib.sh

echo "Installing code-server test dependencies..."
pushd test
echo "Installing dependencies for $PWD"
yarn install
popd

local args=(install)
if [[ ${CI-} ]]; then
args+=(--frozen-lockfile)
fi

cd test
pushd test
echo "Installing dependencies for $PWD"
yarn "${args[@]}"
cd ..
popd

cd vendor
echo "Installing vendor dependencies..."
pushd test/e2e/extensions/test-extension
echo "Installing dependencies for $PWD"
yarn "${args[@]}"
popd

pushd vendor
echo "Installing dependencies for $PWD"

# We install in 'modules' instead of 'node_modules' because VS Code's
# extensions use a webpack config which cannot differentiate between its own
Expand All @@ -33,6 +43,8 @@ main() {

# Finally, run the vendor `postinstall`
yarn run postinstall

popd
}

main "$@"
5 changes: 5 additions & 0 deletions ci/dev/test-e2e.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ main() {

source ./ci/lib.sh

pushd test/e2e/extensions/test-extension
echo "Building test extension"
yarn build
popd

local dir="$PWD"
if [[ ! ${CODE_SERVER_TEST_ENTRY-} ]]; then
echo "Set CODE_SERVER_TEST_ENTRY to test another build of code-server"
Expand Down
1 change: 1 addition & 0 deletions ci/dev/test-unit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ main() {

source ./ci/lib.sh

echo "Building test plugin"
pushd test/unit/node/test-plugin
make -s out/index.js
popd
Expand Down
12 changes: 12 additions & 0 deletions test/e2e/extensions.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { describe, test } from "./baseFixture"

describe("Extensions", true, () => {
// This will only work if the test extension is loaded into code-server.
test("should have access to VSCODE_PROXY_URI", async ({ codeServerPage }) => {
const address = await codeServerPage.address()

await codeServerPage.executeCommandViaMenus("code-server: Get proxy URI")

await codeServerPage.page.waitForSelector(`text=${address}/proxy/{{port}}`)
})
})
1 change: 1 addition & 0 deletions test/e2e/extensions/test-extension/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/extension.js
13 changes: 13 additions & 0 deletions test/e2e/extensions/test-extension/extension.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as vscode from "vscode"

export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(
vscode.commands.registerCommand("codeServerTest.proxyUri", () => {
if (process.env.VSCODE_PROXY_URI) {
vscode.window.showInformationMessage(process.env.VSCODE_PROXY_URI)
} else {
vscode.window.showErrorMessage("No proxy URI was set")
}
}),
)
}
29 changes: 29 additions & 0 deletions test/e2e/extensions/test-extension/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "code-server-extension",
"description": "code-server test extension",
"version": "0.0.1",
"publisher": "cdr",
"activationEvents": [
"onCommand:codeServerTest.proxyUri"
],
"engines": {
"vscode": "^1.56.0"
},
"main": "./extension.js",
"contributes": {
"commands": [
{
"command": "codeServerTest.proxyUri",
"title": "Get proxy URI",
"category": "code-server"
}
]
},
"devDependencies": {
"@types/vscode": "^1.56.0",
"typescript": "^4.0.5"
},
"scripts": {
"build": "tsc extension.ts"
}
}
10 changes: 10 additions & 0 deletions test/e2e/extensions/test-extension/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"compilerOptions": {
"target": "es2020",
"module": "commonjs",
"outDir": ".",
"strict": true,
"baseUrl": "./"
},
"include": ["./extension.ts"]
}
13 changes: 13 additions & 0 deletions test/e2e/extensions/test-extension/yarn.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


"@types/vscode@^1.56.0":
version "1.57.0"
resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.57.0.tgz#cc648e0573b92f725cd1baf2621f8da9f8bc689f"
integrity sha512-FeznBFtIDCWRluojTsi9c3LLcCHOXP5etQfBK42+ixo1CoEAchkw39tuui9zomjZuKfUVL33KZUDIwHZ/xvOkQ==

typescript@^4.0.5:
version "4.3.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805"
integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==
2 changes: 2 additions & 0 deletions test/e2e/models/CodeServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ export class CodeServer {
path.join(dir, "config.yaml"),
"--user-data-dir",
dir,
"--extensions-dir",
path.join(__dirname, "../extensions"),
// The last argument is the workspace to open.
dir,
],
Expand Down
13 changes: 4 additions & 9 deletions test/e2e/terminal.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,14 @@ import { clean, tmpdir } from "../utils/helpers"
import { describe, expect, test } from "./baseFixture"

describe("Integrated Terminal", true, () => {
// Create a new context with the saved storage state
// so we don't have to logged in
const testFileName = "pipe"
const testString = "new string test from e2e test"

const testName = "integrated-terminal"
test.beforeAll(async () => {
await clean(testName)
})

test("should echo a string to a file", async ({ codeServerPage }) => {
test("should have access to VSCODE_PROXY_URI", async ({ codeServerPage }) => {
const tmpFolderPath = await tmpdir(testName)
const tmpFile = path.join(tmpFolderPath, testFileName)
const tmpFile = path.join(tmpFolderPath, "pipe")

const command = `mkfifo '${tmpFile}' && cat '${tmpFile}'`
const exec = util.promisify(cp.exec)
Expand All @@ -27,12 +22,12 @@ describe("Integrated Terminal", true, () => {
await codeServerPage.focusTerminal()

await codeServerPage.page.waitForLoadState("load")
await codeServerPage.page.keyboard.type(`echo ${testString} > ${tmpFile}`)
await codeServerPage.page.keyboard.type(`printenv VSCODE_PROXY_URI > ${tmpFile}`)
await codeServerPage.page.keyboard.press("Enter")
// It may take a second to process
await codeServerPage.page.waitForTimeout(1000)

const { stdout } = await output
expect(stdout).toMatch(testString)
expect(stdout).toMatch(await codeServerPage.address())
})
})
2 changes: 0 additions & 2 deletions test/playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,10 @@ const config: PlaywrightTestConfig = {
name: "Chromium",
use: { browserName: "chromium" },
},

{
name: "Firefox",
use: { browserName: "firefox" },
},

{
name: "WebKit",
use: { browserName: "webkit" },
Expand Down
2 changes: 1 addition & 1 deletion vendor/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"postinstall": "./postinstall.sh"
},
"devDependencies": {
"code-oss-dev": "cdr/vscode#69a6ce45fc5b883aa8a950e10b79fd083eb0a7d7"
"code-oss-dev": "cdr/vscode#d4c3c65d5e17a240a95e735a349e311aaf721b60"
}
}
4 changes: 2 additions & 2 deletions vendor/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -274,9 +274,9 @@ clone-response@^1.0.2:
dependencies:
mimic-response "^1.0.0"

code-oss-dev@cdr/vscode#69a6ce45fc5b883aa8a950e10b79fd083eb0a7d7:
code-oss-dev@cdr/vscode#d4c3c65d5e17a240a95e735a349e311aaf721b60:
version "1.63.0"
resolved "https://codeload.github.com/cdr/vscode/tar.gz/69a6ce45fc5b883aa8a950e10b79fd083eb0a7d7"
resolved "https://codeload.github.com/cdr/vscode/tar.gz/d4c3c65d5e17a240a95e735a349e311aaf721b60"
dependencies:
"@microsoft/applicationinsights-web" "^2.6.4"
"@parcel/watcher" "2.0.3"
Expand Down