• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

gforcada / haproxy_log_analysis / 3608765361

pending completion
3608765361

push

github

GitHub
Merge pull request #52 from gforcada/fix-top-commands-output

26 of 26 new or added lines in 2 files covered. (100.0%)

1553 of 1554 relevant lines covered (99.94%)

1.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

98.28
/haproxy/tests/test_main.py
1
import sys
1✔
2

3
import pytest
1✔
4

5
from haproxy.main import create_parser, main, parse_arguments
1✔
6
from haproxy.utils import VALID_COMMANDS, VALID_FILTERS
1✔
7

8
PY310_OR_HIGHER = sys.version_info[1] > 9
1✔
9

10

11
@pytest.fixture
1✔
12
def default_arguments():
1✔
13
    """Return all the expected arguments the main function expects."""
14
    return {
1✔
15
        'start': None,
16
        'delta': None,
17
        'log': 'haproxy/tests/files/small.log',
18
        'commands': ['counter'],
19
        'negate_filter': None,
20
        'filters': None,
21
        'list_commands': False,
22
        'list_filters': False,
23
        'json': False,
24
        'invalid_lines': False,
25
    }
26

27

28
@pytest.mark.parametrize(
1✔
29
    'switch, listing',
30
    [('list-filters', VALID_FILTERS), ('list-commands', VALID_COMMANDS)],
31
)
32
def test_list_filters_and_commands(capsys, switch, listing):
1✔
33
    """Test that one can request the filters/commands to be listed."""
34
    parser = create_parser()
1✔
35
    data = parse_arguments(parser.parse_args([f'--{switch}']))
1✔
36
    argument = switch.replace('-', '_')
1✔
37
    for key in data:
1✔
38
        expected = None
1✔
39
        if key == argument:
1✔
40
            expected = True
1✔
41
        assert data[key] is expected
1✔
42
    main(data)
1✔
43
    output_text = capsys.readouterr().out
1✔
44
    for name in listing:
1✔
45
        assert f'{name}: ' in output_text
1✔
46

47

48
def test_show_help(capsys):
1✔
49
    """Check that the help is shown if no arguments are given."""
50
    parser = create_parser()
1✔
51
    data = parse_arguments(parser.parse_args([]))
1✔
52
    main(data)
1✔
53
    output_text = capsys.readouterr().out
1✔
54
    if PY310_OR_HIGHER:
1✔
55
        assert 'options:' in output_text
1✔
56
    else:
57
        assert 'optional arguments:' in output_text
×
58
    assert '--list-filters ' in output_text
1✔
59
    assert '--list-commands ' in output_text
1✔
60

61

62
def test_main(capsys, default_arguments):
1✔
63
    """Check that the main function works as expected with default arguments."""
64
    main(default_arguments)
1✔
65
    output_text = capsys.readouterr().out
1✔
66
    assert 'COUNTER\n=======\n9' in output_text
1✔
67

68

69
def test_main_with_filter(capsys, default_arguments):
1✔
70
    """Check that the filters are applied as expected."""
71
    default_arguments['filters'] = [
1✔
72
        ('server', 'instance1'),
73
    ]
74
    main(default_arguments)
1✔
75
    output_text = capsys.readouterr().out
1✔
76
    assert 'COUNTER\n=======\n4' in output_text
1✔
77

78

79
def test_main_negate_filter(capsys, default_arguments):
1✔
80
    """Check that filters can be reversed."""
81
    default_arguments['filters'] = [
1✔
82
        ('server', 'instance1'),
83
    ]
84
    default_arguments['negate_filter'] = True
1✔
85
    main(default_arguments)
1✔
86
    output_text = capsys.readouterr().out
1✔
87
    assert 'COUNTER\n=======\n5' in output_text
1✔
88

89

90
def test_print_no_output(capsys, default_arguments):
1✔
91
    """Check that the print header is not shown."""
92
    default_arguments['commands'] = ['print']
1✔
93
    main(default_arguments)
1✔
94
    output_text = capsys.readouterr().out
1✔
95
    assert 'PRINT\n=====' not in output_text
1✔
96

97

98
def test_json_output(capsys, default_arguments):
1✔
99
    """Check that the JSON switch is used and JSON output is printed."""
100
    default_arguments['json'] = True
1✔
101
    main(default_arguments)
1✔
102
    output_text = capsys.readouterr().out
1✔
103
    assert 'COUNTER\n=======\n9' not in output_text
1✔
104
    assert '{"COUNTER": 9}' in output_text
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc