From 6d7ad78dd405f3f1f21b905483f7b85a95b5b5b1 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sun, 22 Aug 2021 13:22:59 +0100 Subject: share: Make runcmd.yaml properly polyglot and common Signed-off-by: Daniel Silverstone --- share/common/lib/runcmd.yaml | 185 +++++++++++++++++++++++++++++++++++++++++++ share/python/lib/runcmd.md | 2 +- share/python/lib/runcmd.py | 6 +- share/python/lib/runcmd.yaml | 135 ------------------------------- share/rust/lib/runcmd.yaml | 141 --------------------------------- 5 files changed, 189 insertions(+), 280 deletions(-) create mode 100644 share/common/lib/runcmd.yaml delete mode 100644 share/python/lib/runcmd.yaml delete mode 100644 share/rust/lib/runcmd.yaml (limited to 'share') diff --git a/share/common/lib/runcmd.yaml b/share/common/lib/runcmd.yaml new file mode 100644 index 0000000..bde2f69 --- /dev/null +++ b/share/common/lib/runcmd.yaml @@ -0,0 +1,185 @@ +# 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 (?P\S+)(?P.*) + regex: true + impl: + python: + function: runcmd_step + rust: + function: subplotlib::steplibrary::runcmd::run + +- when: I run, in (?P\S+), (?P\S+)(?P.*) + regex: true + impl: + python: + function: runcmd_step_in + rust: + function: subplotlib::steplibrary::runcmd::run_in + +- when: I try to run (?P\S+)(?P.*) + regex: true + impl: + python: + function: runcmd_try_to_run + rust: + function: subplotlib::steplibrary::runcmd::try_to_run + +- when: I try to run, in (?P\S+), (?P\S+)(?P.*) + regex: true + 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 "(?P.*)" + regex: true + impl: + python: + function: runcmd_stdout_is + rust: + function: subplotlib::steplibrary::runcmd::stdout_is + +- then: 'stdout isn''t exactly "(?P.*)"' + regex: true + impl: + python: + function: runcmd_stdout_isnt + rust: + function: subplotlib::steplibrary::runcmd::stdout_isnt + +- then: stderr is exactly "(?P.*)" + regex: true + impl: + python: + function: runcmd_stderr_is + rust: + function: subplotlib::steplibrary::runcmd::stderr_is + +- then: 'stderr isn''t exactly "(?P.*)"' + regex: true + impl: + python: + function: runcmd_stderr_isnt + rust: + function: subplotlib::steplibrary::runcmd::stderr_isnt + +# Steps to examine stdout/stderr for sub-strings. + +- then: stdout contains "(?P.*)" + regex: true + impl: + python: + function: runcmd_stdout_contains + rust: + function: subplotlib::steplibrary::runcmd::stdout_contains + +- then: 'stdout doesn''t contain "(?P.*)"' + regex: true + impl: + python: + function: runcmd_stdout_doesnt_contain + rust: + function: subplotlib::steplibrary::runcmd::stdout_doesnt_contain + +- then: stderr contains "(?P.*)" + regex: true + impl: + python: + function: runcmd_stderr_contains + rust: + function: subplotlib::steplibrary::runcmd::stderr_contains + +- then: 'stderr doesn''t contain "(?P.*)"' + regex: true + 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 (?P.*) + regex: true + impl: + python: + function: runcmd_stdout_matches_regex + rust: + function: subplotlib::steplibrary::runcmd::stdout_matches_regex + +- then: stdout doesn't match regex (?P.*) + regex: true + impl: + python: + function: runcmd_stdout_doesnt_match_regex + rust: + function: subplotlib::steplibrary::runcmd::stdout_doesnt_match_regex + +- then: stderr matches regex (?P.*) + regex: true + impl: + python: + function: runcmd_stderr_matches_regex + rust: + function: subplotlib::steplibrary::runcmd::stderr_matches_regex + +- then: stderr doesn't match regex (?P.*) + regex: true + impl: + python: + function: runcmd_stderr_doesnt_match_regex + rust: + function: subplotlib::steplibrary::runcmd::stderr_doesnt_match_regex diff --git a/share/python/lib/runcmd.md b/share/python/lib/runcmd.md index 5f99b2a..f28ec2a 100644 --- a/share/python/lib/runcmd.md +++ b/share/python/lib/runcmd.md @@ -204,7 +204,7 @@ title: Acceptance criteria for the lib/runcmd Subplot library author: The Subplot project template: python bindings: -- runcmd.yaml +- lib/runcmd.yaml - runcmd_test.yaml - files.yaml functions: diff --git a/share/python/lib/runcmd.py b/share/python/lib/runcmd.py index da6c3fd..c4a6a12 100644 --- a/share/python/lib/runcmd.py +++ b/share/python/lib/runcmd.py @@ -93,10 +93,10 @@ def runcmd_helper_srcdir_path(ctx): # Step: This creates a helper script. -def runcmd_helper_script(ctx, filename=None): +def runcmd_helper_script(ctx, script=None): get_file = globals()["get_file"] - with open(filename, "wb") as f: - f.write(get_file(filename)) + with open(script, "wb") as f: + f.write(get_file(script)) # diff --git a/share/python/lib/runcmd.yaml b/share/python/lib/runcmd.yaml deleted file mode 100644 index a01cfac..0000000 --- a/share/python/lib/runcmd.yaml +++ /dev/null @@ -1,135 +0,0 @@ -# Steps to run commands. - -- given: helper script {filename} for runcmd - impl: - python: - function: runcmd_helper_script - -- given: srcdir is in the PATH - impl: - python: - function: runcmd_helper_srcdir_path - -- when: I run (?P\S+)(?P.*) - regex: true - impl: - python: - function: runcmd_step - -- when: I run, in (?P\S+), (?P\S+)(?P.*) - regex: true - impl: - python: - function: runcmd_step_in - -- when: I try to run (?P\S+)(?P.*) - regex: true - impl: - python: - function: runcmd_try_to_run - -- when: I try to run, in (?P\S+), (?P\S+)(?P.*) - regex: true - impl: - python: - function: 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 - -- then: exit code is not {exit} - impl: - python: - function: runcmd_exit_code_is_not - -- then: command is successful - impl: - python: - function: runcmd_exit_code_is_zero - -- then: command fails - impl: - python: - function: runcmd_exit_code_is_nonzero - -# Steps to examine stdout/stderr for exact content. - -- then: stdout is exactly "(?P.*)" - regex: true - impl: - python: - function: runcmd_stdout_is - -- then: 'stdout isn''t exactly "(?P.*)"' - regex: true - impl: - python: - function: runcmd_stdout_isnt - -- then: stderr is exactly "(?P.*)" - regex: true - impl: - python: - function: runcmd_stderr_is - -- then: 'stderr isn''t exactly "(?P.*)"' - regex: true - impl: - python: - function: runcmd_stderr_isnt - -# Steps to examine stdout/stderr for sub-strings. - -- then: stdout contains "(?P.*)" - regex: true - impl: - python: - function: runcmd_stdout_contains - -- then: 'stdout doesn''t contain "(?P.*)"' - regex: true - impl: - python: - function: runcmd_stdout_doesnt_contain - -- then: stderr contains "(?P.*)" - regex: true - impl: - python: - function: runcmd_stderr_contains - -- then: 'stderr doesn''t contain "(?P.*)"' - regex: true - impl: - python: - function: runcmd_stderr_doesnt_contain - -# Steps to match stdout/stderr against regular expressions. - -- then: stdout matches regex (?P.*) - regex: true - impl: - python: - function: runcmd_stdout_matches_regex - -- then: stdout doesn't match regex (?P.*) - regex: true - impl: - python: - function: runcmd_stdout_doesnt_match_regex - -- then: stderr matches regex (?P.*) - regex: true - impl: - python: - function: runcmd_stderr_matches_regex - -- then: stderr doesn't match regex (?P.*) - regex: true - impl: - python: - function: runcmd_stderr_doesnt_match_regex diff --git a/share/rust/lib/runcmd.yaml b/share/rust/lib/runcmd.yaml deleted file mode 100644 index 1043876..0000000 --- a/share/rust/lib/runcmd.yaml +++ /dev/null @@ -1,141 +0,0 @@ -# Bindings for the runcmd steplibrary - -- given: helper script {script} for runcmd - impl: - rust: - function: subplotlib::steplibrary::runcmd::helper_script - types: - script: file - -- given: srcdir is in the PATH - impl: - rust: - function: subplotlib::steplibrary::runcmd::helper_srcdir_path - -- when: I run (?P\S+)(?P.*) - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::run - -- when: I run, in (?P\S+), (?P\S+)(?P.*) - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::run_in - -- when: I try to run (?P\S+)(?P.*) - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::try_to_run - -- when: I try to run, in (?P\S+), (?P\S+)(?P.*) - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::try_to_run_in - -# Steps to examine exit code of latest command. - -- then: exit code is {exit} - impl: - rust: - function: subplotlib::steplibrary::runcmd::exit_code_is - types: - exit: int - -- then: exit code is not {exit} - impl: - rust: - function: subplotlib::steplibrary::runcmd::exit_code_is_not - types: - exit: int - -- then: command is successful - impl: - rust: - function: subplotlib::steplibrary::runcmd::exit_code_is_zero - -- then: command fails - impl: - rust: - function: subplotlib::steplibrary::runcmd::exit_code_is_nonzero - -# Steps to examine stdout/stderr for exact content. - -- then: stdout is exactly "(?P.*)" - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stdout_is - -- then: 'stdout isn''t exactly "(?P.*)"' - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stdout_isnt - -- then: stderr is exactly "(?P.*)" - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stderr_is - -- then: 'stderr isn''t exactly "(?P.*)"' - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stderr_isnt - -# Steps to examine stdout/stderr for sub-strings. - -- then: stdout contains "(?P.*)" - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stdout_contains - -- then: 'stdout doesn''t contain "(?P.*)"' - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stdout_doesnt_contain - -- then: stderr contains "(?P.*)" - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stderr_contains - -- then: 'stderr doesn''t contain "(?P.*)"' - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stderr_doesnt_contain - -# Steps to match stdout/stderr against regular expressions. - -- then: stdout matches regex (?P.*) - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stdout_matches_regex - -- then: stdout doesn't match regex (?P.*) - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stdout_doesnt_match_regex - -- then: stderr matches regex (?P.*) - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stderr_matches_regex - -- then: stderr doesn't match regex (?P.*) - regex: true - impl: - rust: - function: subplotlib::steplibrary::runcmd::stderr_doesnt_match_regex -- cgit v1.2.1