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.
52 lines
1.4 KiB
52 lines
1.4 KiB
import { dedent } from "ts-dedent" |
|
import { define, ScriptLine } from "./types.js" |
|
|
|
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 |
|
) |
|
` |
|
}, |
|
}), |
|
}
|
|
|