use base "installedtest";
use strict;
use testapi;
use utils;

sub run {

    my $self = shift;
    $self->root_console(tty=>3);

    # list available branches
    assert_script_run "ostree remote refs fedora-iot";

    # check arch
    my $arch = lc(get_var("ARCH"));

    # set default for rawhide or devel
    my $rebase = "stable";

    # if testing the current release, rebase to devel
    unless (script_run "rpm-ostree status -b | grep stable") {
        $rebase = "devel"
    }
    # rebase to the appropriate release, arch
    validate_script_output "rpm-ostree rebase fedora/${rebase}/${arch}/iot", sub { m/systemctl reboot/ }, 300;
    script_run "systemctl reboot", 0;

    boot_to_login_screen;
    $self->root_console(tty=>3);

    # check booted branch to make sure successful rebase
    if ($rebase eq "devel") {
        validate_script_output "rpm-ostree status -b", sub { m/devel/ }, 300;
    }
    if ($rebase eq "stable") {
        validate_script_output "rpm-ostree status -b", sub { m/stable/ }, 300;
    }

    # rollback and reboot
    validate_script_output "rpm-ostree rollback", sub { m/systemctl reboot/ }, 300;
    script_run "systemctl reboot", 0;

    boot_to_login_screen;
    $self->root_console(tty=>3);

    # check to make sure rollback successful, also account for branched (devel)
    if ($rebase eq "devel") {
        validate_script_output "rpm-ostree status -b", sub { m/stable/ }, 300;
    }
    if ($rebase eq "stable") {
        validate_script_output "rpm-ostree status -b", sub { m/rawhide|devel/ }, 300;
    }
}

sub test_flags {
    return { fatal => 1 };
}

1;

# vim: set sw=4 et: