Skip to content

Commit

Permalink
Merge pull request sstephenson#243 from amilkh/add-examples
Browse files Browse the repository at this point in the history
docs: add /docs/examples with a sample .bats test
  • Loading branch information
sublimino authored Apr 26, 2020
2 parents 75e3f45 + b6ce391 commit 29e899d
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,8 @@ process.
For more details about how Bats evaluates test files, see [Bats Evaluation
Process][bats-eval] on the wiki.

For sample test files, see [examples](/docs/examples).

[bats-eval]: https://github.com/bats-core/bats-core/wiki/Bats-Evaluation-Process

### `run`: Test other commands
Expand Down
6 changes: 6 additions & 0 deletions docs/examples/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Examples

This directory contains example .bats files.
See the [bats-core wiki][examples] for more details.

[examples]: (/bats-core/bats-core/wiki/Examples)
16 changes: 16 additions & 0 deletions docs/examples/package-tarball
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash

# "unofficial" bash strict mode
# See: http://redsymbol.net/articles/unofficial-bash-strict-mode
set -o errexit # Exit when simple command fails 'set -e'
set -o errtrace # Exit on error inside any functions or subshells.
set -o nounset # Trigger error when expanding unset variables 'set -u'
set -o pipefail # Do not hide errors within pipes 'set -o pipefail'
set -o xtrace # Display expanded command and arguments 'set -x'
IFS=$'\n\t' # Split words on \n\t rather than spaces

main() {
tar -czf "$dst_tarball" -C "$src_dir" .
}

main "$@"
47 changes: 47 additions & 0 deletions docs/examples/package-tarball.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/usr/bin/env bats

setup() {
export dst_tarball="${BATS_TMPDIR}/dst.tar.gz"
export src_dir="${BATS_TMPDIR}/src_dir"

rm -rf "${dst_tarball}" "${src_dir}"
mkdir "${src_dir}"
touch "${src_dir}"/{a,b,c}
}

main() {
bash "${BATS_TEST_DIRNAME}"/package-tarball
}

@test 'fail when \$src_dir and \$dst_tarball are unbound' {
unset src_dir dst_tarball

run main
[ "${status}" -ne 0 ]
}

@test 'fail when \$src_dir is a non-existent directory' {
src_dir='not-a-dir'

run main
[ "${status}" -ne 0 ]
}

@test 'pass when \$src_dir directory is empty' {
rm -rf "${src_dir:?}/*"

run main
echo "$output"
[ "${status}" -eq 0 ]
}

@test 'files in \$src_dir are added to tar archive' {
run main
[ "${status}" -eq 0 ]

run tar tf "$dst_tarball"
[ "${status}" -eq 0 ]
[[ "${output}" =~ a ]]
[[ "${output}" =~ b ]]
[[ "${output}" =~ c ]]
}

0 comments on commit 29e899d

Please sign in to comment.