mirror of
https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
synced 2024-11-19 04:43:07 +00:00
130 lines
5.9 KiB
Perl
130 lines
5.9 KiB
Perl
|
use base "installedtest";
|
||
|
use strict;
|
||
|
use testapi;
|
||
|
use utils;
|
||
|
|
||
|
sub run {
|
||
|
my $self = shift;
|
||
|
my $release = get_release_number;
|
||
|
my $rawrel = get_var("RAWREL");
|
||
|
my $curr = get_var("TEST") =~ "upgrade_2" ? get_var("UP2REL") : get_var("UP1REL");
|
||
|
my $desktop = get_var("DESKTOP");
|
||
|
my $user = get_var("USER_LOGIN", "test");
|
||
|
my $pword = get_var("USER_PASSWORD", "weakpassword");
|
||
|
|
||
|
# As this is designed, the 'upgrade_preinstall' test script
|
||
|
# runs before this one and ends on the root console. Therefore,
|
||
|
# we can assume that we are still on that root console, so
|
||
|
# we can safely use script assertions.
|
||
|
|
||
|
# Make serial console writable for everyone, so that we
|
||
|
# can use script assertions for further commands as well.
|
||
|
assert_script_run("chmod 666 /dev/${serialdev}");
|
||
|
|
||
|
if ($desktop eq "gnome") {
|
||
|
# Install Gnome specific packages
|
||
|
assert_script_run("dnf install -y jq dbus-x11");
|
||
|
# FIXME on Fedora 40, update gnome-software from updates-testing
|
||
|
# to ensure we have the fix for
|
||
|
# https://gitlab.gnome.org/GNOME/gnome-software/-/issues/2514
|
||
|
# drop this when the update is stable
|
||
|
if ($curr eq "40") {
|
||
|
assert_script_run("dnf -y --enablerepo=updates-testing update gnome-software", 180);
|
||
|
}
|
||
|
# Leave the CLI and come back to the login screen.
|
||
|
desktop_vt();
|
||
|
# Log onto the graphical session
|
||
|
send_key("ret");
|
||
|
wait_still_screen(1);
|
||
|
type_very_safely("$pword\n");
|
||
|
handle_welcome_screen();
|
||
|
check_desktop();
|
||
|
# After the login, let us wait that everything settles
|
||
|
# and that we are not too quick on the system.
|
||
|
wait_still_screen(5);
|
||
|
# According to the ticket, the 'fedora.json' file
|
||
|
# which lists the available versions will be created
|
||
|
# after the Software starts. Let's start it then on Gnome.
|
||
|
menu_launch_type("software");
|
||
|
# When Software is started for the first time, it asks whether
|
||
|
# a user wants to use Third Party software. We want to Ignore
|
||
|
# this and proceed, so if we see that we click on Ignore.
|
||
|
if (check_screen("gnome_software_ignore", timeout => 60)) {
|
||
|
click_lastmatch();
|
||
|
}
|
||
|
# Wait a couple of second, just in case the file needs a little
|
||
|
# longer to be created.
|
||
|
sleep(10);
|
||
|
# Close Software
|
||
|
send_key("alt-f4");
|
||
|
}
|
||
|
|
||
|
# Switch back to the CLI for further settings.
|
||
|
$self->root_console(tty => 3);
|
||
|
|
||
|
# For Gnome desktop only.
|
||
|
if ($desktop eq "gnome") {
|
||
|
# FIXME workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2268590
|
||
|
# upgrade fails if modular repo definitions are present
|
||
|
# remove when that is fixed
|
||
|
unless (script_run "ls /etc/yum.repos.d/*modul*") {
|
||
|
record_soft_failure "Modular repos present! Upgrade will fail, so removing";
|
||
|
assert_script_run "rm -f /etc/yum.repos.d/*modul*";
|
||
|
}
|
||
|
# Switch to a user account
|
||
|
enter_cmd("su -l $user");
|
||
|
# Navigate to the version file directory
|
||
|
assert_script_run("cd ~/.cache/gnome-software/fedora-pkgdb-collections");
|
||
|
# Replace the word 'devel' with the Rawhide version number
|
||
|
# so Rawhide behaves like other releases, if we're upgrading
|
||
|
# to Rawhide
|
||
|
if ($release eq $rawrel) {
|
||
|
assert_script_run("jq '(.collections |= map(if .version == \"devel\" then .koji_name = \"f$rawrel\" | .version = \"$rawrel\" else . end))' fedora.json > fedora-updated.json");
|
||
|
assert_script_run("mv fedora-updated.json fedora.json");
|
||
|
}
|
||
|
# Now make sure the versions we're trying to upgrade from and to
|
||
|
# are both 'active'
|
||
|
assert_script_run("jq '(.collections |= map(if .version == \"$release\" or .version == \"$curr\" then .status = \"Active\" else . end))' fedora.json > fedora-updated.json");
|
||
|
assert_script_run("mv fedora-updated.json fedora.json");
|
||
|
# upload the modified file for debugging
|
||
|
upload_logs("fedora.json", failok => 1);
|
||
|
|
||
|
# Disable blanking the screen on inactivity, because if the screen gets switched off
|
||
|
# we will have no way to make it active again.
|
||
|
assert_script_run("dbus-launch --exit-with-session gsettings set org.gnome.desktop.screensaver idle-activation-enabled false");
|
||
|
assert_script_run("dbus-launch --exit-with-session gsettings set org.gnome.desktop.screensaver lock-enabled false");
|
||
|
assert_script_run("dbus-launch --exit-with-session gsettings set org.gnome.desktop.lockdown disable-lock-screen true");
|
||
|
# Logout the regular user
|
||
|
enter_cmd("exit");
|
||
|
}
|
||
|
# For KDE desktop only.
|
||
|
elsif ($desktop eq "kde") {
|
||
|
# Replace "rawhide" with the Rawhide version number if we're
|
||
|
# upgrading to Rawhide
|
||
|
assert_script_run("sed -i 's,rawhide,$rawrel,g' /usr/share/metainfo/org.fedoraproject.fedora.metainfo.xml") if ($release eq $rawrel);
|
||
|
# Now mark the release we want to upgrade to as stable
|
||
|
assert_script_run("sed -i 's,version=\"$release\" type=\".*\" date=,version=\"$release\" type=\"stable\" date=,g' /usr/share/metainfo/org.fedoraproject.fedora.metainfo.xml");
|
||
|
# Upload the modified file for debugging
|
||
|
upload_logs("/usr/share/metainfo/org.fedoraproject.fedora.metainfo.xml", failok => 1);
|
||
|
# Switch to the regular user
|
||
|
enter_cmd("su -l $user");
|
||
|
# Wipe last update notification time
|
||
|
assert_script_run("kwriteconfig5 --file PlasmaDiscoverUpdates --group Global --key LastNotificationTime --delete");
|
||
|
# Disable the screen locker
|
||
|
assert_script_run("kwriteconfig5 --file kscreenlockerrc --group Daemon --key Autolock false qdbus org.freedesktop.ScreenSaver /ScreenSaver configure");
|
||
|
# Exit regular user
|
||
|
enter_cmd("exit");
|
||
|
}
|
||
|
|
||
|
# Reboot system to load changes
|
||
|
enter_cmd("reboot");
|
||
|
}
|
||
|
|
||
|
sub test_flags {
|
||
|
return {fatal => 1};
|
||
|
}
|
||
|
|
||
|
1;
|
||
|
|
||
|
# vim: set sw=4 et:
|