mirror of
https://github.com/aminya/setup-cpp
synced 2024-11-30 21:22:30 +08:00
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
|
import { join } from "path"
|
||
|
import spawn from "cross-spawn"
|
||
|
import { pathExists } from "path-exists"
|
||
|
import { addExeExt } from "patha"
|
||
|
import which from "which"
|
||
|
import { setupBrew } from "../src/index.js"
|
||
|
|
||
|
jest.setTimeout(300000)
|
||
|
describe("setup-brew", () => {
|
||
|
if (process.platform === "win32") {
|
||
|
it.skip("should setup brew", () => {})
|
||
|
return
|
||
|
}
|
||
|
it("should setup brew", async () => {
|
||
|
const installInfo = await setupBrew()
|
||
|
await testBin("brew", ["--version"], installInfo?.binDir)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
async function testBin(
|
||
|
name: string,
|
||
|
args: string[] | null = ["--version"],
|
||
|
binDir: string | undefined = undefined,
|
||
|
) {
|
||
|
try {
|
||
|
let bin = name
|
||
|
if (typeof binDir === "string") {
|
||
|
console.log(`Testing the existence of ${binDir}`)
|
||
|
expect(binDir).toBeDefined()
|
||
|
expect(binDir).not.toHaveLength(0)
|
||
|
expect(await pathExists(binDir)).toBeTruthy()
|
||
|
bin = join(binDir, addExeExt(name))
|
||
|
}
|
||
|
|
||
|
if (args !== null) {
|
||
|
console.log(`Running ${bin} ${args.join(" ")}`)
|
||
|
const { status } = spawn.sync(bin, args, { stdio: "inherit" })
|
||
|
expect(status).toBe(0)
|
||
|
}
|
||
|
|
||
|
expect((await which(name, { nothrow: true }))?.includes(bin))
|
||
|
} catch (err) {
|
||
|
throw new Error(`Failed to test bin ${name}: ${err}`)
|
||
|
}
|
||
|
}
|