2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-12 12:36:23 +00:00

test(genesis): cover version 1 publication

This commit is contained in:
Vinícius Ferrão
2026-09-04 15:22:30 -03:00
parent 5a4be596f4
commit ed3455a51b
2 changed files with 60 additions and 3 deletions
+28 -2
View File
@@ -64,6 +64,22 @@ my $RELEASE = build_package_release(
revision => $xcat_revision,
epoch => $source_date_epoch,
);
my @version_1_architectures = grep { $_ ne 's390x' } @architectures;
my $VERSION_1_RELEASE = build_package_release(
root => "$tmp/version-1-release-fixture",
format => 'rpm',
architectures => \@version_1_architectures,
packager => $PACKAGER,
version => $xcat_version,
release => $xcat_release,
revision => $xcat_revision,
epoch => $source_date_epoch,
);
write_release_manifest(
$VERSION_1_RELEASE, $xcat_version, $xcat_release, $xcat_revision,
$source_date_epoch, join(',', @version_1_architectures), 'rpm', 1,
);
write_checksums($VERSION_1_RELEASE);
# The shipped manifest must describe the shared repo, else nothing can gate it.
{
@@ -155,10 +171,20 @@ sub run_publish {
like($out, qr/\[verify-repo\] common complete/, 'the shared repo is gated against [common]');
}
{
my ($rc, $out, $common) = run_publish($VERSION_1_RELEASE, 'version-1');
is($rc, 0, 'a complete version 1 release publishes') or diag($out);
is(scalar(grep { !/\.src\.rpm$/ } glob("$common/*.rpm")),
scalar(@version_1_architectures),
'the version 1 repository keeps its seven architectures');
ok(!glob("$common/" . rpm_package_name('s390x') . '-*.rpm'),
'the version 1 repository does not require s390x');
}
# ---- an incomplete release is refused, and publishes nothing --------------------------------------
{
my $partial = "$tmp/partial-release";
my $missing_architecture = $architectures[-1];
my $missing_architecture = 's390x';
my $missing_package = rpm_package_name($missing_architecture);
my @partial_architectures = grep { $_ ne $missing_architecture } @architectures;
make_path("$partial/rpm", "$partial/srpm");
@@ -183,7 +209,7 @@ sub run_publish {
{
my $inconsistent = "$tmp/inconsistent-release";
my $missing_package = rpm_package_name($architectures[-1]);
my $missing_package = rpm_package_name('s390x');
copy_tree($RELEASE, $inconsistent);
for my $directory (qw(rpm srpm)) {
my @packages = glob("$inconsistent/$directory/$missing_package-*");
+32 -1
View File
@@ -29,7 +29,9 @@ use XCAT::GenesisRelease qw(
use XCAT::GenesisReleaseTest qw(
build_package_release
run_capture
write_checksums
write_forkmanager_stub
write_release_manifest
);
my $repo_root = abs_path("$FindBin::Bin/..");
@@ -73,11 +75,12 @@ SKIP: {
}
SKIP: {
skip 'APT repository tools are not installed', 59
skip 'APT repository tools are not installed', 62
unless $^O eq 'linux'
&& command_exists('dpkg-deb')
&& command_exists('apt-ftparchive');
test_deb_consumer();
test_version_1_deb_consumer();
test_legacy_deb_consumer();
test_partial_deb_release();
test_publish_lock();
@@ -524,6 +527,34 @@ sub test_deb_consumer {
'pooled package still matches the verified release');
}
sub test_version_1_deb_consumer {
my @release_architectures = grep { $_ ne 's390x' } architectures();
my $release_root = make_package_release(
"$tmp/deb-version-1", 'deb', @release_architectures,
);
write_release_manifest(
$release_root, $version, $release, $revision, $epoch,
join(',', @release_architectures), 'deb', 1,
);
write_checksums($release_root);
my $apt_root = "$tmp/apt-version-1";
my $output = "$tmp/deb-version-1-output";
stage_apt_suites($output, "$tmp/deb-version-1-legacy");
my $log = "$tmp/deb-version-1.log";
my $status = run_apt_consumer(
log => $log, output => $output, apt_dir => $apt_root,
extra => [ '--genesis-release', $release_root ],
);
my $pool = "$apt_root/pool/main/xcat-genesis-openembedded";
is($status, 0, 'APT accepts a complete version 1 release');
is(scalar(genesis_deb_names($pool)), scalar(@release_architectures),
'the version 1 pool keeps its seven architectures');
is(scalar(grep { /s390x/ } genesis_deb_names($pool)), 0,
'the version 1 pool does not require s390x');
}
sub test_signed_common_rpm_repository {
my $release_root = make_package_release("$tmp/rpm-signed", 'rpm');
my $package = "xCAT-genesis-openembedded-x86_64-$version-$release.noarch.rpm";