Files
NeoTachyon/tests/package_inventory.sh
T
Dushnilin 8996790f25 fix(core): хотфиксы issues #23, #32, #39, #41
- service_check: lan_interface() запрашивала несуществующий конфиг
  forkop/podkop, из-за чего все проверки сервисов смотрели в br-lan вместо
  настроенных LAN-интерфейсов - секции AWG/WireGuard всегда получали вердикт
  "не отвечает" при рабочем kernel-конфиге (#41, #32, #39)
- rag: у push() были перепутаны аргументы - коллекция эмбеддингов оставалась
  пустой для всех провайдеров OpenAI-формата; кэш эмбеддингов теперь
  инвалидируется по отпечатку индекса (mtime+size), null model_override
  обрабатывается корректно
- warp_generator: curl к Clash API без таймаута и матрица ретраев без общего
  дедлайна могли блокировать выполнение минутами и ловить XHR timeout LuCI
  (#39); добавлены -m 5 на локальные вызовы и бюджеты 40с/90с на весь цикл
- build.sh: релизные пакеты теперь содержат тот же состав файлов, что и
  сборка через OpenWrt Makefile (hotplug WAN-монитор, агентский CGI в
  /usr/lib/cgi-bin, defaults/config, профили servicecheck); конфиги с
  секретами ставятся с правами 0600; тест паритета инвентаря
- updates UI: после самообновления tachyon страница перезагружается только
  когда перезапущенный бэкенд снова отвечает на get_ui_state, вместо
  фиксированной задержки 8 секунд (#23)
2026-08-21 19:19:17 +03:00

47 lines
1.8 KiB
Bash

#!/usr/bin/env bash
set -eo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
MAKEFILE="$ROOT_DIR/tachyon/Makefile"
BUILD_SH="$ROOT_DIR/build.sh"
fail() {
printf 'FAIL: %s\n' "$1" >&2
exit 1
}
[ -f "$MAKEFILE" ] || fail "tachyon/Makefile not found"
[ -f "$BUILD_SH" ] || fail "build.sh not found"
# Release packages are produced by build.sh, while the OpenWrt feed build uses
# tachyon/Makefile. Both must ship an identical file inventory or installs
# silently lose hotplug handlers, the agent CGI and reset defaults.
required_sources=(
"files/etc/init.d/tachyon"
"files/etc/config/tachyon"
"files/usr/bin/tachyon"
"files/etc/hotplug.d/iface/99-tachyon-wan-monitor"
"files/usr/lib/cgi-bin/tachyon-agent"
"files/usr/share/tachyon/servicecheck_profiles.json"
)
for rel in "${required_sources[@]}"; do
[ -f "$ROOT_DIR/tachyon/$rel" ] || fail "source file missing: tachyon/$rel"
grep -Fq "$rel" "$MAKEFILE" || fail "Makefile no longer ships $rel — update tests/package_inventory.sh"
grep -Fq "$rel" "$BUILD_SH" || fail "build.sh does not package $rel (diverges from Makefile)"
done
# Derived file installed only by the packaging recipes (not present in files/).
grep -Fq '/usr/lib/tachyon/defaults/config' "$MAKEFILE" ||
fail "Makefile no longer installs defaults/config"
grep -Fq 'usr/lib/tachyon/defaults/config' "$BUILD_SH" ||
fail "build.sh does not package /usr/lib/tachyon/defaults/config (reset_settings would break)"
# Secrets-bearing files must not be world-readable in release packages.
grep -Eq 'chmod 0600 .*etc/config/tachyon' "$BUILD_SH" ||
fail "build.sh must enforce mode 0600 on /etc/config/tachyon"
grep -Eq 'chmod 0600 .*usr/lib/tachyon/defaults/config' "$BUILD_SH" ||
fail "build.sh must enforce mode 0600 on defaults/config"
printf 'package inventory checks passed\n'