def test_save_different_name(self): with mock.patch('tddtags.core.UTModuleContainer.save_module', spec=True) as ModCon: # --> Prep. This time we need a container, and a changed filename tddtags.core.tddtags_config['save_to_name'] = 'changed.py' container = UTModuleContainer(module_path=self.tmp_file) updater = ModuleUpdater(ut_module=self.ut_module) container.dirty_flag = True ret = updater._save(container=container) self.assertTrue(ret) self.assertEqual(container.save_module.call_count, 1) parm_info = [('save_name', 0)] kwargs = self.get_patched_call_parms(parm_info, container.save_module, 0) self.assertEqual(kwargs['save_name'], 'changed.py')
def test_save_with_changes(self): with mock.patch('tddtags.core.UTModuleContainer.save_module', spec=True) as ModCon: # --> Prep. This time we need a container container = UTModuleContainer(module_path=self.tmp_file) updater = ModuleUpdater(ut_module=self.ut_module) container.dirty_flag = True ret = updater._save(container=container) self.assertTrue(ret) self.assertEqual(container.save_module.call_count, 1) # --> Check the filename parm_info = [('save_name', 0)] kwargs = self.get_patched_call_parms(parm_info, container.save_module, 0) abs_file_path = os.path.abspath(self.tmp_file) self.assertEqual(kwargs['save_name'], abs_file_path)
def setUp(self): self.path = 'tests/a_test_sample.py' self.container = UTModuleContainer(module_path=self.path)
def test_load_module_lines(self): lines = UTModuleContainer.load_module_lines(self.path) self.assertTrue(lines) self.assertIsInstance(lines, list)
class ModuleContainerTests(unittest.TestCase): def setUp(self): self.path = 'tests/a_test_sample.py' self.container = UTModuleContainer(module_path=self.path) def tearDown(self): import os files = [tmp for tmp in os.listdir('.') if tmp.startswith('output')] [os.remove(f) for f in files] def test_create_instance(self): self.assertEqual(self.container.module_path, os.path.abspath(self.path)) self.assertTrue(self.container.lines) def test_create_invalid_path(self): """Verify UTModuleContainer raises IOError on invalid path""" bad_path = self.path + 'xx' bad_path = '/usr/local/bad.py' self.assertRaises(Exception, UTModuleContainer, module_path=bad_path) def test_find_class_end(self): class_line, end_line = self.container._find_class_end('sampleTests') self.assertNotEqual(class_line, -1) self.assertNotEqual(end_line, -1) def test_find_class_end_unknown_class(self): class_line, end_line = self.container._find_class_end('unknown_class') self.assertEqual(class_line, -1) self.assertEqual(end_line, -1) def test_find_class_end_no_tag_end_of_module(self): class_line, end_line = self.container._find_class_end('ClassNoEndTagEndOfModule') self.assertNotEqual(class_line, -1) self.assertNotEqual(end_line, -1) self.assertEqual(len(self.container.lines) - 1, end_line) def test_find_class_end_no_tag(self): class_line, end_line = self.container._find_class_end('ClassNoEndTag') self.assertNotEqual(class_line, -1) self.assertNotEqual(end_line, -1) self.assertEqual(end_line, 44) def test_save_end_no_tag_end_of_module(self): class_line, end_line = self.container._find_class_end('ClassNoEndTagEndOfModule') self.assertNotEqual(class_line, -1) self.assertNotEqual(end_line, -1) self.assertEqual(len(self.container.lines) - 1, end_line) self.assertTrue(self.container.save_module('output1.py')) end_token = create_end_class_token('ClassNoEndTagEndOfModule') with open('output1.py') as f: lines = f.readlines() self.assertTrue(end_token in lines[len(lines)-1]) def test_save_end_no_tag(self): class_line, end_line = self.container._find_class_end('ClassNoEndTag') self.assertNotEqual(class_line, -1) self.assertNotEqual(end_line, -1) self.assertTrue(self.container.save_module('output2.py')) end_token = create_end_class_token('ClassNoEndTag') with open('output2.py') as f: lines = f.readlines() # for index in xrange(end_line-1, end_line+2): # print '[%d] %s' % (index, lines[index].strip()) self.assertTrue(end_token in lines[end_line], 'Line: %s' % lines[end_line]) # @unittest.skip('skipped') def test_scan_back_for_foo_code(self): lines = [ ' def foo(self):', ' var = 1', '', '# Comment' 'class C(object):' ] self.container.lines = lines index = self.container._scan_back_for_foo_code(start_index=len(lines)-1) self.assertNotEqual(index, -1) self.assertEqual(index, 1) def test_add_class_method(self): class_line, end_line = self.container._find_class_end('SampleTests') self.assertNotEqual(end_line, -1) ret = self.container.add_class_method(class_name='SampleTests', method_name='new_method') self.assertTrue(ret) self.assertTrue(self.container.save_module('output3.py')) def test_append_class(self): ut_class = UTClassDetails(class_name='SomeClass', base_class='TestCase') ut_class.method_names = ['first_feature', 'second_feature'] result = self.container.append_class(ut_class=ut_class) self.assertTrue(result) self.assertTrue(self.container.save_module('output4.py')) def test_load_module_lines(self): lines = UTModuleContainer.load_module_lines(self.path) self.assertTrue(lines) self.assertIsInstance(lines, list) def test_save_not_dirty(self): ret = self.container.save_module('nothin.py') self.assertTrue(ret) import os self.assertFalse(os.path.exists('nothin.py')) def test_with_pyc(self): anchor_dir = os.getcwd() loader = ModuleLoader(anchor_dir=anchor_dir) mod = loader.load_module(name='tddtags.core') self.assertTrue(mod) self.assertTrue('.pyc' in mod.__file__) container = UTModuleContainer(module_path=mod.__file__) self.assertNotEqual(container.module_path, mod.__file__)