Skip to content

Commit

Permalink
Allow CliktCommand.test to take a vararg
Browse files Browse the repository at this point in the history
For convenience and to better visualize separate options, allow to write

    test("--foo", "--bar")

in addition to

    test("--foo --bar")

This requires to remove the `test(argv: Array<String>, ...)` overload as
that would have the same JVM function signature.
  • Loading branch information
sschuberth committed Sep 7, 2023
1 parent a4a15bb commit 92a8dd0
Showing 1 changed file with 2 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,15 @@ data class CliktCommandTestResult(
* @param height The height of the terminal
*/
fun CliktCommand.test(
argv: String,
vararg argv: String,
stdin: String = "",
envvars: Map<String, String> = emptyMap(),
includeSystemEnvvars: Boolean = false,
ansiLevel: AnsiLevel = AnsiLevel.NONE,
width: Int = 79,
height: Int = 24,
): CliktCommandTestResult {
val argvArray = shlex("test", argv, null)
val argvArray = argv.flatMap { shlex("test", it, null) }
return test(argvArray, stdin, envvars, includeSystemEnvvars, ansiLevel, width, height)
}

Expand Down Expand Up @@ -76,32 +76,6 @@ fun CliktCommand.test(
ansiLevel: AnsiLevel = AnsiLevel.NONE,
width: Int = 79,
height: Int = 24,
): CliktCommandTestResult =
test(argv.toTypedArray(), stdin, envvars, includeSystemEnvvars, ansiLevel, width, height)

/**
* Test this command, returning a result that captures the output and result status code.
*
* Note that only output printed with [echo][CliktCommand.echo] will be captured. Anything printed with [print] or
* [println] is not.
*
* @param argv The command line to send to the command
* @param stdin Content of stdin that will be read by prompt options. Multiple inputs should be separated by `\n`.
* @param envvars A map of environment variable name to value for envvars that can be read by the command
* @param includeSystemEnvvars Set to true to include the environment variables from the system in addition to those
* defined in [envvars]
* @param ansiLevel Defaults to no colored output; set to [AnsiLevel.TRUECOLOR] to include ANSI codes in the output.
* @param width The width of the terminal, used to wrap text
* @param height The height of the terminal
*/
fun CliktCommand.test(
argv: Array<String>,
stdin: String = "",
envvars: Map<String, String> = emptyMap(),
includeSystemEnvvars: Boolean = false,
ansiLevel: AnsiLevel = AnsiLevel.NONE,
width: Int = 79,
height: Int = 24,
): CliktCommandTestResult {
var exitCode = 0
val recorder = TerminalRecorder(ansiLevel, width, height)
Expand Down

0 comments on commit 92a8dd0

Please sign in to comment.