Files
clash-for-linux/scripts/dev/check-geo-predownload-toggle.sh
Arvin 4539f2c7f2
Text Encoding / utf8 (push) Failing after 34s
Default to GEO predownload
2026-06-25 10:44:06 +08:00

63 lines
1.4 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
# shellcheck source=scripts/core/runtime.sh
source "$PROJECT_DIR/scripts/core/runtime.sh"
tmp_dir="$(mktemp -d)"
trap 'rm -rf "$tmp_dir"' EXIT
RUNTIME_DIR="$tmp_dir/runtime"
RESOURCE_DIR="$tmp_dir/resources"
mkdir -p "$RUNTIME_DIR" "$RESOURCE_DIR"
download_log="$tmp_dir/downloads"
copy_log="$tmp_dir/copies"
: > "$download_log"
: > "$copy_log"
copy_bundled_asset() {
printf '%s\n' "$*" >> "$copy_log"
return 1
}
download_file() {
local url="$1"
local out="$2"
local asset_name="$3"
printf '%s %s %s\n' "$asset_name" "$url" "$out" >> "$download_log"
mkdir -p "$(dirname "$out")"
printf 'mock\n' > "$out"
}
assert_download_count() {
local name="$1"
local expected="$2"
local actual
actual="$(wc -l < "$download_log" | tr -d ' ')"
if [ "$actual" != "$expected" ]; then
echo "not ok - $name: got $actual downloads, expected $expected" >&2
sed 's/^/ /' "$download_log" >&2
return 1
fi
echo "ok - $name"
}
unset CLASH_PREDOWNLOAD_GEO
resolve_geo_assets
assert_download_count "default predownloads GEO assets" 5
: > "$download_log"
CLASH_PREDOWNLOAD_GEO=false resolve_geo_assets
assert_download_count "explicit false skips install-time GEO predownload" 0
: > "$download_log"
CLASH_PREDOWNLOAD_GEO=true resolve_geo_assets
assert_download_count "explicit true predownloads GEO assets" 5