1import io
2import pytest
3import progressbar
4
5
6@pytest.mark.parametrize('value,expected', [
7    (None, None),
8    ('', None),
9    ('1', True),
10    ('y', True),
11    ('t', True),
12    ('yes', True),
13    ('true', True),
14    ('0', False),
15    ('n', False),
16    ('f', False),
17    ('no', False),
18    ('false', False),
19])
20def test_env_flag(value, expected, monkeypatch):
21    if value is not None:
22        monkeypatch.setenv('TEST_ENV', value)
23    assert progressbar.utils.env_flag('TEST_ENV') == expected
24
25    if value:
26        monkeypatch.setenv('TEST_ENV', value.upper())
27        assert progressbar.utils.env_flag('TEST_ENV') == expected
28
29    monkeypatch.undo()
30
31
32def test_is_terminal(monkeypatch):
33    fd = io.StringIO()
34
35    monkeypatch.delenv('PROGRESSBAR_IS_TERMINAL', raising=False)
36    monkeypatch.delenv('JPY_PARENT_PID', raising=False)
37
38    assert progressbar.utils.is_terminal(fd) is False
39    assert progressbar.utils.is_terminal(fd, True) is True
40    assert progressbar.utils.is_terminal(fd, False) is False
41
42    monkeypatch.setenv('JPY_PARENT_PID', '123')
43    assert progressbar.utils.is_terminal(fd) is True
44    monkeypatch.delenv('JPY_PARENT_PID')
45
46    # Sanity check
47    assert progressbar.utils.is_terminal(fd) is False
48
49    monkeypatch.setenv('PROGRESSBAR_IS_TERMINAL', 'true')
50    assert progressbar.utils.is_terminal(fd) is True
51    monkeypatch.setenv('PROGRESSBAR_IS_TERMINAL', 'false')
52    assert progressbar.utils.is_terminal(fd) is False
53    monkeypatch.delenv('PROGRESSBAR_IS_TERMINAL')
54
55    # Sanity check
56    assert progressbar.utils.is_terminal(fd) is False
57