Merge pull request #4211 from cdr/jsjoeio-add-moar-tests
feat: add tests for shouldRunVsCodeCli and bindAddrFromArgs
This commit is contained in:
commit
e8063c7efd
@ -594,7 +594,11 @@ interface Addr {
|
||||
port: number
|
||||
}
|
||||
|
||||
function bindAddrFromArgs(addr: Addr, args: Args): Addr {
|
||||
/**
|
||||
* This function creates the bind address
|
||||
* using the CLI args.
|
||||
*/
|
||||
export function bindAddrFromArgs(addr: Addr, args: Args): Addr {
|
||||
addr = { ...addr }
|
||||
if (args["bind-addr"]) {
|
||||
addr = parseBindAddr(args["bind-addr"])
|
||||
@ -626,7 +630,18 @@ function bindAddrFromAllSources(...argsConfig: Args[]): Addr {
|
||||
}
|
||||
|
||||
export const shouldRunVsCodeCli = (args: Args): boolean => {
|
||||
return !!args["list-extensions"] || !!args["install-extension"] || !!args["uninstall-extension"]
|
||||
// Create new interface with only Arg keys
|
||||
// keyof Args
|
||||
// Turn that into an array
|
||||
// Array<...>
|
||||
type ExtensionArgs = Array<keyof Args>
|
||||
const extensionRelatedArgs: ExtensionArgs = ["list-extensions", "install-extension", "uninstall-extension"]
|
||||
|
||||
const argKeys = Object.keys(args)
|
||||
|
||||
// If any of the extensionRelatedArgs are included in args
|
||||
// then we don't want to run the vscode cli
|
||||
return extensionRelatedArgs.some((arg) => argKeys.includes(arg))
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3,9 +3,18 @@ import { promises as fs } from "fs"
|
||||
import * as net from "net"
|
||||
import * as os from "os"
|
||||
import * as path from "path"
|
||||
import { Args, parse, setDefaults, shouldOpenInExistingInstance, splitOnFirstEquals } from "../../../src/node/cli"
|
||||
import {
|
||||
Args,
|
||||
bindAddrFromArgs,
|
||||
parse,
|
||||
setDefaults,
|
||||
shouldOpenInExistingInstance,
|
||||
shouldRunVsCodeCli,
|
||||
splitOnFirstEquals,
|
||||
} from "../../../src/node/cli"
|
||||
import { tmpdir } from "../../../src/node/constants"
|
||||
import { paths } from "../../../src/node/util"
|
||||
import { useEnv } from "../../utils/helpers"
|
||||
|
||||
type Mutable<T> = {
|
||||
-readonly [P in keyof T]: T[P]
|
||||
@ -463,3 +472,173 @@ describe("splitOnFirstEquals", () => {
|
||||
expect(actual).toEqual(expect.arrayContaining(expected))
|
||||
})
|
||||
})
|
||||
|
||||
describe("shouldRunVsCodeCli", () => {
|
||||
it("should return false if no 'extension' related args passed in", () => {
|
||||
const args = {
|
||||
_: [],
|
||||
}
|
||||
const actual = shouldRunVsCodeCli(args)
|
||||
const expected = false
|
||||
|
||||
expect(actual).toBe(expected)
|
||||
})
|
||||
|
||||
it("should return true if 'list-extensions' passed in", () => {
|
||||
const args = {
|
||||
_: [],
|
||||
["list-extensions"]: true,
|
||||
}
|
||||
const actual = shouldRunVsCodeCli(args)
|
||||
const expected = true
|
||||
|
||||
expect(actual).toBe(expected)
|
||||
})
|
||||
|
||||
it("should return true if 'install-extension' passed in", () => {
|
||||
const args = {
|
||||
_: [],
|
||||
["install-extension"]: ["hello.world"],
|
||||
}
|
||||
const actual = shouldRunVsCodeCli(args)
|
||||
const expected = true
|
||||
|
||||
expect(actual).toBe(expected)
|
||||
})
|
||||
|
||||
it("should return true if 'uninstall-extension' passed in", () => {
|
||||
const args = {
|
||||
_: [],
|
||||
["uninstall-extension"]: ["hello.world"],
|
||||
}
|
||||
const actual = shouldRunVsCodeCli(args)
|
||||
const expected = true
|
||||
|
||||
expect(actual).toBe(expected)
|
||||
})
|
||||
})
|
||||
|
||||
describe("bindAddrFromArgs", () => {
|
||||
it("should return the bind address", () => {
|
||||
const args = {
|
||||
_: [],
|
||||
}
|
||||
|
||||
const addr = {
|
||||
host: "localhost",
|
||||
port: 8080,
|
||||
}
|
||||
|
||||
const actual = bindAddrFromArgs(addr, args)
|
||||
const expected = addr
|
||||
|
||||
expect(actual).toStrictEqual(expected)
|
||||
})
|
||||
|
||||
it("should use the bind-address if set in args", () => {
|
||||
const args = {
|
||||
_: [],
|
||||
["bind-addr"]: "localhost:3000",
|
||||
}
|
||||
|
||||
const addr = {
|
||||
host: "localhost",
|
||||
port: 8080,
|
||||
}
|
||||
|
||||
const actual = bindAddrFromArgs(addr, args)
|
||||
const expected = {
|
||||
host: "localhost",
|
||||
port: 3000,
|
||||
}
|
||||
|
||||
expect(actual).toStrictEqual(expected)
|
||||
})
|
||||
|
||||
it("should use the host if set in args", () => {
|
||||
const args = {
|
||||
_: [],
|
||||
["host"]: "coder",
|
||||
}
|
||||
|
||||
const addr = {
|
||||
host: "localhost",
|
||||
port: 8080,
|
||||
}
|
||||
|
||||
const actual = bindAddrFromArgs(addr, args)
|
||||
const expected = {
|
||||
host: "coder",
|
||||
port: 8080,
|
||||
}
|
||||
|
||||
expect(actual).toStrictEqual(expected)
|
||||
})
|
||||
|
||||
it("should use process.env.PORT if set", () => {
|
||||
const [setValue, resetValue] = useEnv("PORT")
|
||||
setValue("8000")
|
||||
|
||||
const args = {
|
||||
_: [],
|
||||
}
|
||||
|
||||
const addr = {
|
||||
host: "localhost",
|
||||
port: 8080,
|
||||
}
|
||||
|
||||
const actual = bindAddrFromArgs(addr, args)
|
||||
const expected = {
|
||||
host: "localhost",
|
||||
port: 8000,
|
||||
}
|
||||
|
||||
expect(actual).toStrictEqual(expected)
|
||||
resetValue()
|
||||
})
|
||||
|
||||
it("should set port if in args", () => {
|
||||
const args = {
|
||||
_: [],
|
||||
port: 3000,
|
||||
}
|
||||
|
||||
const addr = {
|
||||
host: "localhost",
|
||||
port: 8080,
|
||||
}
|
||||
|
||||
const actual = bindAddrFromArgs(addr, args)
|
||||
const expected = {
|
||||
host: "localhost",
|
||||
port: 3000,
|
||||
}
|
||||
|
||||
expect(actual).toStrictEqual(expected)
|
||||
})
|
||||
|
||||
it("should use the args.port over process.env.PORT if both set", () => {
|
||||
const [setValue, resetValue] = useEnv("PORT")
|
||||
setValue("8000")
|
||||
|
||||
const args = {
|
||||
_: [],
|
||||
port: 3000,
|
||||
}
|
||||
|
||||
const addr = {
|
||||
host: "localhost",
|
||||
port: 8080,
|
||||
}
|
||||
|
||||
const actual = bindAddrFromArgs(addr, args)
|
||||
const expected = {
|
||||
host: "localhost",
|
||||
port: 3000,
|
||||
}
|
||||
|
||||
expect(actual).toStrictEqual(expected)
|
||||
resetValue()
|
||||
})
|
||||
})
|
||||
|
Reference in New Issue
Block a user