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.

53 lines
1.4 KiB

import dedent from "ts-dedent"
import { define, ScriptLine } from "./types"
export type HasExpectCommandOutput = {
hasCommandOutput(
script: ScriptLine,
output: string,
message: string
): ScriptLine
}
export const cmdExpectCommandOutput = {
bash: define<HasExpectCommandOutput>({
hasCommandOutput(script, output, message) {
return dedent`
if [ "$(${script})" != "${output}" ]; then
echo "Expected ${message} to be ${output}. Got $(${script})"
exit 1
fi
`
},
}),
fish: define<HasExpectCommandOutput>({
hasCommandOutput(script, output, message) {
return dedent`
set ____test____ (${script})
if test "$____test____" != "${output}"
echo "Expected ${message} to be ${output}. Got $____test____"
exit 1
end
`
},
}),
powershell: define<HasExpectCommandOutput>({
hasCommandOutput(script, output, message) {
return dedent`
if ( "$(${script})" -ne "${output}" ) { echo "Expected ${message} to be ${output}. Got $(${script})"; exit 1 }
`
},
}),
wincmd: define<HasExpectCommandOutput>({
hasCommandOutput(script, output, message) {
return dedent`
${script} | findstr ${output}
if %errorlevel% neq 0 (
echo Expected ${message} to be ${output}
exit 1
)
`
},
}),
}