# Steps to run commands.

- given: helper script {filename} for runcmd
  function: runcmd_helper_script

- given: srcdir is in the PATH
  function: runcmd_helper_srcdir_path

- when: I run (?P<argv0>\S+)(?P<args>.*)
  regex: true
  function: runcmd_step

- when: I try to run (?P<argv0>\S+)(?P<args>.*)
  regex: true
  function: runcmd_try_to_run

# Steps to examine exit code of latest command.

- then: exit code is {exit}
  function: runcmd_exit_code_is

- then: exit code is not {exit}
  function: runcmd_exit_code_is_not

- then: command is successful
  function: runcmd_exit_code_is_zero

- then: command fails
  function: runcmd_exit_code_is_nonzero

# Steps to examine stdout/stderr for exact content.

- then: stdout is exactly "(?P<text>.*)"
  regex: true
  function: runcmd_stdout_is

- then: "stdout isn't exactly \"(?P<text>.*)\""
  regex: true
  function: runcmd_stdout_isnt

- then: stderr is exactly "(?P<text>.*)"
  regex: true
  function: runcmd_stderr_is

- then: "stderr isn't exactly \"(?P<text>.*)\""
  regex: true
  function: runcmd_stderr_isnt

# Steps to examine stdout/stderr for sub-strings.

- then: stdout contains "(?P<text>.*)"
  regex: true
  function: runcmd_stdout_contains

- then: "stdout doesn't contain \"(?P<text>.*)\""
  regex: true
  function: runcmd_stdout_doesnt_contain

- then: stderr contains "(?P<text>.*)"
  regex: true
  function: runcmd_stderr_contains

- then: "stderr doesn't contain \"(?P<text>.*)\""
  regex: true
  function: runcmd_stderr_doesnt_contain

# Steps to match stdout/stderr against regular expressions.

- then: stdout matches regex (?P<regex>.*)
  regex: true
  function: runcmd_stdout_matches_regex

- then: stdout doesn't match regex (?P<regex>.*)
  regex: true
  function: runcmd_stdout_doesnt_match_regex

- then: stderr matches regex (?P<regex>.*)
  regex: true
  function: runcmd_stderr_matches_regex

- then: stderr doesn't match regex (?P<regex>.*)
  regex: true
  function: runcmd_stderr_doesnt_match_regex
