forked from wolph/python-progressbar
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_progressbar_command.py
More file actions
102 lines (75 loc) · 2.91 KB
/
test_progressbar_command.py
File metadata and controls
102 lines (75 loc) · 2.91 KB
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import io
import progressbar.__main__ as main
import pytest
def test_size_to_bytes():
assert main.size_to_bytes('1') == 1
assert main.size_to_bytes('1k') == 1024
assert main.size_to_bytes('1m') == 1048576
assert main.size_to_bytes('1g') == 1073741824
assert main.size_to_bytes('1p') == 1125899906842624
assert main.size_to_bytes('1024') == 1024
assert main.size_to_bytes('1024k') == 1048576
assert main.size_to_bytes('1024m') == 1073741824
assert main.size_to_bytes('1024g') == 1099511627776
assert main.size_to_bytes('1024p') == 1152921504606846976
def test_filename_to_bytes(tmp_path):
file = tmp_path / 'test'
file.write_text('test')
assert main.size_to_bytes(f'@{file}') == 4
with pytest.raises(FileNotFoundError):
main.size_to_bytes(f'@{tmp_path / "nonexistent"}')
def test_create_argument_parser():
parser = main.create_argument_parser()
args = parser.parse_args(
['-p', '-t', '-e', '-r', '-a', '-b', '-8', '-T', '-n', '-q',
'input', '-o', 'output'])
assert args.progress is True
assert args.timer is True
assert args.eta is True
assert args.rate is True
assert args.average_rate is True
assert args.bytes is True
assert args.bits is True
assert args.buffer_percent is True
assert args.last_written is None
assert args.format is None
assert args.numeric is True
assert args.quiet is True
assert args.input == ['input']
assert args.output == 'output'
def test_main_binary(capsys):
# Call the main function with different command line arguments
main.main(
['-p', '-t', '-e', '-r', '-a', '-b', '-8', '-T', '-n', '-q', __file__])
captured = capsys.readouterr()
assert 'test_main(capsys):' in captured.out
def test_main_lines(capsys):
# Call the main function with different command line arguments
main.main(
['-p', '-t', '-e', '-r', '-a', '-b', '-8', '-T', '-n', '-q', '-l',
'-s', f'@{__file__}',
__file__])
captured = capsys.readouterr()
assert 'test_main(capsys):' in captured.out
class Input(io.StringIO):
buffer: io.BytesIO
@classmethod
def create(cls, text: str):
instance = cls(text)
instance.buffer = io.BytesIO(text.encode())
return instance
def test_main_lines_output(monkeypatch, tmp_path):
text = 'my input'
monkeypatch.setattr('sys.stdin', Input.create(text))
output_filename = tmp_path / 'output'
main.main(['-l', '-o', str(output_filename)])
assert output_filename.read_text() == text
def test_main_bytes_output(monkeypatch, tmp_path):
text = 'my input'
monkeypatch.setattr('sys.stdin', Input.create(text))
output_filename = tmp_path / 'output'
main.main(['-o', str(output_filename)])
assert output_filename.read_text() == f'{text}'
def test_missing_input(tmp_path):
with pytest.raises(SystemExit):
main.main([str(tmp_path / 'output')])