1
0
mirror of https://github.com/sstephenson/bats.git synced 2024-09-29 20:48:27 +02:00
Commit Graph

159 Commits

Author SHA1 Message Date
Nelo Wallus
cb434296c5 Add test harness for various library loading methods 2017-10-09 19:51:25 +02:00
Nelo Wallus
617e086a26 Allow sourcing of helper files from BATS_LIB_PATH
The existing functionality of load() is preserved:
    1. Load helper files in the same directory the current testfile
       resides in
    2. Load helper files by absolute path

Additionally an environment variable BATS_LIB_PATH can be defined to
be source helper files from.

If BATS_LIB_PATH is empty the following locations are used:
    1. $HOME/.bats/lib
       Allows users to manage helper libraries themselves, similar to
       python/ruby/...
    2. /usr/lib/bats
       Allows to install helper libraries via a package manager.
2017-10-09 19:51:21 +02:00
Mike Bland
1ed87ecb7f test/bats: Add fake tput to fix Alpine tests
The test cases that use the `-p` or `--pretty` flag would fail if `tput`
wasn't available (installed as part of the `ncurses` package). On
Alpine, `ncurses` isn't installed by default. This change ensures the
tests validate the expected behavior regardless of whether `tput` is
available.
2017-10-03 13:24:06 -07:00
Mike Bland
6ce148b9d2 Merge pull request #19 from agent-0028/harschware-tap_skip_test_fix
Transfer bats#142 - This commit corrects the problem of incorrect TAP format for skipped tests
2017-10-03 14:54:31 -04:00
Jason Grosz
eed991303b Add double quotes around $FIXTURE_ROOT 2017-10-03 13:30:35 -05:00
Jason Grosz
adf559ec40 Remove unnecessary assignment and blank line 2017-10-02 15:40:07 -05:00
Jason Grosz
d1f9165ba0 Reword skipped test fixtures for clarity
Separate "skip" from the test name (description) to be distinct from "skip" as part of the TAP Directive.
2017-10-02 15:40:07 -05:00
Mike Bland
b3e61911c1 Merge pull request #17 from agent-0028/rojkov-fix-head-util
Transfer bats#163 - Avoid undocumented usage of the head utility.
2017-10-02 13:03:51 -04:00
Jason Grosz
f953d774b7 Merge branch 'master' into rojkov-fix-head-util 2017-10-02 11:47:18 -05:00
Mike Bland
8538868563 Merge pull request #8 from bats-core/mbland-optimized
Fix macOS/Bash 3.2 breakage; eliminate subshells from exec-test, preprocess
2017-09-30 15:46:12 -04:00
Mike Bland
ebb192e036
Fix test failures due to unquoted variables
The four test cases updated in this commit were failing on my Windows
virtual machine because my username contains a space. Quoting the file
paths containing "$FIXTURE_ROOT" solved the problem.
2017-09-30 15:12:38 -04:00
Mike Bland
8c4a86d534
format-tap: Refactor summary to remove subshells
While the performance impact of these changes are in the noise under
macOS 10.12.3 on a on a MacBook Pro with a 2.9GHz Intel Core i5 CPU and
8GB 1867MHz DDR3 RAM, eliminating these subshells makes the code more
consistent.

I did try removing `buffer` to eliminate yet more subshells, but the
flickering of the output did prove annoying, so I'm not removing it.
2017-09-30 15:12:38 -04:00
Mike Bland
f5acd28612
bats-exec-suite: Count tests w/ BATS_TEST_PATTERN
Under Bash 3.2.57(1)-release and 4.4.12(1)-release on a MacBook Pro with
a 2.9GHz Intel Core i5 CPU and 8GB 1867MHz DDR3 RAM, this shaves off
O(0.16s) from the current test suite.

Before this change:

  46 tests, 0 failures

  real    0m3.541s
  user    0m2.125s
  sys     0m0.937s

After this change:

  real    0m3.372s
  user    0m2.031s
  sys     0m0.894s
2017-09-30 15:12:38 -04:00
Mike Bland
7bcbb2f3e9
bats: Don't pipe to cat for nonpretty output
Under Bash 3.2.57(1)-release and 4.4.12(1)-release on a MacBook Pro with
a 2.9GHz Intel Core i5 CPU and 8GB 1867MHz DDR3 RAM, this shaves off
O(0.04-0.05s) from the current test suite. Very minor, but it's a
straightforward change that may provide a minor-yet-noticeable effect on
Windows.

Before this change:

  46 tests, 0 failures

  real    0m3.588s
  user    0m2.171s
  sys     0m1.046s

After this change:

  real    0m3.538s
  user    0m2.119s
  sys     0m0.941s
2017-09-30 15:12:38 -04:00
Mike Bland
d4443adeb7
bash: Refactor expand_path
Under Bash 3.2.57(1)-release and 4.4.12(1)-release on a MacBook Pro with
a 2.9GHz Intel Core i5 CPU and 8GB 1867MHz DDR3 RAM, this shaves off
O(0.25s) from the current test suite.

Before the change:

  46 tests, 0 failures

  real    0m3.851s
  user    0m2.273s
  sys     0m1.166s

After the change:

  real    0m3.595s
  user    0m2.171s
  sys     0m1.048s
2017-09-30 15:12:38 -04:00
Mike Bland
daf76c27c1
bats: Convert abs_dirname to use printf -v
Under Bash 3.2.57(1)-release and 4.4.12(1)-release on a MacBook Pro with
a 2.9GHz Intel Core i5 CPU and 8GB 1867MHz DDR3 RAM, this shaves off
O(0.1s) from the current test suite.

Before the change:

  46 tests, 0 failures

  real    0m3.983s
  user    0m2.320s
  sys     0m1.241s

After the change:

  real    0m3.861s
  user    0m2.276s
  sys     0m1.174s
2017-09-30 15:12:38 -04:00
Mike Bland
cdc55ad7ea
bats: Refactor resolve_link, abs_dirname
Under Bash 3.2.57(1)-release and 4.4.12(1)-release on a MacBook Pro with
a 2.9GHz Intel Core i5 CPU and 8GB 1867MHz DDR3 RAM, this shaves off
O(0.4s) from the current test suite.

Before the change:

  46 tests, 0 failures

  real    0m4.392s
  user    0m2.489s
  sys     0m1.467s

After the change:

  real    0m3.980s
  user    0m2.312s
  sys     0m1.233s
2017-09-30 15:12:38 -04:00
Mike Bland
6beea07a0b
preprocess: Eliminate eval in subshell
This is part of the effort to improve performance by reducing the number
of command substitutions/subshells.

Under Bash 3.2.57(1)-release on a MacBook Pro with a 2.9GHz Intel Core
i5 CPU and 8GB 1867MHz DDR3 RAM, this shaves off O(0.15s) from the test
suite at the previous commit, but I anticipate this effect being
magnified on Windows platforms.
2017-09-30 15:12:38 -04:00
Mike Bland
3ab495fda2
preprocess: Add tests for vars, quotes in names
This is in anticipation of refactoring away the `$(eval echo
"$quoted_name")` command substitution.
2017-09-30 15:12:38 -04:00
Mike Bland
fac51df957
exec-test: Replace caller with FUNCNAME, etc.
This is part of the effort to improve performance by reducing the number
of command substitutions/subshells spawned by `bats_debug_trap`.

Under Bash 3.2.57(1)-release on a MacBook Pro with a 2.9GHz Intel Core
i5 CPU and 8GB 1867MHz DDR3 RAM, this makes `bin/bats test/` go from the
following for the previous commit:

  44 tests, 0 failures

  real    0m5.293s
  user    0m2.853s
  sys     0m2.087s

to:

  real    0m4.319s
  user    0m2.559s
  sys     0m1.454s
2017-09-30 15:12:38 -04:00
Mike Bland
e613b31a1c
exec-test: Replace || { } with if [[ ]]; then
Somehow this is ever-so-slightly faster.
2017-09-30 15:12:37 -04:00
Mike Bland
741c414d6a
preprocess: Use printf -v in encode_name 2017-09-30 15:12:37 -04:00
Mike Bland
cf9a3b8af4
exec-test: Invoke bats-preprocess directly
Also, `bats-preprocess` now converts DOS/Windows CRLF line endings.
2017-09-30 15:12:37 -04:00
Mike Bland
d294689bdd
exec-test: Use printf -v in bats_extract_line
Also replaces `sed` invocation with a `while` loop, saving a subprocess.
2017-09-30 15:12:37 -04:00
Mike Bland
698fa766a3
exec-test: Replace type -t with command -F
Also eliminates a subshell.
2017-09-30 15:12:37 -04:00
Mike Bland
3bc03796e9
exec-test: Use printf -v in bats_strip_string 2017-09-30 15:12:37 -04:00
Mike Bland
eaa151fb69
exec-test: Use printf -v in bats_trim_filename 2017-09-30 15:12:37 -04:00
Mike Bland
39440c5782
exec-test: Replace dirname call with %/* 2017-09-30 15:12:37 -04:00
Mike Bland
93d3cec96f
exec-test: Use printf -v in bats_frame_* functions
This is part of the effort to improve performance by reducing the number
of command substitutions/subshells spawned by `bats_debug_trap`.

Under Bash 3.2.57(1)-release on a MacBook Pro with a 2.9GHz Intel Core
i5 CPU and 8GB 1867MHz DDR3 RAM, this makes `bin/bats test/` go from:

  44 tests, 0 failures

  real    0m7.565s
  user    0m3.664s
  sys     0m3.368s

to:

  real    0m6.449s
  user    0m3.290s
  sys     0m2.665s
2017-09-30 15:12:37 -04:00
Mike Bland
a3396cbc89
exec-test: Refactor bats_frame_* functions
Preserves existing behavior. Next step will be to take the target
variable name as the second argument.
2017-09-30 15:12:36 -04:00
Mike Bland
55bf719772 Merge pull request #10 from bats-core/ci-configs
Add Appveyor configuration, update Travis CI configuration, fix macOS bug
2017-09-30 15:11:53 -04:00
Mike Bland
0f6dde530e
exec-test: Work around Bash 3.2.57 ERR trap bug
When running under Bash 3.2.57(1)-release on macOS, the following tests
would fail because `BATS_ERROR_STACK_TRACE` would be empty, and hence no
information about the actual error would get printed:

- one failing test
- failing test with significant status
- failing test file outside of BATS_CWD

This is because each of these cases use `FIXTURE_ROOT/failing.bats`, and
the `ERR` trap would not fire for its `eval "( exit ${STATUS:-1} )"`
line. Changing it to `exit ${STATUS:-1}` produced the same effect, and
changing it to `return ${STATUS:-1}` would cause the output to point to
the previous line, which executes `true`.

However, the correct status would be reported to the `EXIT` trap, so now
we call `bats_error_trap` at the very beginning of `bats_teardown_trap`.

All the existing tests now pass under Bash 3.2.57(1)-release, Bash
4.2.25(1)-release (the version from the default Ubuntu 12.04.5/Precise
image on Travis CI), and Bash 4.4.12(1)-release.
2017-09-30 14:58:10 -04:00
Mike Bland
918714dd4d
test/bats: Add statements to debug Travis macOS
The following build is demonstrating failures I can't reproduce on my
own macOS system:

  https://travis-ci.org/bats-core/bats-core/jobs/281719290
2017-09-30 14:51:45 -04:00
Mike Bland
d310b25911
.travis.yml: Enable macOS builds
Also sets the `language` to `bash`.
2017-09-30 14:42:21 -04:00
Mike Bland
bbac787615
.travis.yml: Prefix test command with time
As with the update to .appveyor.yml in the previous commit, this enables
us to get an idea of the performance impact of a change.
2017-09-30 14:42:10 -04:00
Mike Bland
5e752ee914
.appveyor.yml: Prefix test command with time
This enables us to get an idea of the performance impact of a change.
2017-09-30 14:42:01 -04:00
Mike Bland
d9ee4168ed
Add .appveyor.yml
This follows the example from https://www.appveyor.com/docs/lang/ruby/
except that it doesn't need `install` or `before_test` steps.
2017-09-30 14:41:52 -04:00
Bianca Tamayo
aaf62cd9d8 Merge pull request #6 from peteruhnak/patch-1
Minor fix in the installation snippet
2017-09-25 21:12:47 -07:00
Peter Uhnak
3a6efc03cf Minor fix in the install command 2017-09-25 10:07:42 +02:00
Bianca Tamayo
c85f340f1e Added IRC channel info 2017-09-24 11:01:48 -07:00
Bianca Tamayo
8ca0685b85 Updating paths #5
FullSemver: 0.4.1+9
Branch: master
2017-09-24 10:26:25 -07:00
Bianca Tamayo
e3b37da3a4 Added Travis CI Badge to master branch README 2017-09-24 10:04:14 -07:00
Bianca Tamayo
b72cd3545b Updated repo name in README 2017-09-20 15:28:45 -07:00
Bianca Tamayo
d0f06d1f0d Added description & info about this repo in README 2017-09-19 14:55:18 -07:00
Dmitry Rozhkov
adc7ecfe17 Avoid undocumented usage of the head utility.
Some implementations of head (e.g. the one in Busybox)
can't handle options like "-1". Replace them with "-n1".

Signed-off-by: Dmitry Rozhkov <dmitry.rozhkov@linux.intel.com>
2016-05-02 14:47:48 +00:00
Sam Stephenson
03608115df Adopt Contributor Covenant 1.4 2016-02-19 12:28:02 -06:00
Tim Harsch
6cd61bf9da This commit corrects the problem of incorrect TAP
format for skipped tests.
2016-01-20 17:14:51 -08:00
Mislav Marohnić
955309ab94 Merge pull request #90 from Sylvain303/master
saving $IFS in run() not altered for code using it
2015-02-26 11:04:38 +13:00
Sylvain
5fe46a0893 pull #90 quote every string compare
test are all successful.
2015-01-30 13:08:27 +01:00
Sylvain
1735a4fcd2 saving $IFS in run() not altered for code using it
IFS was modified by run() becoming '\n' and so relying to its bash default
was failing tests.

Also some wrong tests corrected because was relying on this behavior to pass.

Fix #89
2015-01-29 20:51:49 +01:00