1
0
mirror of https://github.com/sstephenson/bats.git synced 2025-03-03 15:29:52 +01:00
Commit Graph

160 Commits

Author SHA1 Message Date
Nelo Wallus
e96502c7ff Source all files of a library if no loading file exists 2017-10-09 19:51:26 +02:00
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