You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.4 KiB
129 lines
4.4 KiB
import { script } from "./shellcode/script" |
|
import { Bash, Fish, PowerShell, Zsh } from "./shellcode/shells" |
|
import describe from "./describe" |
|
import { writeFile } from "node:fs/promises" |
|
import path from "node:path" |
|
import testCwd from "./shellcode/test-cwd" |
|
import getStderr from "./shellcode/get-stderr" |
|
import testNodeVersion from "./shellcode/test-node-version" |
|
|
|
for (const shell of [Bash, Zsh, Fish, PowerShell]) { |
|
describe(shell, () => { |
|
test(`allows to install an lts if version missing`, async () => { |
|
await writeFile(path.join(testCwd(), ".node-version"), "lts/*") |
|
await script(shell) |
|
.then(shell.env({})) |
|
.then(shell.call("fnm", ["use", "--install-if-missing"])) |
|
.then( |
|
shell.scriptOutputContains(shell.call("fnm", ["ls"]), "lts-latest") |
|
) |
|
.takeSnapshot(shell) |
|
.execute(shell) |
|
}) |
|
|
|
test(`errors when alias is not found`, async () => { |
|
await writeFile(path.join(testCwd(), ".node-version"), "lts/*") |
|
await script(shell) |
|
.then(shell.env({ logLevel: "error" })) |
|
.then( |
|
shell.scriptOutputContains( |
|
getStderr(shell.call("fnm", ["use"])), |
|
"'Requested version lts-latest is not'" |
|
) |
|
) |
|
.takeSnapshot(shell) |
|
.execute(shell) |
|
}) |
|
|
|
test(`unalias a version`, async () => { |
|
await script(shell) |
|
.then(shell.env({})) |
|
.then(shell.call("fnm", ["install", "11.10.0"])) |
|
.then(shell.call("fnm", ["install", "8.11.3"])) |
|
.then(shell.call("fnm", ["alias", "8.11.3", "version8"])) |
|
.then(shell.scriptOutputContains(shell.call("fnm", ["ls"]), "version8")) |
|
.then(shell.call("fnm", ["unalias", "version8"])) |
|
.then( |
|
shell.scriptOutputContains( |
|
getStderr(shell.call("fnm", ["use", "version8"])), |
|
"'Requested version version8 is not currently installed'" |
|
) |
|
) |
|
.takeSnapshot(shell) |
|
.execute(shell) |
|
}) |
|
|
|
test(`unalias errors if alias not found`, async () => { |
|
await script(shell) |
|
.then(shell.env({ logLevel: "error" })) |
|
.then( |
|
shell.scriptOutputContains( |
|
getStderr(shell.call("fnm", ["unalias", "lts"])), |
|
"'Requested alias lts not found'" |
|
) |
|
) |
|
.takeSnapshot(shell) |
|
.execute(shell) |
|
}) |
|
|
|
test(`can alias the system node`, async () => { |
|
await script(shell) |
|
.then(shell.env({})) |
|
.then(shell.call("fnm", ["alias", "system", "my_system"])) |
|
.then( |
|
shell.scriptOutputContains(shell.call("fnm", ["ls"]), "my_system") |
|
) |
|
.then(shell.call("fnm", ["alias", "system", "default"])) |
|
.then(shell.call("fnm", ["alias", "my_system", "my_system2"])) |
|
.then( |
|
shell.scriptOutputContains(shell.call("fnm", ["ls"]), "my_system2") |
|
) |
|
.then( |
|
shell.scriptOutputContains( |
|
shell.call("fnm", ["use", "my_system"]), |
|
"'Bypassing fnm'" |
|
) |
|
) |
|
.then(shell.call("fnm", ["unalias", "my_system"])) |
|
.then( |
|
shell.scriptOutputContains( |
|
getStderr(shell.call("fnm", ["use", "my_system"])), |
|
"'Requested version my_system is not currently installed'" |
|
) |
|
) |
|
.takeSnapshot(shell) |
|
.execute(shell) |
|
}) |
|
|
|
test(`aliasing versions`, async () => { |
|
const installedVersions = shell.call("fnm", ["ls"]) |
|
await script(shell) |
|
.then(shell.env({})) |
|
.then(shell.call("fnm", ["install", "6.11.3"])) |
|
.then(shell.call("fnm", ["install", "8.11.3"])) |
|
.then(shell.call("fnm", ["alias", "8.11", "oldie"])) |
|
.then(shell.call("fnm", ["alias", "6", "older"])) |
|
.then(shell.call("fnm", ["default", "older"])) |
|
.then( |
|
shell.scriptOutputContains( |
|
shell.scriptOutputContains(installedVersions, "8.11.3"), |
|
"oldie" |
|
) |
|
) |
|
.then( |
|
shell.scriptOutputContains( |
|
shell.scriptOutputContains(installedVersions, "6.11.3"), |
|
"older" |
|
) |
|
) |
|
.then(shell.call("fnm", ["use", "older"])) |
|
.then(testNodeVersion(shell, "v6.11.3")) |
|
.then(shell.call("fnm", ["use", "oldie"])) |
|
.then(testNodeVersion(shell, "v8.11.3")) |
|
.then(shell.call("fnm", ["use", "default"])) |
|
.then(testNodeVersion(shell, "v6.11.3")) |
|
.takeSnapshot(shell) |
|
.execute(shell) |
|
}) |
|
}) |
|
}
|
|
|