feat: add tests for bindAddrFromArgs

This commit is contained in:
Joe Previte 2021-09-21 10:41:33 -07:00
parent a673cf2833
commit f84757507b
No known key found for this signature in database
GPG Key ID: 2C91590C6B742C24
2 changed files with 135 additions and 6 deletions

View File

@ -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,13 +630,11 @@ function bindAddrFromAllSources(...argsConfig: Args[]): Addr {
}
export const shouldRunVsCodeCli = (args: Args): boolean => {
// Create new interface with only these keys
// Pick<Args, "list-extensions" | "install-extension" | "uninstall-extension">
// Get the keys of new interface
// keyof ...
// Create new interface with only Arg keys
// keyof Args
// Turn that into an array
// Array<...>
type ExtensionArgs = Array<keyof Pick<Args, "list-extensions" | "install-extension" | "uninstall-extension">>
type ExtensionArgs = Array<keyof Args>
const extensionRelatedArgs: ExtensionArgs = ["list-extensions", "install-extension", "uninstall-extension"]
const argKeys = Object.keys(args)

View File

@ -5,6 +5,7 @@ import * as os from "os"
import * as path from "path"
import {
Args,
bindAddrFromArgs,
parse,
setDefaults,
shouldOpenInExistingInstance,
@ -13,6 +14,7 @@ import {
} 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]
@ -515,3 +517,128 @@ describe("shouldRunVsCodeCli", () => {
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()
})
})