This repository was archived by the owner on Feb 11, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathtest_click.py
72 lines (55 loc) · 2.17 KB
/
test_click.py
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
import pytest
import click
from click.testing import CliRunner
from configmanager import Config, PlainConfig
def test_click_option_and_click_argument():
config = Config({
'uploads': {
'threads': 5,
'dir': '/tmp',
}
})
assert config.click
assert callable(config.click.option)
assert callable(config.click.argument)
option = config.click.option('--uploads-threads', config.uploads.threads)
assert callable(option)
with pytest.raises(TypeError):
config.click.argument('uploads_dir', config.uploads.dir)
argument = config.click.argument('uploads_dir', config.uploads.dir, required=False)
assert callable(argument)
@click.command()
@config.click.argument('uploads_dir', config.uploads.dir, required=False)
@config.click.option('--uploads-threads', config.uploads.threads)
def my_command(uploads_dir, uploads_threads):
assert type(uploads_threads) == int
print('{} {!r}'.format(uploads_dir, uploads_threads))
# Use defaults
result = CliRunner().invoke(my_command)
assert result.exit_code == 0
assert result.output == '/tmp 5\n'
# Use command-line overrides
result = CliRunner().invoke(my_command, ['/tmp/uploads', '--uploads-threads', '10'])
assert result.exit_code == 0
assert result.output == '/tmp/uploads 10\n'
def test_click_with_plain_config():
config = PlainConfig({
'uploads': {
'threads': 5,
'dir': '/tmp',
}
})
@click.command()
@config.click.argument('uploads_dir', config.uploads.get_item('dir'), required=False)
@config.click.option('--uploads-threads', config.uploads.get_item('threads'))
def my_command(uploads_dir, uploads_threads):
assert type(uploads_threads) == int
print('{} {!r}'.format(uploads_dir, uploads_threads))
# Use defaults
result = CliRunner().invoke(my_command)
assert result.exit_code == 0
assert result.output == '/tmp 5\n'
# Use command-line overrides
result = CliRunner().invoke(my_command, ['/tmp/uploads', '--uploads-threads', '10'])
assert result.exit_code == 0
assert result.output == '/tmp/uploads 10\n'