- given: file {filename}
  function: files_create_from_embedded
  types:
    filename: file

- given: file {filename_on_disk} from {embedded_filename}
  function: files_create_from_embedded_with_other_name
  types:
    embedded_filename: file

- given: file {filename} has modification time {year}-{month}-{day} {hour}:{minute}:{second}
  function: files_touch_with_timestamp

- when: I write "(?P<text>.*)" to file (?P<filename>\S+)
  regex: true
  function: files_create_from_text

- when: I remember metadata for file {filename}
  function: files_remember_metadata

- when: I touch file {filename}
  function: files_touch

- then: file {filename} exists
  function: files_file_exists

- then: file {filename} does not exist
  function: files_file_does_not_exist

- then: only files (?P<filenames>.+) exist
  function: files_only_these_exist
  regex: true

- then: file (?P<filename>\S+) contains "(?P<data>.*)"
  regex: true
  function: files_file_contains

- then: file (?P<filename>\S+) matches regex /(?P<regex>.*)/
  regex: true
  function: files_file_matches_regex

- then: file (?P<filename>\S+) matches regex "(?P<regex>.*)"
  regex: true
  function: files_file_matches_regex

- then: files {filename1} and {filename2} match
  function: files_match

- then: file {filename} has same metadata as before
  function: files_has_remembered_metadata

- then: file {filename} has different metadata from before
  function: files_has_different_metadata

- then: file {filename} has changed from before
  function: files_has_different_metadata

- then: file {filename} has a very recent modification time
  function: files_mtime_is_recent

- then: file {filename} has a very old modification time
  function: files_mtime_is_ancient
