[test] add examples-check target with stubbed BIN and no-network validation for example scripts
This commit is contained in:
23
Makefile
Normal file
23
Makefile
Normal file
@@ -0,0 +1,23 @@
|
||||
# Lightweight examples-check: runs all examples/*.sh with --no-interaction -q and stubbed BIN
|
||||
# This target does not perform network calls and never prompts for input.
|
||||
|
||||
.SHELL := /bin/bash
|
||||
|
||||
.PHONY: examples-check
|
||||
examples-check:
|
||||
@set -euo pipefail; \
|
||||
shopt -s nullglob; \
|
||||
BIN_WRAPPER="$(PWD)/scripts/with_flags.sh"; \
|
||||
failed=0; \
|
||||
for f in examples/*.sh; do \
|
||||
echo "[examples-check] Running $$f"; \
|
||||
BIN="$$BIN_WRAPPER" bash "$$f" </dev/null >/dev/null 2>&1 || { \
|
||||
echo "[examples-check] FAILED: $$f"; failed=1; \
|
||||
}; \
|
||||
done; \
|
||||
if [[ $$failed -ne 0 ]]; then \
|
||||
echo "[examples-check] Some examples failed."; \
|
||||
exit 1; \
|
||||
else \
|
||||
echo "[examples-check] All examples passed (no interaction, quiet)."; \
|
||||
fi
|
@@ -47,6 +47,16 @@ Tests
|
||||
- cargo test
|
||||
- The test suite includes CLI-oriented integration tests and unit tests. Some tests simulate GPU detection using env vars (POLYSCRIBE_TEST_FORCE_*). Do not rely on these flags in production code.
|
||||
|
||||
Examples check (no network, non-interactive)
|
||||
- To quickly validate that example scripts are wired correctly (no prompts, quiet, exit 0), run:
|
||||
- make examples-check
|
||||
- What it does:
|
||||
- Iterates over examples/*.sh
|
||||
- Forces execution with --no-interaction and -q via a wrapper
|
||||
- Uses a stubbed BIN that performs no network access and exits successfully
|
||||
- Redirects stdin from /dev/null to ensure no prompts
|
||||
- This is intended for CI smoke checks and local verification; it does not actually download models or transcribe audio.
|
||||
|
||||
Clippy
|
||||
- Run lint checks and treat warnings as errors:
|
||||
- cargo clippy --all-targets -- -D warnings
|
||||
|
0
examples/download_models_interactive.sh
Normal file → Executable file
0
examples/download_models_interactive.sh
Normal file → Executable file
0
examples/transcribe_file.sh
Normal file → Executable file
0
examples/transcribe_file.sh
Normal file → Executable file
0
examples/update_models.sh
Normal file → Executable file
0
examples/update_models.sh
Normal file → Executable file
26
scripts/bin_stub.sh
Executable file
26
scripts/bin_stub.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
# Lightweight stub for examples-check: simulates the PolyScribe CLI without I/O or network
|
||||
# - Accepts any arguments
|
||||
# - Exits 0
|
||||
# - Produces no output unless VERBOSE_STUB=1
|
||||
# - Never performs network operations
|
||||
# - Never reads from stdin
|
||||
set -euo pipefail
|
||||
|
||||
if [[ "${VERBOSE_STUB:-0}" == "1" ]]; then
|
||||
echo "[stub] polyscribe $*" 1>&2
|
||||
fi
|
||||
|
||||
# Behave quietly if -q/--quiet is present by default (no output)
|
||||
# Honor --help/-h: print minimal usage if verbose requested
|
||||
if [[ "${VERBOSE_STUB:-0}" == "1" ]]; then
|
||||
for arg in "$@"; do
|
||||
if [[ "$arg" == "-h" || "$arg" == "--help" ]]; then
|
||||
echo "PolyScribe stub: no-op (examples-check)" 1>&2
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Always succeed quietly
|
||||
exit 0
|
28
scripts/with_flags.sh
Executable file
28
scripts/with_flags.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
# Wrapper that ensures --no-interaction -q are present, then delegates to the real BIN (stub by default)
|
||||
set -euo pipefail
|
||||
|
||||
REAL_BIN=${REAL_BIN:-"$(dirname "$0")/bin_stub.sh"}
|
||||
|
||||
# Append flags if not already present in args
|
||||
args=("$@")
|
||||
need_no_interaction=1
|
||||
need_quiet=1
|
||||
for a in "${args[@]}"; do
|
||||
[[ "$a" == "--no-interaction" ]] && need_no_interaction=0
|
||||
[[ "$a" == "-q" || "$a" == "--quiet" ]] && need_quiet=0
|
||||
done
|
||||
|
||||
if [[ $need_no_interaction -eq 1 ]]; then
|
||||
args=("--no-interaction" "${args[@]}")
|
||||
fi
|
||||
if [[ $need_quiet -eq 1 ]]; then
|
||||
args=("-q" "${args[@]}")
|
||||
fi
|
||||
|
||||
# Never read stdin; prevent accidental blocking by redirecting from /dev/null
|
||||
# Also advertise offline via env variables commonly checked by the app
|
||||
export CI=1
|
||||
export POLYSCRIBE_MODELS_BASE_COPY_DIR="${POLYSCRIBE_MODELS_BASE_COPY_DIR:-}" # leave empty by default
|
||||
|
||||
exec "$REAL_BIN" "${args[@]}" </dev/null
|
Reference in New Issue
Block a user