Files
dependencies/test.sh
2026-02-22 15:36:30 -08:00

61 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
# Create a temporary virtualenv
VENV_DIR="$(mktemp -d)"
trap 'rm -rf "$VENV_DIR"' EXIT
python3 -m venv "$VENV_DIR"
source "$VENV_DIR/bin/activate"
pip install --upgrade pip >/dev/null
# Auto-discover packages: any subdirectory containing a pyproject.toml
PACKAGES=()
for toml in "$REPO_DIR"/*/pyproject.toml; do
[ -f "$toml" ] || continue
PACKAGES+=("$(dirname "$toml")")
done
if [ ${#PACKAGES[@]} -eq 0 ]; then
echo "No packages found."
exit 1
fi
FAILED=()
for pkg in "${PACKAGES[@]}"; do
name="$(basename "$pkg")"
echo "========================================="
echo "Testing: $name"
echo "========================================="
# Install from git URL with subdirectory (simulates real-world usage)
echo "[$name] pip install ..."
pip install "$pkg" --verbose
# Verify import works
module="${name//-/_}"
echo "[$name] Verifying import of $module ..."
python -c "import $module; print(f'{$module.__name__} OK')"
echo "[$name] PASSED"
echo
done
if [ ${#FAILED[@]} -ne 0 ]; then
echo "FAILED packages: ${FAILED[*]}"
exit 1
fi
echo "All ${#PACKAGES[@]} package(s) passed."
echo
echo "Installed sizes:"
for pkg in "${PACKAGES[@]}"; do
name="$(basename "$pkg")"
module="${name//-/_}"
mod_dir="$(python -c "import $module, os; print(os.path.dirname($module.__file__))")"
size="$(du -sh "$mod_dir" | cut -f1)"
echo " $name: $size"
done