diff options
Diffstat (limited to 'jt2.bind')
-rw-r--r-- | jt2.bind | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/jt2.bind b/jt2.bind new file mode 100644 index 0000000..b7dfd0a --- /dev/null +++ b/jt2.bind @@ -0,0 +1,72 @@ +# Bind steps to functions that implement them. Each step is +# represented as a dict in a list with specific keys in the dict. +# +# given/when/then: specifies the keyword and a regexp that matches the +# step text, and captures parts of the step, using special syntax to +# name each match +# +# args: specifies type of each named match (argument), with type names +# being str (any text), int, pathname, ... +# +# function: name of function to be called, which will get the named +# arguments as parameters, in the order given in the regexp; function +# should return a value that indicates success or failure, and can +# contain values with more detail. Might be Rust enums or Python +# dict objects. +# +# capture_result: if set to true, a successful result is stored for +# inspection by a later step. It's a parse-time error is the step is +# not inspected by a later step in the scenario. Failure result still +# fails the step. +# +# use_captured_result: if set to true, the captured result is given to +# the function in a specific way, which depends on the language used +# to implement the function (e.g., keyword arg in Python). +# +# set_it: a specific argument captured from the step is remembered as +# "it". +# +# it: expects a value for "it" to have been rememered by a previous +# step, and the value must be of the specified type. If it isn't, +# that's a parsing-time error. + +- given: an empty journal repository + function: create_empty_git_repository + +- then: there is only (filename:\S+) in the journal repository + args: + filename: pathname + function: only_filename + +- when: I run (cmd:jt .+) + args: + cmd: {type: str, style: literal} + capture_result: true + function: run_jt + +- then: (filename:\S+) exists + args: + filename: pathname + set_it: filename + function: exists + +- then: it contains "(text:.+)" + args: + text: str + it: pathname + function: file_contains + +- then: it fails + use_captured_result: true + function: shell_command_failed + +- then: it fails with (error:.+) + args: + error: str + use_captured_result: true + function: stderr_contains + +- given: the date is (date:\d+-\d+-\d+) + args: + date: str + function: set_date |