4b8e411479
Summary: Root console in anaconda got broken by RHBZ #1222413 - no shell on tty2. Decided to clean up console use in general as part of fixing it. This creates a class 'fedorabase' and has 'anacondalog' and 'fedoralog' both inherit from it. boot_to_login_screen is moved there (as it seems appropriate) and it has a new method, console_login, which basically handles 'get me a shell on a console': if we're already at one it returns, if not it'll type the user name and the password *if necessary* (sometimes it's not) and return once it sees a prompt. It takes a hash of named parameters for user, password and 'check', which is whether it should die if it fails to reach a console or not (some users don't want it to). anacondalog and fedoralog both get 'root_console' methods which do something appropriate and then call console_login; both have a hash of named parameters, anacondalog's version only bothers with 'check', while fedoralog's also accepts 'tty' to pick the tty to use. This also adjusts all things which try to get to a console prompt to use either root_console or console_login as appropriate. It also tweaks the needle tags a bit, drops some unneeded needles, and adds a new 'user console prompt' needle; we really just need two versions of the root prompt needle and two of the user prompt needle (one for <F23, one for F23+ - the console font changed in F23, and the @ character at least doesn't match between the two). I think we still need the <F23 case for upgrade tests, for now. Test Plan: Do a full test run and see that more tests succeed. I've done a run on happyassassin with a hack to workaround the SELinux issue for interactive installs, and the results look good. I also fiddled about a bit to test some different cases, like forcing a failure in a live test to test post_fail_hook (and hence root_console) in that scenario, and forcing failures after some console commands had been run to check that it DTRT when we've already reached a console, etc. Reviewers: jskladan, garretraziel Reviewed By: jskladan, garretraziel Subscribers: tflink Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D462
73 lines
2 KiB
Perl
73 lines
2 KiB
Perl
use base "anacondalog";
|
|
use strict;
|
|
use testapi;
|
|
|
|
sub run {
|
|
my $self = shift;
|
|
# Anaconda hub
|
|
assert_screen "anaconda_main_hub", 300; #
|
|
|
|
# Go into the Install Source spoke
|
|
assert_and_click "anaconda_main_hub_installation_source";
|
|
|
|
|
|
|
|
# select "http" on the network
|
|
assert_and_click "anaconda_install_source_on_the_network";
|
|
send_key "tab";
|
|
for (my $i=0; $i<4; $i++){
|
|
send_key "up";
|
|
}
|
|
assert_screen "anaconda_install_source_http_selected";
|
|
|
|
|
|
# insert the url
|
|
send_key "tab";
|
|
my $fedora_version = lc((split /_/, get_var("BUILD"))[0]);
|
|
my $repourl = "";
|
|
if ($fedora_version ne "rawhide"){
|
|
if (get_var("MIRRORLIST_GRAPHICAL")){
|
|
$fedora_version = "fedora-".$fedora_version;
|
|
}
|
|
}
|
|
|
|
if (get_var("MIRRORLIST_GRAPHICAL")){
|
|
$repourl = "mirrors.fedoraproject.org/mirrorlist?repo=".$fedora_version."&arch=".get_var('ARCH');
|
|
type_string $repourl;
|
|
|
|
# select as mirror list
|
|
assert_and_click "anaconda_install_source_repo_select_mirrorlist";
|
|
}
|
|
elsif (get_var("REPOSITORY_GRAPHICAL")){
|
|
$repourl = get_var("REPOSITORY_GRAPHICAL")."/".$fedora_version."/".get_var("ARCH")."/os";
|
|
type_string $repourl;
|
|
}
|
|
|
|
assert_and_click "anaconda_spoke_done";
|
|
|
|
# Anaconda hub
|
|
assert_screen "anaconda_main_hub", 300;
|
|
|
|
# check that the repo was used
|
|
$self->root_console;
|
|
type_string "grep \"".$repourl."\" /tmp/packaging.log"; # | grep \"added repo\"";
|
|
send_key "ret";
|
|
assert_screen "anaconda_install_source_check_repo_added";
|
|
send_key "ctrl-alt-f6";
|
|
|
|
# Anaconda hub
|
|
assert_screen "anaconda_main_hub", 30; #
|
|
|
|
}
|
|
|
|
sub test_flags {
|
|
# without anything - rollback to 'lastgood' snapshot if failed
|
|
# 'fatal' - whole test suite is in danger if this fails
|
|
# 'milestone' - after this test succeeds, update 'lastgood'
|
|
# 'important' - if this fails, set the overall state to 'fail'
|
|
return { fatal => 1 };
|
|
}
|
|
|
|
1;
|
|
|
|
# vim: set sw=4 et:
|