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:
+28
-2
@@ -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-*");
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user