Shell Plugin
The plugin provides functionality to execute commands via Shell.
Installation
- 
Copy the below line to
dependenciessection of the projectbuild.gradlefilePlease make sure to use the same version for all VIVIDUS dependencies. Example 1. build.gradleimplementation(group: 'org.vividus', name: 'vividus-plugin-shell') - 
If the project was imported to the IDE before adding new dependency, re-generate the configuration files for the used IDE and then refresh the project in the used IDE.
 
Properties
You are allowed to define a custom shell using properties:
- 
shell.<shell-key>.executable- The executable file. - 
shell.<shell-key>.option- The command option. 
Where <shell-key> is the key which will be used to select a shell for the commands execution.
shell.ksh.executable=ksh
shell.ksh.option=-c
| Name | Acceptable values | Default | Description | 
|---|---|---|---|
  | 
<string>  | 
The key of the shell which will be used for commands execution. By default, VIVIDUS picks the shell depending on the operating system:
.  Out of the box VIVIDUS supports   | 
|
  | 
The timeout in ISO-8601 Durations format.  | 
PT5M  | 
The timeout duration to wait for command execution finish.  | 
Steps
Execute shell commands
When I execute command `$command` and save result to $scopes variable `$variableName`
- 
$command- The command to execute, it should follow the syntax of the currently active shell. - 
$variableName- The variable name to store the command execution results. The data will be stored under the following keys:- 
$variableName.stdout- the content of the command standard output stream; - 
$variableName.stderr- the content of the command standard error stream; - 
$variableName.exit-code- the exit code of the command. 
 - 
 
When I execute command `echo 'Hello World!'` and save result to scenario variable `result`
Then `${result.stdout}` is equal to `Hello World!`
Then `${result.stderr}` is equal to ``
Then `${result.exit-code}` is equal to `0`
| The saved stdout/stderr are limited to ~2 billion characters. But keep in mind depending on run configuration and environment it’s possible to hit memory limits before reaching described output limits. | 
Execute shell commands using specific shell
When I execute command `$command` using $shellName and save result to $scopes variable `$variableName`
- 
$command- The command to execute, it should follow the syntax of the shell defined under theshellKey. - 
$shellKey- The key of the shell which will be used for commands execution. - 
$variableName- The variable name to store the command execution results. The data will be stored under the following keys:- 
$variableName.stdout- the content of the command standard output stream; - 
$variableName.stderr- the content of the command standard error stream; - 
$variableName.exit-code- the exit code of the command. 
 - 
 
When I execute command `echo 'Hello World!'` using PowerShell and save result to scenario variable `result`
Then `${result.stdout}` is equal to `Hello World!`
Then `${result.stderr}` is equal to ``
Then `${result.exit-code}` is equal to `0`
| The saved stdout/stderr are limited to ~2 billion characters. But keep in mind depending on run configuration and environment it’s possible to hit memory limits before reaching described output limits. |