Adds k3d-dev.sh BATS test suite and lefthook git hooks
Package Merge Request
Package Changes
Adds 18 BATS unit tests for k3d-dev.sh and a lefthook.yaml for opt-in local git hooks. No changes to k3d-dev.sh itself. This is Step 2 of the plan in big-bang/pipeline-templates/pipeline-templates#912 (closed).
3 files, 266 lines total:
-
tests/bats/k3d-dev/k3d-dev.bats- 18 tests covering argument parsing, domain config, kubeconfig path derivation, and the batch-file error guard. No mocks, no AWS calls, no SSH - each test sources the script, calls a function, and checks a variable. -
lefthook.yaml- runs bats on pre-commit (whenk3d-dev.shor*.batsstaged) and pre-push (when any*.sh/*.batschanged). Opt-in vialefthook install- does nothing if you don't have it. -
.gitattributes- tells GitLab to syntax-highlight.batsfiles as Bash in diffs.
# How to run
brew install bats-core # one-time
bats tests/bats/k3d-dev/k3d-dev.bats
Test log
bats test run - direct
❯ bats --recursive ./tests/bats
k3d-dev/k3d-dev.bats
✓ k3dsshcmd builds correct SSH command
✓ set_kubeconfig uses PublicIP when not provisioning
✓ set_kubeconfig uses AWSUSERNAME when provisioning
✓ process_arguments -b sets BIG_INSTANCE=true
✓ process_arguments -M sets METAL_LB=false
✓ process_arguments -p sets PRIVATE_IP=true
✓ process_arguments -d sets action=destroy_instances
✓ process_arguments -t sets PROJECTTAG
✓ process_arguments -K sets RESET_K3D=true
✓ process_arguments -H sets PublicIP and disables cloud provisioning
✓ process_arguments -H without -P sets PrivateIP=PublicIP
✓ process_arguments -D and --domain set BASE_DOMAIN
✓ process_arguments handles multiple flags
✓ process_arguments reports unknown option
✓ set_domains builds PUBLIC_DOMAINS and PASSTHROUGH_DOMAINS
✓ set_domains uses default BASE_DOMAIN
✓ set_domains clears stale values before rebuilding
✓ run_batch_add fails if no batch started
18 tests, 0 failures
lefthook precommit checks
Same thing but more automated:
❯ lefthook run pre-commit --all-files
╭──────────────────────────────────────╮
│ 🥊 lefthook v2.1.0 hook: pre-commit │
╰──────────────────────────────────────╯
┃ bats-k3d-dev ❯
k3d-dev/k3d-dev.bats
✓ k3dsshcmd builds correct SSH command
✓ set_kubeconfig uses PublicIP when not provisioning
✓ set_kubeconfig uses AWSUSERNAME when provisioning
✓ process_arguments -b sets BIG_INSTANCE=true
✓ process_arguments -M sets METAL_LB=false
✓ process_arguments -p sets PRIVATE_IP=true
✓ process_arguments -d sets action=destroy_instances
✓ process_arguments -t sets PROJECTTAG
✓ process_arguments -K sets RESET_K3D=true
✓ process_arguments -H sets PublicIP and disables cloud provisioning
✓ process_arguments -H without -P sets PrivateIP=PublicIP
✓ process_arguments -D and --domain set BASE_DOMAIN
✓ process_arguments handles multiple flags
✓ process_arguments reports unknown option
✓ set_domains builds PUBLIC_DOMAINS and PASSTHROUGH_DOMAINS
✓ set_domains uses default BASE_DOMAIN
✓ set_domains clears stale values before rebuilding
✓ run_batch_add fails if no batch started
18 tests, 0 failures
Package MR
N/A. This is a test-only addition to the umbrella repo.
For Issue
Supports big-bang/pipeline-templates/pipeline-templates#912 (closed)
Closes #3139 (closed).
Upgrade Notices
No changes necessary for Big Bang chart consumers, but this MR adds currently-optional local dev dependencies for lefthook and bats:
bats-core 1.13.0lefthook 2.1.0
To bootstrap on a brew-capable machine:
brew install bats-core lefthook
lefthook install
lefthook run pre-commit --all-files
Edited by Daniel Pritchett