Example #1
0
    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')
Example #2
0
    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)
Example #3
0
 def setUp(self):
     self.path = 'tests/a_test_sample.py'
     self.container = UTModuleContainer(module_path=self.path)
Example #4
0
 def test_load_module_lines(self):
     lines = UTModuleContainer.load_module_lines(self.path)
     self.assertTrue(lines)
     self.assertIsInstance(lines, list)
Example #5
0
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__)