Fix 4 test failures from Proxmox VM report
1. converter panic (5 unit tests): "FIXME_CHECKSUM".repeat(4) is only 56 chars but was sliced to [..64], causing index-out-of-bounds panic. Both crux.rs and gentoo.rs converters now use "a".repeat(64) as the placeholder checksum instead. 2. dpack list/check exit code 1: these commands call PackageDb::open() which tries to create /var/lib/dpack/db — fails without root. Test runner now creates a temp dpack.conf pointing at a writable temp directory with repos symlinked from the project. Also added search and info smoke tests. 3. host.ovmf: not a code bug — edk2-ovmf just needs to be installed on the test VM (sudo pacman -S edk2-ovmf --noconfirm). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -175,13 +175,58 @@ fi
|
||||
# Unit tests
|
||||
timed "dpack.unit_tests" cargo test || true
|
||||
|
||||
# CLI smoke test
|
||||
# CLI smoke tests — use a temp config so we don't need root for /var/lib/dpack
|
||||
DPACK="${PROJECT_ROOT}/src/dpack/target/release/dpack"
|
||||
if [ -x "$DPACK" ]; then
|
||||
$DPACK --version &>/dev/null && record "dpack.cli.version" "pass" || record "dpack.cli.version" "fail"
|
||||
$DPACK --help &>/dev/null && record "dpack.cli.help" "pass" || record "dpack.cli.help" "fail"
|
||||
$DPACK list &>/dev/null && record "dpack.cli.list" "pass" || record "dpack.cli.list" "fail" "Exit code $?"
|
||||
$DPACK check &>/dev/null && record "dpack.cli.check" "pass" || record "dpack.cli.check" "fail" "Exit code $?"
|
||||
|
||||
# Create a temp dpack config pointing at writable directories
|
||||
DPACK_TEST_DIR=$(mktemp -d /tmp/dpack-test-XXXXX)
|
||||
mkdir -p "${DPACK_TEST_DIR}"/{db,repos,sources,build}
|
||||
# Symlink repos from the project
|
||||
ln -sf "${PROJECT_ROOT}/src/repos/core" "${DPACK_TEST_DIR}/repos/core"
|
||||
ln -sf "${PROJECT_ROOT}/src/repos/extra" "${DPACK_TEST_DIR}/repos/extra"
|
||||
ln -sf "${PROJECT_ROOT}/src/repos/desktop" "${DPACK_TEST_DIR}/repos/desktop"
|
||||
ln -sf "${PROJECT_ROOT}/src/repos/gaming" "${DPACK_TEST_DIR}/repos/gaming"
|
||||
|
||||
cat > "${DPACK_TEST_DIR}/dpack.conf" << DCONF
|
||||
[paths]
|
||||
db_dir = "${DPACK_TEST_DIR}/db"
|
||||
repo_dir = "${DPACK_TEST_DIR}/repos"
|
||||
source_dir = "${DPACK_TEST_DIR}/sources"
|
||||
build_dir = "${DPACK_TEST_DIR}/build"
|
||||
|
||||
[[repos]]
|
||||
name = "core"
|
||||
path = "${DPACK_TEST_DIR}/repos/core"
|
||||
priority = 0
|
||||
|
||||
[[repos]]
|
||||
name = "extra"
|
||||
path = "${DPACK_TEST_DIR}/repos/extra"
|
||||
priority = 10
|
||||
|
||||
[[repos]]
|
||||
name = "desktop"
|
||||
path = "${DPACK_TEST_DIR}/repos/desktop"
|
||||
priority = 20
|
||||
|
||||
[[repos]]
|
||||
name = "gaming"
|
||||
path = "${DPACK_TEST_DIR}/repos/gaming"
|
||||
priority = 30
|
||||
DCONF
|
||||
|
||||
DPACK_CMD="$DPACK --config ${DPACK_TEST_DIR}/dpack.conf"
|
||||
$DPACK_CMD list &>/dev/null && record "dpack.cli.list" "pass" || record "dpack.cli.list" "fail" "Exit code $?"
|
||||
$DPACK_CMD check &>/dev/null && record "dpack.cli.check" "pass" || record "dpack.cli.check" "fail" "Exit code $?"
|
||||
|
||||
# Test search finds packages in our repos
|
||||
$DPACK_CMD search zlib 2>/dev/null | grep -q "zlib" && record "dpack.cli.search" "pass" || record "dpack.cli.search" "fail" "zlib not found"
|
||||
$DPACK_CMD info zlib 2>/dev/null | grep -q "Compression" && record "dpack.cli.info" "pass" || record "dpack.cli.info" "fail" "info zlib failed"
|
||||
|
||||
rm -rf "${DPACK_TEST_DIR}"
|
||||
fi
|
||||
|
||||
cd "${PROJECT_ROOT}"
|
||||
|
||||
Reference in New Issue
Block a user