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:
2026-03-19 16:37:34 +01:00
parent 8f9fa9f00e
commit 658289dc51
3 changed files with 50 additions and 5 deletions

View File

@@ -119,7 +119,7 @@ pub fn parse_pkgfile(content: &str) -> Result<PackageDefinition> {
},
source: SourceInfo {
url: template_url,
sha256: "FIXME_CHECKSUM".repeat(4)[..64].to_string(), // Placeholder
sha256: "a".repeat(64), // Placeholder
git: String::new(),
branch: String::new(),
tag: String::new(),

View File

@@ -139,7 +139,7 @@ pub fn parse_ebuild(content: &str, filename: &str) -> Result<PackageDefinition>
},
source: SourceInfo {
url: source_url,
sha256: "FIXME_CHECKSUM".repeat(4)[..64].to_string(),
sha256: "a".repeat(64),
git: String::new(),
branch: String::new(),
tag: String::new(),

View File

@@ -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}"