-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtests.py
More file actions
108 lines (81 loc) · 3.3 KB
/
tests.py
File metadata and controls
108 lines (81 loc) · 3.3 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
103
104
105
106
107
108
# Copyright (c) 2013-2016, 2018 Benjamin Althues <benjamin@babab.nl>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
from __future__ import absolute_import
from nose.tools import (
eq_,
raises,
)
import pycommand
from pycommand import util
class BasicTestCommand(pycommand.CommandBase):
usagestr = 'usage: pycommand-test [options]'
description = 'small description'
optionList = (
('help', ('h', False, 'show this help information')),
('file', ('f', '<filename>', 'use specified file')),
('version', ('', False, 'show version information')),
)
def test_args_empty():
'''Flags should be None by default'''
cmd = BasicTestCommand([])
eq_(cmd.flags['help'], None)
def test_no_error():
'''cmd.error should be None by default'''
cmd = BasicTestCommand(['-h'])
eq_(cmd.error, None)
def test_flags_short_without_argument():
'''When a flag is given, it's value should be True, else None'''
cmd = BasicTestCommand(['-h'])
eq_(cmd.flags['help'], True)
cmd = BasicTestCommand([''])
eq_(cmd.flags['help'], None)
def test_flags_short_with_argument():
'''If flags take arguments that should become the value, else None'''
cmd = BasicTestCommand(['-f', 'funny-cats.gif'])
eq_(cmd.flags['file'], 'funny-cats.gif')
cmd = BasicTestCommand([''])
eq_(cmd.flags['file'], None)
def test_flags_mixed1():
'''Test True/None status of defined flags with 1 argument'''
cmd = BasicTestCommand(['-h'])
eq_(cmd.flags['help'], True)
eq_(cmd.flags['file'], None)
eq_(cmd.flags['version'], None)
def test_flags_mixed2():
'''Test True/None status of defined flags with 2 arguments'''
cmd = BasicTestCommand(['-h', '--version'])
eq_(cmd.flags['help'], True)
eq_(cmd.flags['file'], None)
eq_(cmd.flags['version'], True)
def test_flags_mixed3():
'''Test True/None status of defined flags with 3 arguments'''
cmd = BasicTestCommand(['-h', '--version', '--file', 'happy-puppies.gif'])
eq_(cmd.flags['help'], True)
eq_(cmd.flags['file'], 'happy-puppies.gif')
eq_(cmd.flags['version'], True)
def test_flags_attributes():
'''Flags should be accessible by attribute'''
cmd = BasicTestCommand(['-h'])
eq_(cmd.flags.help, True)
eq_(cmd.flags.file, None)
eq_(cmd.flags.version, None)
@raises(pycommand.OptionError)
def test_flags_attribute_not_existing():
'''Accessing unset attributes raises an OptionError'''
cmd = BasicTestCommand(['-h'])
eq_(cmd.flags.tsixetonseod, None)
def test_shellmain_no_args():
'''Util: Help message is printed when no args are given'''
cmd = util.PycommandShellMain([])
print(cmd.run())