2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-24 16:54:04 +00:00

test(genesis): cover inaccessible build cwd

This commit is contained in:
Vinícius Ferrão
2026-08-22 00:27:12 -03:00
parent 4d0ee7d5f1
commit c42e6b92ee
+43
View File
@@ -151,6 +151,13 @@ SKIP: {
exercise_packager('rpm');
}
SKIP: {
skip 'rpmbuild and rpm are not installed', 2
unless command_exists('rpmbuild') && command_exists('rpm');
skip 'root can traverse an unsearchable working directory', 2 if $> == 0;
exercise_packager_from_unsearchable_cwd();
}
SKIP: {
skip 'dpkg-deb is not installed', 6 unless command_exists('dpkg-deb');
exercise_packager('deb');
@@ -210,6 +217,42 @@ sub exercise_packager {
"$format package metadata passes");
}
sub exercise_packager_from_unsearchable_cwd {
my $cwd = "$tmp/unsearchable-cwd";
my $output = "$tmp/cwd-independent-rpm";
my $log = "$tmp/cwd-independent-rpm.log";
make_path($cwd);
my $pid = fork();
die "Cannot fork: $!\n" unless defined($pid);
if ($pid == 0) {
chdir($cwd) or die "Cannot enter test directory: $!\n";
chmod(0000, $cwd) or die "Cannot restrict test directory: $!\n";
open(STDOUT, '>:raw', $log) or die $!;
open(STDERR, '>&', STDOUT) or die $!;
exec(
$packager,
'--architecture', 'x86_64',
'--export-dir', $export,
'--output-dir', $output,
'--version', $version,
'--release', $release,
'--revision', $revision,
'--source-date-epoch', $epoch,
'--format', 'rpm',
) or die "Cannot run packager: $!\n";
}
waitpid($pid, 0);
my $status = $? >> 8;
chmod(0700, $cwd) or die "Cannot restore test directory: $!\n";
is($status, 0, 'RPM package ignores an inaccessible inherited working directory');
ok(
-f "$output/rpm/xCAT-genesis-base-x86_64-$version-$release.noarch.rpm",
'RPM package is published from an inaccessible inherited working directory',
);
}
sub exercise_builder_tmpdir {
my $source = "$tmp/tmpdir-xcat-core";
my $oe = "$source/xCAT-genesis-builder/oe";