os-autoinst-distri-rocky/tests/_check_install_source.pm
Trevor Cooper 04c4a50c19
FEATURE: Add DNF_CONTENTDIR override support (#119)
* add dnf_contentdir library function and implement is sample tests

* Short circuit auto addition of _console_wait_login for tests without DESKTOP

* support use of REPOSITORY_GRAPHICAL and ADD_REPOSITORY_GRAPHICAL test variables

* deprecate addition of dnf_contentdir lib function

* create and use get_version_major utility function

* resolve mismatch of login type caused by incorrect template entries

* add and use _staging_repos_enable post-install test

* add install_package_set_* tests only to package-set flavor

* fix variable re-declaration warning/error

* add rocky-getting-started-tour needles

* release rocky-repos content require switch from mirrorlist to baseurl

* implement DNF_CONTENTDIR swap as post-install action before reboot/login

* temp disable _staging_repos_enable

* incomplete fix for _graphical_wait_login
- get_release_number is used heavily in our openQA but makes no sense in 
Rocky. Multiple possible solutions but this one allows 
`_graphical_wait_login` to pass. NEEDS_WORK
2022-07-10 16:05:04 -05:00

99 lines
4.1 KiB
Perl

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 "repo addrepo.*' . ${addrepourl} . '" /tmp/packaging.log';
# ...this line tells us it added the repo called 'addrepo'...
assert_script_run 'grep "\(added\|enabled\) repo: .addrepo." /tmp/packaging.log';
# ...and this line tells us it worked (I hope)
assert_script_run 'grep "enabled repo.*nfs" /tmp/packaging.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
# we need single quotes (at the perl level) around the start
# of this, so the backslashes are not interpreted by perl but
# passed through to ultimately be interpreted by 'grep'
# itself. We need double quotes around $repourl so that *is*
# interpreted by perl. And we need quotes around the entire
# expression at the bash level, and single quotes around the
# text 'anaconda' at the level of grep, as the string we're
# actually matching on literally has 'anaconda' in it.
if (script_run 'grep "enabled repo: ' . "'anaconda'.*${repourl}" . '" /tmp/packaging.log') {
# in F35+, the "enabled repo" log line is gone, instead
# we'll check some log messages from the dnf manager module
# that show up in anaconda.log. Can drop the above branch
# and only go with the below branch after F34 EOL
assert_script_run 'grep "added repo: ' . "'anaconda'.*${repourl}" . '" /tmp/packaging.log';
assert_script_run 'grep "Load metadata for the ' . "'anaconda'" . '" /tmp/anaconda.log';
assert_script_run 'grep "Loaded metadata from ' . ".*${repourl}" . '" /tmp/anaconda.log';
}
}
if ($repourl) {
# check we don't have an error indicating our repo wasn't used.
# we except error with 'cdrom/file' in it because this error:
# base repo (cdrom/file:///run/install/repo) not valid -- removing it
# *always* happens when booting a netinst (that's just anaconda
# trying to use the image itself as a repo and failing because it's
# not a DVD), and this was causing false failures when running
# universal tests on netinsts
if (get_var('FLAVOR') eq 'boot-iso') {
assert_script_run '! grep "base repo.*not valid" /tmp/packaging.log | grep -v "cdrom/file"';
} else {
script_run '! grep "base repo.*not valid" /tmp/packaging.log | grep -v "cdrom/file"';
}
}
# just for convenience - sometimes it's useful to see this log
# for a success case
upload_logs "/tmp/packaging.log", failok=>1;
send_key "ctrl-alt-f6";
# Anaconda hub
assert_screen "anaconda_main_hub", 30; #
}
sub test_flags {
return { fatal => 1 };
}
1;
# vim: set sw=4 et: