Skip to content

Commit

Permalink
Add fail() from bats-assert
Browse files Browse the repository at this point in the history
  • Loading branch information
ztombol committed Mar 22, 2016
1 parent 028251d commit 7649d49
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Added

- `npm` support
- Reporting arbitrary failures with `fail()` (moved from `bats-assert`)

### Changed

Expand Down
31 changes: 31 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ them. Version numbering continues where `bats-core` left off.*
test helper libraries written for [Bats][bats].

Features:
- [error reporting](#error-reporting)
- [output formatting](#output-formatting)

See the [shared documentation][bats-docs] to learn how to install and
Expand All @@ -27,6 +28,36 @@ learn about its internals see the developer documentation in the [source
files](src).


## Error reporting

### `fail`

Display an error message and fail. This function provides a convenient
way to report failure in arbitrary situations. You can use it to
implement your own helpers when the ones available do not meet your
needs. Other functions use it internally as well.

```bash
@test 'fail()' {
fail 'this test always fails'
}
```

The message can also be specified on the standard input.

```bash
@test 'fail() with pipe' {
echo 'this test always fails' | fail
}
```

This function always fails and simply outputs the given message.

```
this test always fails
```


## Output formatting

Many test helpers need to produce human readable output. This library
Expand Down
1 change: 1 addition & 0 deletions load.bash
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
source "$(dirname "${BASH_SOURCE[0]}")/src/output.bash"
source "$(dirname "${BASH_SOURCE[0]}")/src/error.bash"
41 changes: 41 additions & 0 deletions src/error.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#
# bats-support - Supporting library for Bats test helpers
#
# Written in 2016 by Zoltan Tombol <zoltan dot tombol at gmail dot com>
#
# To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to the
# public domain worldwide. This software is distributed without any
# warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication
# along with this software. If not, see
# <http://creativecommons.org/publicdomain/zero/1.0/>.
#

#
# error.bash
# ----------
#
# Functions implementing error reporting. Used by public helper
# functions or test suits directly.
#

# Fail and display a message. When no parameters are specified, the
# message is read from the standard input. Other functions use this to
# report failure.
#
# Globals:
# none
# Arguments:
# $@ - [=STDIN] message
# Returns:
# 1 - always
# Inputs:
# STDIN - [=$@] message
# Outputs:
# STDERR - message
fail() {
(( $# == 0 )) && batslib_err || batslib_err "$@"
return 1
}
16 changes: 16 additions & 0 deletions test/51-error-10-fail.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bats

load test_helper

@test 'fail() <message>: returns 1 and displays <message>' {
run fail 'message'
[ "$status" -eq 1 ]
[ "$output" == 'message' ]
}

@test 'fail(): reads <message> from STDIN' {
run bash -c "source '${TEST_MAIN_DIR}/load.bash'
echo 'message' | fail"
[ "$status" -eq 1 ]
[ "$output" == 'message' ]
}

0 comments on commit 7649d49

Please sign in to comment.