import pytest

from pip._internal.utils.distutils_args import parse_distutils_args


def test_unknown_option_is_ok():
    result = parse_distutils_args(["--foo"])
    assert not result


def test_option_is_returned():
    result = parse_distutils_args(["--prefix=hello"])
    assert result["prefix"] == "hello"


def test_options_are_clobbered():
    # Matches the current setuptools behavior that the last argument
    # wins.
    result = parse_distutils_args(["--prefix=hello", "--prefix=world"])
    assert result["prefix"] == "world"


def test_multiple_options_work():
    result = parse_distutils_args(["--prefix=hello", "--root=world"])
    assert result["prefix"] == "hello"
    assert result["root"] == "world"


def test_multiple_invocations_do_not_keep_options():
    result = parse_distutils_args(["--prefix=hello1"])
    assert len(result) == 1
    assert result["prefix"] == "hello1"

    result = parse_distutils_args(["--root=world1"])
    assert len(result) == 1
    assert result["root"] == "world1"


@pytest.mark.parametrize("name,value", [
    ("exec-prefix", "1"),
    ("home", "2"),
    ("install-base", "3"),
    ("install-data", "4"),
    ("install-headers", "5"),
    ("install-lib", "6"),
    ("install-platlib", "7"),
    ("install-purelib", "8"),
    ("install-scripts", "9"),
    ("prefix", "10"),
    ("root", "11"),
])
def test_all_value_options_work(name, value):
    result = parse_distutils_args(["--{}={}".format(name, value)])
    key_name = name.replace("-", "_")
    assert result[key_name] == value


def test_user_option_works():
    result = parse_distutils_args(["--user"])
    assert result["user"] == 1
