use base "anacondatest";
use strict;
use testapi;
use anaconda;

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;
    # inst.addrepo doesn't actually work in < F29, so don't check it
    my $version = lc(get_var("VERSION"));
    if ($addrepourl && ($version eq 'rawhide' || $version > 28)) {
        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 =~ 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
        # 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. We need
        # (added|enabled) till F28 goes EOL: the log line was changed
        # in Rawhide after F28 came out. ('anaconda'|'') is a work
        # around for an anaconda bug that only appears in F29-era
        # Rawhide, can be removed when a build with
        # https://github.com/rhinstaller/anaconda/pull/1519
        # is done.
        assert_script_run 'grep "\(added\|enabled\) repo: ' . "\\('anaconda'\\|''\\).*${repourl}" . '" /tmp/packaging.log';
    }
    if ($repourl) {
        # check we don't have an error indicating our repo wasn't used
        assert_script_run '! grep "base repo.*not valid" /tmp/packaging.log';
    }
    # 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: