* Installer: make UV_OVERRIDE space-safe on Apple Silicon (#6503) On Apple Silicon, install.sh exports UV_OVERRIDE pointing at the bundled overrides-darwin-arm64.txt. uv splits UV_OVERRIDE on whitespace, so a repo cloned under a path containing a space (e.g. /Users/me/Open Source/unsloth) truncates the value and every later uv call aborts with 'error: File not found: <truncated>' (the PyTorch install step in #6503). Copy the overrides file into a space-free temp dir and point uv at the copy when the path contains a space, mirroring the macOS/Linux handling already merged for the Python installer in #6534. The temp dir is removed in the exit trap, and the code falls back to the original path when no space-free temp dir is available, so the no-space and non-macOS paths are unchanged. Adds tests/sh/test_install_uv_override_space.sh, which extracts and runs the install.sh hardening block and checks the spaced, no-space, and spaced-TMPDIR fallback cases. * Installer: match all whitespace (not just spaces) in UV_OVERRIDE handling uv splits UV_OVERRIDE on any whitespace, so use the POSIX class *[[:space:]]* rather than a literal space in install.sh (catches tabs and newlines in the path too) and the matching test assertions. Use the portable awk bracket expression [$] instead of \$ in the extraction so the test runs the same under BSD awk (macOS) and GNU awk (Linux). Adds a tab-in-path case. * Installer: clear _UV_OVERRIDE_TMPDIR before the exit trap The exit trap rm -rf's _UV_OVERRIDE_TMPDIR. Initialize it to empty before registering the trap so an inherited environment value can never be removed; only a temp dir this script creates (Apple Silicon, spaced path) is cleaned. Adds a structural test asserting the init precedes the trap. * Run the install.sh UV_OVERRIDE space test in CI via a pytest wrapper The Shell installer tests job uses a fixed script list (not tests/run_all.sh), so the new shell test would not run on PRs. Add a pytest wrapper under tests/python/ that invokes it; the auto-discovered repo CPU test job collects tests/python/ and so executes the Apple Silicon spaced-path regression. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
29 lines
1.1 KiB
Bash
Executable file
29 lines
1.1 KiB
Bash
Executable file
#!/bin/sh
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
# Copyright 2026-present the Unsloth AI Inc. team. All rights reserved. See /studio/LICENSE.AGPL-3.0
|
|
# Run all installer tests.
|
|
set -e
|
|
|
|
TESTS_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
echo "=== Bash tests ==="
|
|
sh "$TESTS_DIR/sh/test_get_torch_index_url.sh"
|
|
sh "$TESTS_DIR/sh/test_mac_intel_compat.sh"
|
|
sh "$TESTS_DIR/sh/test_torch_constraint.sh"
|
|
sh "$TESTS_DIR/sh/test_nvcc_meets_llama_minimum.sh"
|
|
sh "$TESTS_DIR/sh/test_resolve_cuda_archs.sh"
|
|
sh "$TESTS_DIR/sh/test_strixhalo_wsl_reroute.sh"
|
|
sh "$TESTS_DIR/sh/test_uninstall_shared_icon.sh"
|
|
sh "$TESTS_DIR/sh/test_torch_flavor.sh"
|
|
sh "$TESTS_DIR/sh/test_install_uv_override_space.sh"
|
|
|
|
echo ""
|
|
echo "=== Python tests ==="
|
|
python -m pytest "$TESTS_DIR/python/test_install_python_stack.py" -v
|
|
python -m pytest "$TESTS_DIR/python/test_cross_platform_parity.py" -v
|
|
python -m pytest "$TESTS_DIR/python/test_no_torch_filtering.py" -v
|
|
python -m pytest "$TESTS_DIR/python/test_studio_import_no_torch.py" -v
|
|
python -m pytest "$TESTS_DIR/python/test_tokenizers_and_torch_constraint.py" -v -k "not e2e"
|
|
|
|
echo ""
|
|
echo "All tests passed."
|