"""Unit tests: set_local_alt_values"""
import pytest
import utils


@pytest.mark.parametrize(
    'override', [
        False,
        'class',
        'arch',
        'os',
        'hostname',
        'user',
        ],
    ids=[
        'no-override',
        'override-class',
        'override-arch',
        'override-os',
        'override-hostname',
        'override-user',
        ]
    )
@pytest.mark.usefixtures('ds1_copy')
def test_set_local_alt_values(
        runner, yadm, paths, tst_arch, tst_sys, tst_host, tst_user, override):
    """Use issue_legacy_path_warning"""
    script = f"""
        YADM_TEST=1 source {yadm} &&
        set_operating_system &&
        YADM_DIR={paths.yadm} YADM_DATA={paths.data} configure_paths &&
        set_local_alt_values
        echo "class='$local_class'"
        echo "arch='$local_arch'"
        echo "os='$local_system'"
        echo "host='$local_host'"
        echo "user='$local_user'"
    """

    if override == 'class':
        utils.set_local(paths, override, 'first')
        utils.set_local(paths, override, 'override', add=True)
    elif override:
        utils.set_local(paths, override, 'override')

    run = runner(command=['bash'], inp=script)
    assert run.success
    assert run.err == ''

    if override == 'class':
        assert "class='override'" in run.out
    else:
        assert "class=''" in run.out

    if override == 'arch':
        assert "arch='override'" in run.out
    else:
        assert f"arch='{tst_arch}'" in run.out

    if override == 'os':
        assert "os='override'" in run.out
    else:
        assert f"os='{tst_sys}'" in run.out

    if override == 'hostname':
        assert "host='override'" in run.out
    else:
        assert f"host='{tst_host}'" in run.out

    if override == 'user':
        assert "user='override'" in run.out
    else:
        assert f"user='{tst_user}'" in run.out


def test_distro_and_family(runner, yadm):
    """Assert that local_distro/local_distro_family are set"""

    script = f"""
        YADM_TEST=1 source {yadm}
        function config() {{ echo "$1"; }}
        function query_distro() {{ echo "testdistro"; }}
        function query_distro_family() {{ echo "testfamily"; }}
        set_local_alt_values
        echo "distro='$local_distro'"
        echo "distro_family='$local_distro_family'"
    """
    run = runner(command=['bash'], inp=script)
    assert run.success
    assert run.err == ''
    assert "distro='testdistro'" in run.out
    assert "distro_family='testfamily'" in run.out