#!/usr/bin/env bash # Offline smoke test for lib.sh's parsing logic (no network). Run: ./scripts/test-lib.sh set -euo pipefail cd "$(dirname "$0")" . ./lib.sh fail() { echo "FAIL: $1" >&2; exit 1; } # parse_latest_godot_tag: skips prereleases and drafts, strips "-stable" # (needs jq — present on the CI runner; skipped here if this machine lacks it) if command -v jq >/dev/null 2>&1; then got=$(printf '%s' '[ {"tag_name":"4.8-rc1","prerelease":true,"draft":false}, {"tag_name":"4.7.1-stable","prerelease":false,"draft":false}, {"tag_name":"4.7-stable","prerelease":false,"draft":false}, {"tag_name":"4.8-dev-draft","prerelease":false,"draft":true} ]' | parse_latest_godot_tag) [ "$got" = "4.7.1" ] || fail "parse_latest_godot_tag: got '$got', want 4.7.1" else echo "skip: parse_latest_godot_tag (jq not installed on this machine)" >&2 fi # parse_latest_blender_minor: numeric sort, not lexicographic ("4.10" > "4.2") got=$(printf '%s' 'Blender3.6/ Blender4.2/ Blender4.10/' \ | parse_latest_blender_minor) [ "$got" = "4.10" ] || fail "parse_latest_blender_minor: got '$got', want 4.10" # parse_latest_blender_tarball: newest patch, ignores sha256 sidecars and other OSes got=$(printf '%s' 'x x x x' | parse_latest_blender_tarball) [ "$got" = "blender-4.2.10-linux-x64.tar.xz" ] || fail "parse_latest_blender_tarball: got '$got', want blender-4.2.10-linux-x64.tar.xz" echo "ok: scripts/lib.sh"