2.8 KiB
name, description
| name | description |
|---|---|
| lemana-vpn-testing | Use when testing, validating, reviewing, or preparing release/update notes for lemana-vpn shell scripts, Swift app code, installer behavior, SSO patches, or live VPN changes. |
Lemana VPN Testing
Overview
Use a ladder: static checks first, isolated smoke tests second, Swift build third, live VPN only when the changed behavior requires it. Never use live reconnect as a default smoke test.
Non-Live Verification
Run the smallest relevant set, expanding with risk:
sh -n install.sh
sh -n uninstall.sh
bash -n bin/vpn-lemanapro.sh
sh -n tests/smoke.sh
tests/smoke.sh
swift build -c release --package-path app
git diff --check
tests/smoke.sh is the main repo smoke test. It uses temporary homes and fake openconnect-lite sources for patch checks, and it asserts status JSON, install dry-run output, uninstall dry-run output, app wiring, manual/auto flags, no-tty credential behavior, and autofill patch invariants.
Status Checks
For source-script behavior:
bin/vpn-lemanapro.sh --status
bin/vpn-lemanapro.sh --status --json
For the installed user setup:
vpn --status
vpn --status --json
Prefer installed status when verifying what the menu-bar app will see, because VPNManager.swift calls ~/bin/vpn-lemanapro.sh.
Live VPN Checks
Live checks are appropriate only for changes to connection start/stop, reconnect, SSO/autofill, Bitwarden/Keychain, openconnect-lite patching, status JSON consumed by the app, or DNS cleanup.
Before a live check:
vpn --status
If already connected, connecting, or reconnecting, do not start another session. Use logs/status and report that live reconnect was skipped to avoid disturbing the current tunnel.
When SSO/autofill changed, prefer:
vpn --manual
Use the fully manual path when validating a no-autofill diagnosis path:
vpn --manual-full
Only use automatic mode after manual mode proves the form is filled correctly:
vpn
Use debug only for diagnosis:
vpn-debug
tail -f ~/Library/Logs/LemanaVPN-openconnect-lite.log
Installer/Uninstaller Checks
Use dry-runs before real install/uninstall:
sh install.sh --dry-run --non-interactive --minimal
sh uninstall.sh --dry-run
Real install can modify Homebrew packages, pipx packages, sudoers, /usr/local/sbin, ~/.zshrc, LaunchAgents, Keychain prompts, and the menu-bar app. Real uninstall can stop LemanaVPN.app. Be explicit in the answer when those were not run.
Final Report
Report exact commands and results. Always include:
- Run: command to use the changed repo/app.
- Check: command to verify state or behavior.
- Update:
sh install.shfrom checkout or the remotecurl ... | sh. - Not run: especially any skipped live VPN reconnect, real install, or real uninstall.