summaryrefslogtreecommitdiff
path: root/tests/unit/test_option.py
blob: 52aef272149501bdeabcc69b6403c2b0f9b20c1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"""Unit tests for flake8.options.manager.Option."""
import functools
from unittest import mock

import pytest

from flake8.options import manager


def test_to_argparse():
    """Test conversion to an argparse arguments."""
    opt = manager.Option(
        short_option_name="-t",
        long_option_name="--test",
        action="count",
        parse_from_config=True,
        normalize_paths=True,
    )
    assert opt.normalize_paths is True
    assert opt.parse_from_config is True

    args, kwargs = opt.to_argparse()
    assert args == ["-t", "--test"]
    assert kwargs == {"action": "count", "type": mock.ANY}
    assert isinstance(kwargs["type"], functools.partial)


def test_to_optparse():
    """Test that .to_optparse() produces a useful error message."""
    with pytest.raises(AttributeError) as excinfo:
        manager.Option("--foo").to_optparse
    (msg,) = excinfo.value.args
    assert msg == "to_optparse: flake8 now uses argparse"


def test_to_argparse_creates_an_option_as_we_expect():
    """Show that we pass all keyword args to argparse."""
    opt = manager.Option("-t", "--test", action="count")
    args, kwargs = opt.to_argparse()
    assert args == ["-t", "--test"]
    assert kwargs == {"action": "count"}


def test_config_name_generation():
    """Show that we generate the config name deterministically."""
    opt = manager.Option(
        long_option_name="--some-very-long-option-name",
        parse_from_config=True,
    )

    assert opt.config_name == "some_very_long_option_name"


def test_config_name_needs_long_option_name():
    """Show that we error out if the Option should be parsed from config."""
    with pytest.raises(ValueError):
        manager.Option("-s", parse_from_config=True)


def test_dest_is_not_overridden():
    """Show that we do not override custom destinations."""
    opt = manager.Option("-s", "--short", dest="something_not_short")
    assert opt.dest == "something_not_short"