All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.28.1 - 2021-01-11
- Improved documentation. Thanks to Yohei Kawahara (#173).
- bash: Fixed an unexpected error message in self-executable specfile.
- Fixed a bug that test command cannot redefine when using "when run source"
- Fixed a bug when specified relative tmp directory path.
- Fixed option parsing
0.28.0 - 2021-01-05
- Added
BeforeEach
/AfterEach
as synonym forBefore
/After
. - Added
FORCE_COLOR
environment variable. - Added
--tmpdir
option. - Added
--execdir
option to specify the directory for specfile execution. - Added
-c
(--chdir
) and-C
(--directory
) options to change directory at startup. - Added path syntax (
*/
and**/
) and-L
(--dereference
) option to match recursive directories. - Added
--helperdir
to specify the location ofspec_helper
etc. - Added the environment variable
SHELLSPEC_HELPERDIR
to indicate the location ofspec_helper
etc. - Added
--reportdir
and--covdir
options. - Added
-O
(--option
) option. - Added
-I
(--load-path
) option. - Added
<module>_precheck
callback and some helper functions tospec_helper
for pre-checking. - Added
<module>_loaded
callback to be called afterspec_helper
loading.
- Replaced with a new option parser getoptions which supports the standard option syntax.
- Replaced
--keep-tempdir
with--keep-tmpdir
. - Specifying a file in the shellspec's argument is now ignored if it does not match
--pattern
. - Filled in system-out and system-err in junit xml.
- Allowed run the tests from any subdirectory.
- The
-D
option has been deprecated (Replace with the--default-path
option). - The environment variable
SHELLSPEC_SPECDIR
has been deprecated since there is not always a single directory for specfiles. - Rename
.shellspec-profiler.log
toprofiler.log
for profiler log. - Accept
banner.md
as a banner file Include
andimport
(shellspec_import
) can now pass arguments.- The delimiter of the environment variable
SHELLSPEC_REQUIRES
has been changed from:
to space. - Improved documentation. Thanks to ldicarlo (#117, #119), Antoni Marcinek (#120, #139), Stuart R. Jefferys (#155), Leon Stafford (#159).
- Removed
--kcov-common-options
option.
- bash 4.1 - 4.3: Fixed a bug that
run script
could not get the exit status. - zsh < 4.2.0: Fixed a bug when extendedglob is enabled.
- Fixed possibility of I/O error in satisfy matcher (GitHub Actions only?).
- Fixed a bug in which zsh on macOS occasionally exits with exit code 147 (SIGCONT).
- Fixed several bugs related to the Windows path for busybox-w32.
- Fixed a bug when using metacharacters for tags.
0.27.2 - 2020-10-28
- Fixed a bug that didn't cause an error if there are fixed examples.
0.27.1 - 2020-09-30
- Drop support for posh 0.8.5 due to signal handling broken.
- Fixed gray color.
- Fixed broken
--warning-as-failure
. - Fixed a bug that can not CTRL-C with posh.
0.27.0 - 2020-09-25
- Added
be exported
andbe readonly
matchers. - Added
%printf
and%sleep
directives.
- Improved TAP formatter.
- Supports
TODO
andSKIP
directives. - Use
Bail out!
on error. - Added error details.
- Supports
BeforeAll
/AfterAll
: Avoid crashes due to hook errors.Before
/After
: Improved hook error handling.BeforeCall
/AfterCall
,BeforeRun
/AfterRun
: Minor changes.
- Drop support for dash 0.5.3 due to unstable bug.
- Drop support for busybox < 1.20.0 due to unstable bug.
- Fixed a bug that "Parameter is not set" error in word modifier.
- Fixed a bug that satisfy matcher succeed even syntax error.
- Fixed a bug that can not CTRL-C with parallel execution on zsh.
- shellspec-syntax-check.sh: Some minor bug fixes.
0.26.1 - 2020-07-13
- Added
--docker
option. (EXPERIMENTAL)
0.26.0 - 2020-07-12
- Added
Mock
helper (command-based mock). - Added
%preserve
directive. - Added
--sandbox
,--sandbox-path
option. - Added
--path
option.
- Workaround when the Windows version of
sort.exe
is executed.
0.25.0 - 2020-06-21
- Coverage support for zsh and ksh. (#62)
- Respect
NO_COLOR
environment variable. - Support busybox-w32 ash for windows.
- Added
Assert
expectation to assert side effects of system environment. - Added
Dump
helper - dump stdout, stderr and status for debugging. - Added
line
andword
subject. (of stdout (output)
can be omitted now) - Added
--log-file
option to specify log file for%logger
and trace. - Implement
--xtrace
(--xtrace-only
) feature.
- Upgrade to alpine 3.12 for docker image and officially release
shellspec/kcov
docker image. - Separate a file descriptor for reporting and stdout to able to use
echo
in specfile. - Minor specification change of
result
modifier andsatisfy
matcher. -r
option is now a short option for--repair
, not--require
.- Use [debian/eol(https://hub.docker.com/r/debian/eol/) docker images for old debian tests.
- Before/After hooks should not consume stdin data (#82)
0.24.3 - 2020-06-06
- Fixes
BeforeAll
/AfterAll
to share states
0.24.2 - 2020-05-27
- Fixed a bug "SHELLSPEC_GROUP_ID: unbound variable"
- Fixes when ran by "bash shellcpec" and "ksh shellspec"
0.24.1 - 2020-05-22
- Fixed broken
Todo
. - Fixed a bug that caused an error when "--kcov" was specified and /dev/tty no be writable. (#67 Alexander Reitzel)
- Fixed a bug when enabled extendedglob for zsh.
0.24.0 - 2020-05-11
- Add
BeforeAll
andAfterAll
. (#7) - Expand parameter within Data helper. (#57)
- Add test for GWSH shell.
- Add manual test for OpenBSD ksh on OpenBSD 6.6.
- Add manual test for NetBSD sh on NetBSD 9.0.
- Removed
match
matcher. Usematch pattern
matcher instead. - Remove tests for unstable old shells (Bus Error, Bad address, Memory fault, etc).
- CI test for pdksh 5.2.14 on FreeBSD.
- Docker test for pdksh 5.2.14 on Debian 2.2r7.
- Docker test for ksh 93q on Debian 3.1r8.
- Remove tests for FreeBSD 13.0-current (Unstable due to work in progress).
0.23.0 - 2020-04-02
- New quick execution and related options (
--quick
,--repair
,--next
). - New failures formatter.
- Support self-executable specfile. (#40)
- Add
--pending-message
and--quiet
option. - Add short options for focus and filters.
- Add
-w
short options for--warning-as-failure
. - Add
--boost
(joke) option. - Reporter: Displays comments of 'temporary skip' and 'temporary pending'.
- Support windows line endings. (#45)
- Syntax check for missing
End
of parameters. - shellspec --init: generate ignore file for cvs.
- Run the specfile specified by arguments even not end with
_spec.sh
. - Formatter: Change fixed color.
- Formatter: Change mark for fixed and pending of progress formatter.
- Fixed
--pattern
option to avoid syntax error. - Return exit status code on the specfile properly.
- Fixed a bug that
start with
andend with
match glob pattern. - Formatter: Fixed not display correctly of documentation formatter when description is empty.
- Fixed an issue installer.sh fails in some environments. (#43)
- Use
--require
long option instead of-r
short option.
0.22.0 - 2020-02-22
- Improve kcov version detection.
- Colored TAP formatter. (#34 Kylie McClain)
- Added
--show-deprecations
and--hide-deprecations
options.
- New kcov integration.
- Do not create translated specfile in project directory.
- Suppress unnecessary coverage measurement to improve testing speed.
- Added
--coverage-report-info
to add extra information to coverage report.
- make install compatible with BSD and macOS.
- Suppress unnecessary before/after hooks of skipped examples.
- install.sh: Install to under $HOME/.local by default
- Use $HOME/.config if not defined XDG_CONFIG_HOME
--kcov-common-options
is deprecated, merge into--kcov-options
.- Deprecates the
match
matcher due to cause many syntax errors. Usematch pattern
matcher instead.
- Fixed broken test in docker on Linux.
- Fixed
--example
option to avoid syntax error. - Append to LOGFILE instead of overwriting.
0.21.0 - 2020-01-30
- Provide docker images.
- Provide distribution archive.
- Available ArchLinux package. (#15 Damien Flament)
- docs: Improve English quality. (#16 Damien Flament)
0.20.2 - 2019-08-24
- Fixed wrong SHELLSPEC_TMPBASE
- Fixed for bug that some shell can not call external command same name as builtin.
0.20.1 - 2019-08-19
- Fixed for solaris.
0.20.0 - 2019-08-18
- Add parameterized example. (
Parameters
helper) - Add
Set
helper for set shell option - Add
BeforeCall
/AfterCall
helper. - Add
BeforeRun
/AfterRun
helper. - Use
hexdump
ifod
does not exist.
- Redesign
run
evaluation. [major breaking change]- Change the behavior to close to the
run
of bats. - New
run
evaluation allows the execution of functions and commands. - Use
run command
to execute only the commands. (oldrun
-> userun command
) - Merge
invoke
evaluation torun
evaluation. (oldinvoke
-> userun
) - Merge
execute
evaluation torun
evaluation. (oldexecute
-> userun source
)
- Change the behavior to close to the
- Export %const values to the translation process
- Drop support for posh 0.10.2 and similar versions as the handling of the shell flag is broken.
- Fixed bug for related with tag.
- Fixed bug where coverage might not work on macOS.
0.19.1 - 2019-07-23
- Support install via make, bpkg, basher
0.19.0 - 2019-07-22
- Add installer (It has not been officially released, but you can used it already).
- Testing for single script file (Add
execute
evaluation,Intercept
and__SOURCED__
variable). - Add
--keep-tempdir
option. - Add
Data < <FILE>
syntax.
- Drop support for busybox 1.1.3 and similar versions as it can not redefine builtin commands.
- Drop support for ash 0.3.8 and similar versions as it can not use retrun in sourced script.
- Remove
call
/invoke
<STRING>
syntax.
0.18.0 - 2019-07-09
- Profiler feature (
--profile
) - Time attribute for JUnit XML.
0.17.0 - 2019-07-06
- Coverage reporting.
- Add
--fail-low-coverage
option.
0.16.0 - 2019-07-03
- Coverage support (kcov integration)
- Add JUnit formatter and report generator.
- Add
--warning-as-failure
option. - Support Unofficial Bash Strict Mode.
- Support for Schily Bourne Shell (
bosh
,pbosh
).
- Change
--skip-message none
to--skip-message verbose
.
- Remove
--warnings
option.
0.15.0 - 2019-05-26
- Add
be empty directory
(alias:be empty dir
) matcher.
- Rename
be empty
matcher tobe empty file
matcher. [breaking change]
- Fixed bug that
be empty
(renamed tobe empty file
) matcher matches not exists file, etc. - Ensure call & invoke start with errno zero (#2 Rowan Thorpe)
0.14.0 - 2019-05-15
- Add
--random
option.
- Improve
--example
,--tag
option.
0.13.1 - 2019-05-13
- Fixed bug when --dry-run mode.
- Fixed documentation formatter.
0.13.0 - 2019-05-12
- Add
--list examples:id
option. - Add
*_spec.sh:@ID
syntax the specify id with the filename. - Add
--pattern
,--example
,--tag
,--default-path
filter option.
- Change
Logger
Helper to%logger
directive. - Merge
--list-specfiles
,--list-examples
options to--list
option. - Redesign reporter to improve performance, maintainability.
0.12.0 - 2019-04-26
- Add
--list-specfiles
,--list-examples
option. - Add
--env-from
option. - Add tests that for array if supported shells.
- Change
--count
option output includes the number of specfiles. - Change to the banner show only on shellspec-runner.
0.11.3 - 2019-04-24
- Fixed broken parallel executor.
0.11.2 - 2019-04-23
- Fixed bug that does not work with zsh 5.4.2.
0.11.1 - 2019-04-21
- Fixed ignored specified line number when parallel execution.
- Fixed documentation formatter when supplied multiple specfiles.
0.11.0 - 2019-04-20
- Run the example by line number. (
*_spec.sh:#
) - Run focused groups / examples. (
fDescribe
,fContext
,fExample
,fSpecify
,fIt
) - Add
--count
option for count the number of examples without running.
0.10.0 - 2019-04-17
- Support parallel execution. (
--jobs
option)
- Separete syntax checker into tools.
- Improve syntax checker.
- Improve error handling.
- Improve ctrl-c handling.
- Remove
Def
helper. (use%putsn
,%puts
directive instead)
0.9.0 - 2019-03-30
- Add
--syntax-check
option for syntax check of the specfile.
- Change timing of loading external script by 'Include'. [breaking change]
- Fix for translation speed slowdown.
- Remove shorthand of the variable subject.
0.8.0 - 2019-03-26
- Add
Constant definition
. - Add
Data
helper,Embedded text
. - Add
Def
helper. - Add
Logger
helper. - Add
result
modifier. - Add
Include
helper. - Add shorthand for
function
subject andvariable
subject. - Add failed message for
Before
/After
each hook.
- Change behavior of
line
andlines
modifier to like "grep -c" not "wc -l". - Change
function
subject to alias forvalue
subject. - Improve handling unexpected errors.
- Improve examples.
- Remove
It
statement and changeIt
is alias ofExample
now. - Remove
Set
/Unset
helper. - Remove
Debug
helper. - Remove
string
subject. - Remove
exit status
subject. (usestatus
subject)
0.7.0 - 2019-03-08
- Added
lines
modifier.
0.6.0 - 2019-02-19
- Added
match
matcher.
0.5.0 - 2019-02-06
- Initial public release.