Skip to content

Commit

Permalink
got arglib tests passing again
Browse files Browse the repository at this point in the history
  • Loading branch information
robdmc committed Jul 24, 2015
1 parent 86c625d commit 4fbc8c1
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 62 deletions.
2 changes: 2 additions & 0 deletions pandashells/bin/p_df.py
Expand Up @@ -6,6 +6,7 @@
import os # noqa
import re # noqa
import sys # noqa
import datetime # noqa

from pandashells.lib import module_checker_lib, arg_lib, io_lib

Expand Down Expand Up @@ -146,6 +147,7 @@ def main(): # pragma: no cover
pl = pylab
parse = dateutil.parser.parse
datetime = datetime
re = re
When creating chains of dataframe operations (see examples), it is
important to express your chain of operations before any options. This
Expand Down
1 change: 1 addition & 0 deletions pandashells/lib/module_checker_lib.py
Expand Up @@ -25,6 +25,7 @@
def check_for_modules(module_list):
# make sure module_list only contains recognized modules
unnamed_modules = set(module_list) - set(CMD_DICT.keys())
unnamed_modules = unnamed_modules - {'datetime', 're'}
if unnamed_modules:
msg = '\n\nThese modules unrecognized by check_for_modules(): '
msg += '{}\n'.format(unnamed_modules)
Expand Down
101 changes: 39 additions & 62 deletions pandashells/test/arg_lib_tests.py
Expand Up @@ -22,7 +22,6 @@ def test_check_for_recognized_args_good_args(self):
args = [
'io_in',
'io_out',
'example',
'xy_plotting',
'decorating',
]
Expand All @@ -42,29 +41,32 @@ def test_io_in_adder_active(self):
"""
_io_in_adder() adds proper arguments
"""
# --- set up mock parser
# set up mock parser
parser = MagicMock()
parser.add_argument = MagicMock()
group = MagicMock()
group.add_argument = MagicMock()
parser.add_argument_group = MagicMock(return_value=group)

# --- create a list of expected call signatures
# create a list of expected call signatures
calls = []
msg = 'Overwrite input column names with this list'
calls.append(call('--names', nargs='+', type=str,
dest='names', metavar="name", help=msg))
default_for_input = ['csv', 'header']
io_opt_list = ['csv', 'table', 'header', 'noheader']
msg = "Must be one of ['csv', 'table', 'header', 'noheader']"
calls.append(call('-i', '--input_options', nargs='+',
type=str, dest='input_options', metavar='option',
default=default_for_input, choices=io_opt_list,
help='Input Options'))
help=msg))

# --- run the code under test
# run the code under test
args = ['io_in']
config_dict = {'io_input_type': 'csv', 'io_input_header': 'header'}
arg_lib._io_in_adder(parser, config_dict, *args)

# --- make sure proper calls were made
self.assertEqual(parser.add_argument.call_args_list, calls)
# make sure proper calls were made
self.assertEqual(group.add_argument.call_args_list, calls)

def test_io_out_adder_inactive(self):
"""
Expand All @@ -80,16 +82,19 @@ def test_io_out_adder_active(self):
"""
_io_out_adder() adds proper arguments
"""
# --- set up mock parser
# set up mock parser
parser = MagicMock()
parser.add_argument = MagicMock()
#parser.add_argument = MagicMock()
group = MagicMock()
group.add_argument = MagicMock()
parser.add_argument_group = MagicMock(return_value=group)

# --- create expected call signature
# create expected call signature
io_opt_list = ['csv', 'table', 'html',
'header', 'noheader', 'index', 'noindex']
# --- define the current defaults
# define the current defaults
default_for_output = ['csv', 'header', 'noindex']
msg = 'Options taken from {}'.format(repr(io_opt_list))
msg = 'Must be one of {}'.format(repr(io_opt_list))
call_obj1 = call(
'-o', '--output_options', nargs='+',
type=str, dest='output_options', metavar='option',
Expand All @@ -104,7 +109,7 @@ def test_io_out_adder_active(self):
'--output_na_rep', nargs=1, type=str, dest='io_output_na_rep',
help=msg)

# --- run the code under test
# run the code under test
args = ['io_out']
config_dict = {
'io_output_type': 'csv',
Expand All @@ -114,9 +119,9 @@ def test_io_out_adder_active(self):
}
arg_lib._io_out_adder(parser, config_dict, *args)

# --- make sure proper calls were made
self.assertEqual(parser.add_argument.call_args_list[0], call_obj1)
self.assertEqual(parser.add_argument.call_args_list[1], call_obj2)
# make sure proper calls were made
self.assertEqual(group.add_argument.call_args_list[0], call_obj1)
self.assertEqual(group.add_argument.call_args_list[1], call_obj2)

def test_decorating_adder_inactive(self):
"""
Expand All @@ -132,11 +137,13 @@ def test_decorating_adder_active(self):
"""
_decorating_adder() adds proper arguments
"""
# --- set up mock parser
# set up mock parser
parser = MagicMock()
parser.add_argument = MagicMock()
group = MagicMock()
group.add_argument = MagicMock()
parser.add_argument_group = MagicMock(return_value=group)

# --- create a list of expected call signatures
# create a list of expected call signatures
calls = []

context_list = [t for t in config_lib.CONFIG_OPTS if
Expand Down Expand Up @@ -191,12 +198,12 @@ def test_decorating_adder_active(self):
msg = "Save the figure to this file"
calls.append(call('--savefig', nargs=1, type=str, help=msg))

# --- run the code under test
# run the code under test
args = ['decorating']
arg_lib._decorating_adder(parser, *args)

# --- make sure proper calls were made
self.assertEqual(parser.add_argument.call_args_list, calls)
# make sure proper calls were made
self.assertEqual(group.add_argument.call_args_list, calls)

def test_xy_adder_inactive(self):
"""
Expand All @@ -212,11 +219,11 @@ def test_xy_adder_active(self):
"""
_xy_adder() adds proper arguments
"""
# --- set up mock parser
# set up mock parser
parser = MagicMock()
parser.add_argument = MagicMock()

# --- create a list of expected call signatures
# create a list of expected call signatures
calls = []
msg = 'Column to plot on x-axis'
calls.append(call('-x', nargs=1, type=str, dest='x', metavar='col',
Expand All @@ -230,42 +237,14 @@ def test_xy_adder_active(self):
calls.append(call('-s', '--style', nargs=1, type=str, dest='style',
default=['.-'], help=msg))

# --- run the code under test
# run the code under test
args = ['xy_plotting']
arg_lib._xy_adder(parser, *args)

# --- make sure proper calls were made
# make sure proper calls were made
self.assertEqual(parser.add_argument.call_args_list, calls)

def test_example_adder_inactive(self):
"""
_example_adder() doesn't do anything when example not specified
"""
parser = MagicMock()
parser.add_argument = MagicMock()
args = []
arg_lib._example_adder(parser, *args)
self.assertFalse(parser.add_argument.called)

def test_example_adder_active(self):
"""
_example_adder() adds proper arguments
"""
# --- set up mock parser
parser = MagicMock()
parser.add_argument = MagicMock()

msg = "Show a usage example and exit"
call_obj = call('--example', action='store_true', dest='example',
default=False, help=msg)

args = ['example']
arg_lib._example_adder(parser, *args)

# --- make sure proper calls were made
self.assertEqual(parser.add_argument.call_args_list, [call_obj])

@patch('pandashells.lib.arg_lib._example_adder')
@patch('pandashells.lib.arg_lib._xy_adder')
@patch('pandashells.lib.arg_lib._decorating_adder')
@patch('pandashells.lib.arg_lib._io_out_adder')
Expand All @@ -278,25 +257,23 @@ def test_add_args(self,
_io_in_adder_mock,
_io_out_adder_mock,
_decorating_adder_mock,
_xy_adder_mock,
_example_adder_mock):
# --- set up the mocks
_xy_adder_mock):
# set up the mocks
parser = MagicMock()
get_config_mock.return_value = {}

# --- define expected call signatures
# define expected call signatures
plain_call_list = [call(parser)]
config_call_list = [call(parser, {})]

# --- call the code under test
# call the code under test
arg_lib.add_args(parser)

# --- assert the proper call signatures
# assert the proper call signatures
self.assertEqual(get_config_mock.call_args_list, [call()])
self.assertEqual(_check_for_recognized_args_mock.call_args_list,
[call()])
self.assertEqual(_io_in_adder_mock.call_args_list, config_call_list)
self.assertEqual(_io_out_adder_mock.call_args_list, config_call_list)
self.assertEqual(_decorating_adder_mock.call_args_list, plain_call_list)
self.assertEqual(_xy_adder_mock.call_args_list, plain_call_list)
self.assertEqual(_example_adder_mock.call_args_list, plain_call_list)

0 comments on commit 4fbc8c1

Please sign in to comment.