Fix smoke test JSON parsing and set unattended defaults
This commit is contained in:
@@ -14,6 +14,7 @@ PIKIT_API_URL="${PIKIT_API_URL:-http://127.0.0.1:4000}"
|
||||
LOCAL_ONLY=0
|
||||
ERRORS=0
|
||||
WARNINGS=0
|
||||
REMOTE_MODE=0
|
||||
|
||||
usage() {
|
||||
cat <<'USAGE'
|
||||
@@ -76,6 +77,10 @@ remote_cmd() {
|
||||
fi
|
||||
}
|
||||
|
||||
extract_json_line() {
|
||||
awk 'BEGIN{found=0} /^[[:space:]]*[{[]/ {print; found=1; exit} END{if(!found) exit 0}'
|
||||
}
|
||||
|
||||
json_get() {
|
||||
local key="$1"
|
||||
if command -v python3 >/dev/null 2>&1; then
|
||||
@@ -131,6 +136,13 @@ check_api() {
|
||||
status FAIL "API not reachable: $url"
|
||||
return
|
||||
fi
|
||||
if [ "$REMOTE_MODE" -eq 1 ]; then
|
||||
body="$(printf "%s\n" "$body" | extract_json_line)"
|
||||
fi
|
||||
if [ -z "$body" ]; then
|
||||
status FAIL "API response empty or not JSON"
|
||||
return
|
||||
fi
|
||||
if command -v python3 >/dev/null 2>&1; then
|
||||
if printf "%s" "$body" | python3 - <<'PY'
|
||||
import json, sys
|
||||
@@ -160,6 +172,13 @@ check_firstboot() {
|
||||
status FAIL "firstboot API not reachable"
|
||||
return
|
||||
fi
|
||||
if [ "$REMOTE_MODE" -eq 1 ]; then
|
||||
body="$(printf "%s\n" "$body" | extract_json_line)"
|
||||
fi
|
||||
if [ -z "$body" ]; then
|
||||
status FAIL "firstboot status invalid or missing"
|
||||
return
|
||||
fi
|
||||
state="$(printf "%s" "$body" | json_get "state" || true)"
|
||||
error_present="$(printf "%s" "$body" | json_get "error_present" || true)"
|
||||
if [ -z "$state" ]; then
|
||||
@@ -211,6 +230,9 @@ finalize() {
|
||||
|
||||
main() {
|
||||
parse_args "$@"
|
||||
if [ "$LOCAL_ONLY" -eq 0 ] && ! is_dietpi; then
|
||||
REMOTE_MODE=1
|
||||
fi
|
||||
|
||||
section "HTTP/HTTPS"
|
||||
check_http "$PIKIT_HTTP_URL" "HTTP"
|
||||
|
||||
Reference in New Issue
Block a user