subplot 0.4.3

tools for specifying, documenting, and implementing automated acceptance tests for systems and software
Documentation
# Bindings for the runcmd steplibrary

- given: helper script {script} for runcmd
  impl:
    python:
      function: runcmd_helper_script
    rust:
      function: subplotlib::steplibrary::runcmd::helper_script
  types:
    script: file

- given: srcdir is in the PATH
  impl:
    python:
      function: runcmd_helper_srcdir_path
    rust:
      function: subplotlib::steplibrary::runcmd::helper_srcdir_path

- when: I run {argv0}{args:text}
  impl:
    python:
      function: runcmd_step
    rust:
      function: subplotlib::steplibrary::runcmd::run

- when: I run, in {dirname}, {argv0}{args:text}
  impl:
    python:
      function: runcmd_step_in
    rust:
      function: subplotlib::steplibrary::runcmd::run_in

- when: I try to run {argv0}{args:text}
  impl:
    python:
      function: runcmd_try_to_run
    rust:
      function: subplotlib::steplibrary::runcmd::try_to_run

- when: I try to run, in {dirname}, {argv0}{args:text}
  impl:
    python:
      function: runcmd_try_to_run_in
    rust:
      function: subplotlib::steplibrary::runcmd::try_to_run_in

# Steps to examine exit code of latest command.

- then: exit code is {exit}
  impl:
    python:
      function: runcmd_exit_code_is
    rust:
      function: subplotlib::steplibrary::runcmd::exit_code_is
  types:
    exit: int

- then: exit code is not {exit}
  impl:
    python:
      function: runcmd_exit_code_is_not
    rust:
      function: subplotlib::steplibrary::runcmd::exit_code_is_not
  types:
    exit: int

- then: command is successful
  impl:
    python:
      function: runcmd_exit_code_is_zero
    rust:
      function: subplotlib::steplibrary::runcmd::exit_code_is_zero

- then: command fails
  impl:
    python:
      function: runcmd_exit_code_is_nonzero
    rust:
      function: subplotlib::steplibrary::runcmd::exit_code_is_nonzero

# Steps to examine stdout/stderr for exact content.

- then: stdout is exactly "{text:text}"
  impl:
    python:
      function: runcmd_stdout_is
    rust:
      function: subplotlib::steplibrary::runcmd::stdout_is

- then: 'stdout isn''t exactly "{text:text}"'
  impl:
    python:
      function: runcmd_stdout_isnt
    rust:
      function: subplotlib::steplibrary::runcmd::stdout_isnt

- then: stderr is exactly "{text:text}"
  impl:
    python:
      function: runcmd_stderr_is
    rust:
      function: subplotlib::steplibrary::runcmd::stderr_is

- then: 'stderr isn''t exactly "{text:text}"'
  impl:
    python:
      function: runcmd_stderr_isnt
    rust:
      function: subplotlib::steplibrary::runcmd::stderr_isnt

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

- then: stdout contains "{text:text}"
  impl:
    python:
      function: runcmd_stdout_contains
    rust:
      function: subplotlib::steplibrary::runcmd::stdout_contains

- then: 'stdout doesn''t contain "{text:text}"'
  impl:
    python:
      function: runcmd_stdout_doesnt_contain
    rust:
      function: subplotlib::steplibrary::runcmd::stdout_doesnt_contain

- then: stderr contains "{text:text}"
  impl:
    python:
      function: runcmd_stderr_contains
    rust:
      function: subplotlib::steplibrary::runcmd::stderr_contains

- then: 'stderr doesn''t contain "{text:text}"'
  impl:
    python:
      function: runcmd_stderr_doesnt_contain
    rust:
      function: subplotlib::steplibrary::runcmd::stderr_doesnt_contain

# Steps to match stdout/stderr against regular expressions.

- then: stdout matches regex {regex:text}
  impl:
    python:
      function: runcmd_stdout_matches_regex
    rust:
      function: subplotlib::steplibrary::runcmd::stdout_matches_regex

- then: stdout doesn't match regex {regex:text}
  impl:
    python:
      function: runcmd_stdout_doesnt_match_regex
    rust:
      function: subplotlib::steplibrary::runcmd::stdout_doesnt_match_regex

- then: stderr matches regex {regex:text}
  impl:
    python:
      function: runcmd_stderr_matches_regex
    rust:
      function: subplotlib::steplibrary::runcmd::stderr_matches_regex

- then: stderr doesn't match regex {regex:text}
  impl:
    python:
      function: runcmd_stderr_doesnt_match_regex
    rust:
      function: subplotlib::steplibrary::runcmd::stderr_doesnt_match_regex