Skip to content

Commit d178b6e

Browse files
committed
Improved coverage with more tests: parse_args
Coverage at 66% according to coveragy.py
1 parent 49ddd96 commit d178b6e

File tree

2 files changed

+67
-8
lines changed

2 files changed

+67
-8
lines changed

benchmark/scripts/compare_perf_tests.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,11 @@ def _column_widths(self):
253253
changed + self.comparator.unchanged)
254254
comparisons += self.comparator.added + self.comparator.removed
255255

256-
widths = map(lambda columns: map(len, columns),
257-
[PerformanceTestResult.header, ResultComparison.header] +
258-
[c.values() for c in comparisons])
256+
widths = [
257+
map(len, columns) for columns in
258+
[PerformanceTestResult.header, ResultComparison.header] +
259+
[c.values() for c in comparisons]
260+
]
259261

260262
def max_widths(maximum, widths):
261263
return tuple(map(max, zip(maximum, widths)))
@@ -375,8 +377,8 @@ def table(title, results, speedup_color):
375377
]))
376378

377379

378-
def main():
379-
380+
def parse_args(args):
381+
"""Parse command line arguments and set default values."""
380382
parser = argparse.ArgumentParser(description='Compare Performance tests.')
381383
parser.add_argument('--old-file',
382384
help='Baseline performance test suite (csv file)',
@@ -396,11 +398,15 @@ def main():
396398
parser.add_argument('--old-branch',
397399
help='Name of the old branch', default='OLD_MIN')
398400
parser.add_argument('--delta-threshold',
399-
help='Delta threshold. Default 0.05.', default='0.05')
401+
help='Delta threshold. Default 0.05.',
402+
type=float, default=0.05)
403+
return parser.parse_args(args)
400404

401-
args = parser.parse_args()
405+
406+
def main():
407+
args = parse_args(sys.argv[1:])
402408
comparator = TestComparator(args.old_file, args.new_file,
403-
float(args.delta_threshold))
409+
args.delta_threshold)
404410
formatter = ReportFormatter(comparator, args.old_branch, args.new_branch,
405411
args.changes_only)
406412

benchmark/scripts/test_compare_perf_tests.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from compare_perf_tests import PerformanceTestResult
2222
from compare_perf_tests import ResultComparison
2323
from compare_perf_tests import TestComparator
24+
from compare_perf_tests import parse_args
2425

2526

2627
class TestPerformanceTestResult(unittest.TestCase):
@@ -225,5 +226,57 @@ def names(tests):
225226
self.assertEquals(tc.decreased, [])
226227

227228

229+
class Test_parse_args(unittest.TestCase):
230+
required = ['--old-file', 'old.log', '--new-file', 'new.log']
231+
232+
def test_required_input_arguments(self):
233+
args = parse_args(self.required)
234+
self.assertEquals(args.old_file, 'old.log')
235+
self.assertEquals(args.new_file, 'new.log')
236+
self.assertRaises(SystemExit, parse_args, [])
237+
238+
def test_format_argument(self):
239+
self.assertEquals(
240+
parse_args(self.required + ['--format', 'markdown']).format,
241+
'markdown')
242+
self.assertEquals(
243+
parse_args(self.required + ['--format', 'git']).format, 'git')
244+
self.assertEquals(
245+
parse_args(self.required + ['--format', 'html']).format, 'html')
246+
self.assertRaises(SystemExit, parse_args,
247+
self.required + ['--format', 'bogus'])
248+
249+
def test_delta_threshold_argument(self):
250+
# default value
251+
args = parse_args(self.required)
252+
self.assertEquals(args.delta_threshold, 0.05)
253+
# float parsing
254+
args = parse_args(self.required + ['--delta-threshold', '0.1'])
255+
self.assertEquals(args.delta_threshold, 0.1)
256+
args = parse_args(self.required + ['--delta-threshold', '1'])
257+
self.assertEquals(args.delta_threshold, 1.0)
258+
args = parse_args(self.required + ['--delta-threshold', '.2'])
259+
self.assertEquals(args.delta_threshold, 0.2)
260+
self.assertRaises(SystemExit, parse_args,
261+
self.required + ['--delta-threshold', '2,2'])
262+
263+
def test_changes_only_argument(self):
264+
self.assertFalse(parse_args(self.required).changes_only)
265+
self.assertTrue(parse_args(self.required +
266+
['--changes-only']).changes_only)
267+
268+
def test_branch_arguments(self):
269+
# default value
270+
args = parse_args(self.required)
271+
self.assertEquals(args.new_branch, 'NEW_MIN')
272+
self.assertEquals(args.old_branch, 'OLD_MIN')
273+
# user specified
274+
args = parse_args(
275+
self.required + ['--old-branch', 'master',
276+
'--new-branch', 'amazing-optimization'])
277+
self.assertEquals(args.old_branch, 'master')
278+
self.assertEquals(args.new_branch, 'amazing-optimization')
279+
280+
228281
if __name__ == '__main__':
229282
unittest.main()

0 commit comments

Comments
 (0)