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:
@@ -119,7 +119,7 @@ pub fn parse_pkgfile(content: &str) -> Result<PackageDefinition> {
|
|||||||
},
|
},
|
||||||
source: SourceInfo {
|
source: SourceInfo {
|
||||||
url: template_url,
|
url: template_url,
|
||||||
sha256: "FIXME_CHECKSUM".repeat(4)[..64].to_string(), // Placeholder
|
sha256: "a".repeat(64), // Placeholder
|
||||||
git: String::new(),
|
git: String::new(),
|
||||||
branch: String::new(),
|
branch: String::new(),
|
||||||
tag: String::new(),
|
tag: String::new(),
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ pub fn parse_ebuild(content: &str, filename: &str) -> Result<PackageDefinition>
|
|||||||
},
|
},
|
||||||
source: SourceInfo {
|
source: SourceInfo {
|
||||||
url: source_url,
|
url: source_url,
|
||||||
sha256: "FIXME_CHECKSUM".repeat(4)[..64].to_string(),
|
sha256: "a".repeat(64),
|
||||||
git: String::new(),
|
git: String::new(),
|
||||||
branch: String::new(),
|
branch: String::new(),
|
||||||
tag: String::new(),
|
tag: String::new(),
|
||||||
|
|||||||
@@ -175,13 +175,58 @@ fi
|
|||||||
# Unit tests
|
# Unit tests
|
||||||
timed "dpack.unit_tests" cargo test || true
|
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"
|
DPACK="${PROJECT_ROOT}/src/dpack/target/release/dpack"
|
||||||
if [ -x "$DPACK" ]; then
|
if [ -x "$DPACK" ]; then
|
||||||
$DPACK --version &>/dev/null && record "dpack.cli.version" "pass" || record "dpack.cli.version" "fail"
|
$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 --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
|
fi
|
||||||
|
|
||||||
cd "${PROJECT_ROOT}"
|
cd "${PROJECT_ROOT}"
|
||||||
|
|||||||
Reference in New Issue
Block a user