|
2 | 2 |
|
3 | 3 | ## Unreleased |
4 | 4 |
|
5 | | -### Fixed |
6 | | -- Fix misleading error message for `assert_not_same` and `assert_not_equals` on failure #604 |
7 | | - |
8 | 5 | ### Added |
9 | | -- Add `--jobs N` flag to limit parallel test concurrency (e.g., `--jobs 4`) |
10 | | -- Add `--watch` mode to automatically re-run tests when files change |
11 | | -- Add `watch [path]` subcommand to re-run tests automatically on file changes |
12 | | - - Uses `inotifywait` on Linux (via `inotify-tools`) or `fswatch` on macOS |
13 | | - - Falls back with a clear install hint if neither tool is available |
14 | | - - Accepts optional path argument (defaults to current directory) |
15 | | -- Add source context display in failure summaries showing relevant assertion lines |
| 6 | +- Add `--watch` mode and `watch [path]` subcommand to re-run tests on file changes |
| 7 | + - Uses `inotifywait` on Linux or `fswatch` on macOS; clear install hint if unavailable |
| 8 | +- Add `--jobs N` flag to limit parallel test concurrency |
| 9 | +- Add `--tag` and `--exclude-tag` CLI flags for filtering tests by `# @tag` annotations |
16 | 10 | - Add TAP version 13 output format via `--output tap` for CI/CD integration |
| 11 | +- Add source context display in failure summaries showing relevant assertion lines |
17 | 12 | - Add date comparison assertions: `assert_date_equals`, `assert_date_before`, `assert_date_after`, `assert_date_within_range`, `assert_date_within_delta` |
18 | 13 | - Auto-detects epoch seconds, ISO 8601, space-separated datetime, and timezone offsets |
19 | | - - Mixed formats supported in the same assertion call |
20 | | -- Add Claude Code configuration with custom skills, agents, and rules |
21 | | -- Add `assert_have_been_called_nth_with` for verifying arguments on the Nth invocation of a spy |
| 14 | +- Add `assert_have_been_called_nth_with` for verifying spy arguments on the Nth invocation |
22 | 15 | - Add `assert_string_matches_format` and `assert_string_not_matches_format` with format placeholders (`%d`, `%s`, `%f`, `%i`, `%x`, `%e`, `%%`) |
23 | 16 | - Add JSON assertions: `assert_json_key_exists`, `assert_json_contains`, `assert_json_equals` (requires `jq`) |
24 | 17 | - Add duration assertions: `assert_duration`, `assert_duration_less_than`, `assert_duration_greater_than` |
25 | | -- Add `--tag` and `--exclude-tag` CLI flags for filtering tests by `# @tag` annotations |
26 | | - |
27 | | -### Tests |
28 | | -- Add unit tests for `env.sh`, `math.sh`, `colors.sh`, `test_title.sh`, `console_header.sh`, and `doc.sh` |
29 | 18 |
|
30 | 19 | ### Changed |
31 | | -- Optimize Claude Code config for agentic efficiency: trim rules/skills, add shellcheck hook, path-scoped rule loading |
32 | 20 | - Split Windows CI test jobs into parallel chunks to avoid timeouts |
33 | 21 | - Optimize clock: prioritize EPOCHREALTIME over subprocess-based fallbacks |
34 | 22 | - Cache function discovery to avoid duplicate pipeline per test file |
35 | 23 | - Reduce subshells in test execution hot path |
36 | 24 | - Batch coverage recording with in-memory buffering |
37 | | -- Cache `uname` result at source time to eliminate repeated subprocess forks in OS detection |
| 25 | +- Cache `uname` result at source time to eliminate repeated subprocess forks |
38 | 26 | - Replace `bc` and `awk` subprocesses with native bash arithmetic in clock and duration formatting |
39 | 27 | - Cache `base64 -w` flag support at load time instead of detecting per test |
40 | 28 | - Use direct variable access for assertion state instead of getter subshells in runner hot path |
41 | 29 |
|
42 | 30 | ### Fixed |
| 31 | +- Fix misleading error message for `assert_not_same` and `assert_not_equals` on failure (#604) |
43 | 32 | - Mocking `mktemp` no longer breaks spy creation (#602) |
44 | 33 | - JUnit XML report now conforms to the standard schema |
45 | | - - Remove non-standard `passed`, `incomplete`, `snapshot` attributes from `<testsuite>` and `status`, `assertions` from `<testcase>` |
46 | | - - Add `errors="0"` attribute and `<failure>`/`<skipped>` child elements per the JUnit spec |
47 | | - - `skipped` count now includes both skipped and incomplete tests to match emitted `<skipped/>` elements |
48 | | - - Convert `time` values from milliseconds to seconds (float) as expected by CI tools |
| 34 | + - Remove non-standard attributes from `<testsuite>` and `<testcase>` |
| 35 | + - Add `errors="0"` attribute and `<failure>`/`<skipped>` child elements per spec |
| 36 | + - `skipped` count now includes both skipped and incomplete tests |
| 37 | + - Convert `time` values from milliseconds to seconds (float) |
49 | 38 | - Strip ANSI escape sequences and invalid XML control characters from failure messages |
50 | | - - Include actual failure messages in `<failure>` body instead of hard-coded placeholders |
| 39 | + - Include actual failure messages in `<failure>` body |
| 40 | + |
| 41 | +### Tests |
| 42 | +- Add unit tests for `env.sh`, `math.sh`, `colors.sh`, `test_title.sh`, `console_header.sh`, and `doc.sh` |
51 | 43 |
|
52 | 44 | ## [0.33.0](https://github.com/TypedDevs/bashunit/compare/0.32.0...0.33.0) - 2026-02-15 |
53 | 45 |
|
|
0 commit comments