diff --git a/CHANGELOG.md b/CHANGELOG.md index d150311b..897f555d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Auto-discover coverage paths from test file names when `BASHUNIT_COVERAGE_PATHS` is not set - `tests/unit/assert_test.sh` automatically tracks `src/assert.sh` - Removes need for manual `--coverage-paths` configuration in most cases +- `--coverage-report-html` now defaults to `coverage/html` when no directory is specified ### Fixed - Coverage now excludes control flow keywords (`then`, `else`, `fi`, `do`, `done`, `esac`, `;;`, case patterns) from line tracking diff --git a/docs/command-line.md b/docs/command-line.md index e417f948..6e16cbcc 100644 --- a/docs/command-line.md +++ b/docs/command-line.md @@ -15,6 +15,13 @@ bashunit --help # Show help bashunit --version # Show version ``` +## Argument Notation + +| Syntax | Meaning | +|----------|------------------------------------------| +| `` | Required - must be provided | +| `[arg]` | Optional - can be omitted (uses default) | + ## test > `bashunit test [path] [options]` @@ -69,8 +76,8 @@ bashunit test tests/ --parallel --simple | `--coverage` | Enable code coverage tracking | | `--coverage-paths ` | Paths to track (default: auto-discover) | | `--coverage-exclude ` | Exclusion patterns | -| `--coverage-report ` | LCOV output path (default: `coverage/lcov.info`) | -| `--coverage-report-html ` | Generate HTML report with line highlighting | +| `--coverage-report [file]` | LCOV output path (default: `coverage/lcov.info`) | +| `--coverage-report-html [dir]` | Generate HTML report (default: `coverage/html`) | | `--coverage-min ` | Minimum coverage threshold | | `--no-coverage-report` | Console output only, no LCOV file | @@ -313,8 +320,8 @@ bashunit test tests/ --coverage --coverage-paths src/,lib/ --coverage-min 80 | `--coverage` | Enable coverage tracking | | `--coverage-paths ` | Comma-separated paths to track (default: auto-discover from test files) | | `--coverage-exclude ` | Comma-separated patterns to exclude (default: `tests/*,vendor/*,*_test.sh`) | -| `--coverage-report ` | LCOV output file path (default: `coverage/lcov.info`) | -| `--coverage-report-html ` | Generate HTML coverage report with line-by-line highlighting | +| `--coverage-report [file]` | LCOV output file path (default: `coverage/lcov.info`) | +| `--coverage-report-html [dir]` | Generate HTML report (default: `coverage/html`) | | `--coverage-min ` | Minimum coverage percentage; fails if below | | `--no-coverage-report` | Show console report only, don't generate LCOV file | diff --git a/docs/coverage.md b/docs/coverage.md index 70481883..909f3193 100644 --- a/docs/coverage.md +++ b/docs/coverage.md @@ -57,7 +57,7 @@ The DEBUG trap adds overhead to test execution. For large test suites, consider | `--coverage-paths ` | Comma-separated paths to track (default: auto-discover from test files) | | `--coverage-exclude ` | Comma-separated exclusion patterns | | `--coverage-report ` | LCOV report output path (default: `coverage/lcov.info`) | -| `--coverage-report-html ` | Generate HTML coverage report with line-by-line details | +| `--coverage-report-html [dir]` | Generate HTML report (default: `coverage/html`) | | `--coverage-min ` | Minimum coverage threshold (fails if below) | | `--no-coverage-report` | Disable LCOV file generation (console only) | diff --git a/src/console_header.sh b/src/console_header.sh index a19799e8..75b0302d 100644 --- a/src/console_header.sh +++ b/src/console_header.sh @@ -124,13 +124,13 @@ Options: -h, --help Show this help message Coverage: - --coverage Enable code coverage tracking - --coverage-paths Source paths to track (comma-separated, default: src/) - --coverage-exclude Patterns to exclude (comma-separated) - --coverage-report Output file (default: coverage/lcov.info) - --coverage-report-html Generate HTML coverage report - --coverage-min Fail if coverage below percentage - --no-coverage-report Disable file output, console only + --coverage Enable code coverage tracking + --coverage-paths Source paths to track (default: auto-discover) + --coverage-exclude Patterns to exclude (comma-separated) + --coverage-report [file] Output file (default: coverage/lcov.info) + --coverage-report-html [dir] HTML report (default: coverage/html) + --coverage-min Fail if coverage below percentage + --no-coverage-report Disable file output, console only Examples: bashunit test tests/ @@ -139,7 +139,7 @@ Examples: bashunit test -a equals "foo" "foo" bashunit test tests/ --coverage bashunit test tests/ --coverage --coverage-min 80 - bashunit test tests/ --coverage --coverage-report-html coverage/html + bashunit test tests/ --coverage-report-html EOF } diff --git a/src/main.sh b/src/main.sh index c644f253..7b43f3b7 100644 --- a/src/main.sh +++ b/src/main.sh @@ -131,9 +131,14 @@ function bashunit::main::cmd_test() { ;; --coverage-report-html) # shellcheck disable=SC2034 - BASHUNIT_COVERAGE_REPORT_HTML="$2" + # Use default if no value provided or next arg is a flag + if [[ -z "${2:-}" || "${2:-}" == -* ]]; then + BASHUNIT_COVERAGE_REPORT_HTML="coverage/html" + else + BASHUNIT_COVERAGE_REPORT_HTML="$2" + shift + fi _bashunit_coverage_opt_set=true - shift ;; *) raw_args+=("$1")