Test module:
/var/lib/openqa/share/tests/fedora/tests/_check_install_source.pm
use base "anacondatest";
use strict;
use testapi;
use anaconda;
use File::Basename;
sub run {
my $self = shift;
my $repourl;
my $addrepourl;
if (get_var("MIRRORLIST_GRAPHICAL")) {
$repourl = get_mirrorlist_url();
}
else {
$repourl = get_var("REPOSITORY_VARIATION", get_var("REPOSITORY_GRAPHICAL"));
$repourl = get_full_repo($repourl) if ($repourl);
$addrepourl = get_var("ADD_REPOSITORY_VARIATION");
$addrepourl = get_full_repo($addrepourl) if ($addrepourl);
}
# check that the repo was used
$self->root_console;
if ($addrepourl) {
if ($addrepourl =~ m,^nfs://,,) {
# this line tells us it set up a repo for our URL.
assert_script_run 'grep "Add the \'addrepo.*file:///run/install/sources/mount-.000-nfs-device" /tmp/syslog';
# ...this line tells us it added the repo called 'addrepo'
assert_script_run 'grep "Added the \'addrepo\'" /tmp/syslog';
# ...and this tells us it worked (I hope). This is for dnf4
if (script_run 'grep "Load metadata for the \'addrepo\'" /tmp/syslog') {
# this is dnf5 - switched in F43, 2025-07
assert_script_run 'grep "Loading repomd and primary for repo .addrepo." /tmp/dnf.log';
}
# dnf4 again
if (script_run 'grep -E "Loaded metadata from.*file:///run/install/sources/mount-.000-nfs-device" /tmp/syslog') {
# dnf5
assert_script_run 'grep "Writing primary cache for repo .addrepo." /tmp/dnf.log';
}
}
}
if ($repourl =~ /^hd:/) {
assert_script_run "mount |grep 'fedora_image.iso'";
}
elsif ($repourl =~ s/^nfs://) {
$repourl =~ s/^nfsvers=.://;
# the above both checks if we're dealing with an NFS URL, and
# strips the 'nfs:' and 'nfsvers=.:' from it if so
# remove image.iso name when dealing with nfs iso
if ($repourl =~ /\.iso/) {
$repourl = dirname $repourl;
}
# check the repo was actually mounted
assert_script_run "mount |grep nfs |grep '${repourl}'";
}
elsif ($repourl) {
# there are only three hard problems in software development:
# naming things, cache expiry, off-by-one errors...and quoting
assert_script_run 'grep "Added the \'anaconda\'" /tmp/anaconda.log /tmp/syslog';
if (script_run 'grep "Load metadata for the \'anaconda\'" /tmp/anaconda.log /tmp/syslog') {
# dnf5
assert_script_run 'grep "Loading repomd and primary for repo .anaconda." /tmp/dnf.log';
}
if (script_run 'grep "Loaded metadata from.*' . ${repourl} . '" /tmp/anaconda.log /tmp/syslog') {
assert_script_run 'grep "Writing primary cache for repo .anaconda." /tmp/dnf.log';
}
}
# just for convenience - sometimes it's useful to see these logs
# for a success case
upload_logs "/tmp/packaging.log", failok => 1;
upload_logs "/tmp/dnf.log", failok => 1;
upload_logs "/tmp/syslog", failok => 1;
select_console "tty6-console";
# Anaconda hub
assert_screen "anaconda_main_hub", 30;
}
sub test_flags {
return {fatal => 1};
}
1;
# vim: set sw=4 et: