if options.summary and not options.log: msg = '### error: summary information requires log files\n' sys.stderr.write(msg) sys.exit(1) try: todo, completed, failed = compute_items_todo( options.data, options.t, options.log, must_redo=options.redo, sniff=options.sniff, no_sniffer=options.no_sniffer ) if options.summary: print('Summary:') print(' items completed: {0:d}'.format(len(completed))) print(' items failed: {0:d}'.format(len(failed))) print(' items to do: {0:d}'.format(len(todo))) if options.list_failed: print('failed: {0}'.format(set2int_ranges(failed))) if options.list_completed: print('completed: {0}'.format(set2int_ranges(completed))) else: if options.list_completed: print(set2int_ranges(completed)) else: print(set2int_ranges(todo)) except IOError as error: msg = '### IOError: {0}'.format(str(error)) sys.stderr.write(msg) sys.exit(error.errno) except InvalidRangeSpecError as error: msg = '### error: {0}'.format(str(error)) sys.stderr.write(msg) sys.exit(error.errno)
def test_multiple_singleton_range(self): expected_range = '1,3-8,11,15-19,23' range_set = set(range(3, 9) + range(15, 20) + [1, 11, 23]) int_range = set2int_ranges(range_set) self.assertEqual(expected_range, int_range)
def test_multiple2range(self): expected_range = '3-8,11-13' int_range = set2int_ranges(set(range(3, 9) + range(11, 14))) self.assertEqual(expected_range, int_range)
def test_contiguous2range(self): expected_range = '3-8' int_range = set2int_ranges(set(xrange(3, 9))) self.assertEqual(expected_range, int_range)
def test_empty2range(self): expected_range = '' int_range = set2int_ranges(set()) self.assertEqual(expected_range, int_range)
def test_singletno2range(self): expected_range = '3' int_range = set2int_ranges(set([3])) self.assertEqual(expected_range, int_range)