test(xray-proxy): добавлена полная проверка Python 3.8
- Зачем: - требовалось подтвердить нижнюю версию Python и исключить переполнение /tmp тестовыми данными. - Что: - добавлен полный прогон под системным Python и CPython 3.8 через uv. - исправлены переносимость тестового Xray, уборка временных файлов и документация задачи 05. - добавлен список локальных навыков, исключаемых из Git. - Проверка: - bash tests/test_xray_proxy_full.sh.
This commit is contained in:
1 parent
92cf3397da
commit
fd8210db71
10 files changed
+234
-127
No files matched your search
+16
-16
@@ -3,6 +3,11 @@ set -euo pipefail
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
# Один корневой временный каталог на прогон: тестовые деревья копируют заметную
|
||||
# часть репозитория и без уборки переполняют /tmp за несколько прогонов.
|
||||
TEST_TMP_ROOT="$(mktemp -d /tmp/dotfiles-install-test.XXXXXX)"
|
||||
trap 'rm -rf "$TEST_TMP_ROOT"' EXIT
|
||||
|
||||
fail() {
|
||||
echo "FAIL: $*" >&2
|
||||
exit 1
|
||||
@@ -21,26 +26,21 @@ assert_not_exists() {
|
||||
|
||||
setup_fixture() {
|
||||
local fixture_root repo_root bin_dir
|
||||
fixture_root="$(mktemp -d /tmp/dotfiles-install-test.XXXXXX)"
|
||||
fixture_root="$(mktemp -d "$TEST_TMP_ROOT/fixture.XXXXXX")"
|
||||
repo_root="$fixture_root/repo"
|
||||
bin_dir="$fixture_root/bin"
|
||||
|
||||
mkdir -p "$repo_root" "$bin_dir"
|
||||
cp -a \
|
||||
"$REPO_ROOT/install.sh" \
|
||||
"$REPO_ROOT/bash" \
|
||||
"$REPO_ROOT/tmux" \
|
||||
"$REPO_ROOT/vim" \
|
||||
"$REPO_ROOT/zed" \
|
||||
"$REPO_ROOT/vscode" \
|
||||
"$REPO_ROOT/agents" \
|
||||
"$REPO_ROOT/opencode" \
|
||||
"$REPO_ROOT/codex" \
|
||||
"$REPO_ROOT/gemini" \
|
||||
"$REPO_ROOT/claude" \
|
||||
"$REPO_ROOT/xray-proxy" \
|
||||
"$REPO_ROOT/scripts" \
|
||||
"$repo_root/"
|
||||
# Список файлов соответствует свежему клону: только отслеживаемые Git-файлы
|
||||
# (новые файлы видны после git add). Содержимое берётся из текущего рабочего
|
||||
# дерева. Локальные данные инструментов внутри пакетов (vscode/.vscode-server,
|
||||
# zed/.config/opencode и т.п.) весят гигабайты, переполняют /tmp и ломают
|
||||
# stow конфликтами, поэтому в тестовое дерево не попадает.
|
||||
git -C "$REPO_ROOT" ls-files -z --cached -- \
|
||||
install.sh bash tmux vim zed vscode agents opencode codex gemini \
|
||||
claude xray-proxy scripts \
|
||||
| tar -C "$REPO_ROOT" --null -T - -cf - \
|
||||
| tar -xf - -C "$repo_root"
|
||||
|
||||
cat > "$bin_dir/fake-git" <<'EOF'
|
||||
#!/usr/bin/env bash
|
||||
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "$REPO_ROOT"
|
||||
|
||||
if ! command -v uv >/dev/null 2>&1; then
|
||||
echo "Ошибка: для полной проверки требуется uv" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export PYTHONDONTWRITEBYTECODE=1
|
||||
|
||||
python3 -m unittest discover -s tests
|
||||
bash tests/test_proxy_launchers.sh
|
||||
bash tests/test_install.sh
|
||||
uv run --python 3.8 --no-project python -m unittest discover -s tests
|
||||
@@ -166,6 +166,10 @@ class ManagedXrayCliTest(unittest.TestCase):
|
||||
self.bin_dir.mkdir()
|
||||
self.log = self.root / "xray.log"
|
||||
self.xray = self.bin_dir / "xray"
|
||||
python_prefix = Path(sys.executable).resolve().parent.parent
|
||||
python_lib = python_prefix / "lib"
|
||||
if python_lib.is_dir():
|
||||
(self.root / "lib").symlink_to(python_lib, target_is_directory=True)
|
||||
shutil.copy2(sys.executable, self.xray)
|
||||
self.xray.chmod(0o755)
|
||||
for operand in ("version", "run"):
|
||||
|
||||
Reference in new issue
Block a user