def test_load_module_same_module_twice(self): # force the module to not be in the current path import os from inspect import isclass module_filename = join(self.test_dir,"./.tmp/tmp_module5.py") module = __load_module__(module_filename) classes = [name for name in _dir(module) if isclass(getattr(module,name))] self.assertEquals(classes,['foobar','foobar2','foobar3','mybase']) module_filename = "./.tmp_dupe/tmp_module5.py" with self.assertRaises(Exception): module = __load_module__(module_filename)
def test_get_module_class_method_vars(self): module_filename = "tmp_module2.py" module = __load_module__(module_filename,allowdupe=True) vars = _getvarfromsource(module.foobar2.boo2) self.assertListEqual(['a','b'],vars)
def test_get_module_class_method_args(self): module = __load_module__(self.tmp_module2, allowdupe=True) tokens = __tokenize__(self.tmp_module2) args = _getargsfromsource(module.foobar2.boohoo, tokens) self.assertListEqual(['self', 'banana'], args)
def test_get_proc_signature(self): module = __load_module__(self.tmp_module2, allowdupe=True) tokens = __tokenize__(self.tmp_module2) self.assertListEqual(['fe', 'fi', 'fo', 'fum'], _getargsfromsource(module.myfunc, tokens))
def test_get_proc_signature(self): module_filename = "tmp_module2.py" module = __load_module__(module_filename,allowdupe=True) tokens = __tokenize__(join(self.test_dir,"tmp_module2.py")) self.assertListEqual(['fe','fi','fo','fum'],_getargsfromsource(module.myfunc,tokens))
def test_load_module_same_module_twice(self): # force the module to not be in the current path import os from inspect import isclass module_filename = path.join(TESTDIR, "tmp_module5.py") module = __load_module__(module_filename) classes = [ name for name in _dir(module) if isclass(getattr(module, name)) ] self.assertEquals(classes, ['foobar', 'foobar2', 'foobar3', 'mybase']) module_filename = "./.tmp_dupe/tmp_module5.py" with self.assertRaises(Exception): module = __load_module__(module_filename)
def test_isuserdefnclass(self): from inspect import isclass module_filename = path.join(TESTDIR, "test_get_module_classes_with_imports.py") module = __load_module__(module_filename, allowdupe=True) self.assertTrue(isuserclass('foobar10', module_filename)) self.assertFalse(isuserclass('GetoptError', module_filename))
def test_get_module_class_method_args(self): module_filename = "tmp_module2.py" module = __load_module__(module_filename,allowdupe=True) tokens = __tokenize__(join(self.test_dir,"tmp_module2.py")) args = _getargsfromsource(module.foobar2.boohoo,tokens) self.assertListEqual(['self','banana'],args)
def test_get_module_classes_with_imports(self): from inspect import isclass module_filename = path.join(TESTDIR, "test_get_module_classes_with_imports.py") module = __load_module__(module_filename, allowdupe=True) classes = _getclasses(module, module_filename) self.assertEquals(classes, ['foobar10'])
def test_isuserfunc(self): from inspect import isclass module_filename = path.join(TESTDIR, "test_get_module_classes_with_imports.py") module = __load_module__(module_filename, allowdupe=True) self.assertTrue(isuserfunc('myfunk', module_filename)) self.assertFalse(isuserfunc('gnu_getopt', module_filename))
def test_get_module_classes_with_imports(self): from inspect import isclass test_module = "test_get_module_classes_with_imports.py" module_filename = join(self.test_dir+"/test_misc",test_module) module = __load_module__(module_filename,allowdupe=True) classes = _getclasses(module,test_module) self.assertEquals(classes,['foobar10'])
def test_isuserfunc(self): from inspect import isclass test_module = "test_get_module_classes_with_imports.py" module_filename = join(self.test_dir+"/test_misc",test_module) module = __load_module__(module_filename,allowdupe=True) self.assertTrue(isuserfunc('myfunk',test_module)) self.assertFalse(isuserfunc('gnu_getopt',test_module))
def test_get_module_classes(self): from inspect import isclass module_filename = "tmp_module2.py" module = __load_module__(module_filename,allowdupe=True) classes = [name for name in _dir(module) if isclass(getattr(module,name))] self.assertEquals(classes,['foobar','foobar2','foobar3','mybase'])
def test_isuserdefnclass(self): from inspect import isclass test_module = "test_get_module_classes_with_imports.py" module_filename = join(self.test_dir+"/test_misc",test_module) module = __load_module__(module_filename,allowdupe=True) self.assertTrue(isuserclass('foobar10',test_module)) self.assertFalse(isuserclass('GetoptError',test_module))
def test_get_module_functions(self): from inspect import isroutine module_filename = "tmp_module2.py" module = __load_module__(module_filename,allowdupe=True) routines = [name for name in _dir(module) if isroutine(getattr(module,name))] self.assertListEqual(routines,['myfunc'])
def test_get_module_functions(self): from inspect import isroutine module = __load_module__(self.tmp_module2, allowdupe=True) routines = [ name for name in _dir(module) if isroutine(getattr(module, name)) ] self.assertListEqual(routines, ['myfunc'])
def test_get_module_classes(self): from inspect import isclass module = __load_module__(self.tmp_module2, allowdupe=True) classes = [ name for name in _dir(module) if isclass(getattr(module, name)) ] self.assertEquals(classes, ['foobar', 'foobar2', 'foobar3', 'mybase'])
def test_load_module_not_in_cwd_relpath_forced(self): # force the module to not be in the current path import os from inspect import isclass module_filename = join(self.test_dir,"./.tmp/tmp_module4.py") module = __load_module__(module_filename,allowdupe=True) classes = [name for name in _dir(module) if isclass(getattr(module,name))] self.assertEquals(classes,['foobar','foobar2','foobar3','mybase'])
def test_get_module_class_methods(self): from inspect import isclass module_filename = "tmp_module2.py" module = __load_module__(module_filename,allowdupe=True) classes = [name for name in _dir(module) if isclass(getattr(module,name))] m=[] for cls in classes: m = m + _getclassmethods(getattr(module,cls)) self.assertListEqual(['boo','boohoo','boo2','boo3'],m)
def test_get_module_class_methods(self): from inspect import isclass module = __load_module__(self.tmp_module2, allowdupe=True) classes = [ name for name in _dir(module) if isclass(getattr(module, name)) ] m = [] for cls in classes: m = m + _getclassmethods(getattr(module, cls)) self.assertListEqual(['boo', 'boohoo', 'boo2', 'boo3'], m)
def test_get_module_contents(self): from inspect import getmembers module_filename = "tmp_module.py" module = __load_module__(module_filename,allowdupe=True) self.assertEquals(['foobar'],[member for member in dir(module) if not member.startswith('__')]) # get methods of a module member self.assertEquals(['boo'],[member[0] for member in getmembers(module.foobar) if not member[0].startswith('__')]) # and using a diff function to load members self.assertEquals(['boo'],_getmembers(module.foobar).keys())
def test_load_module_not_in_cwd_relpath_forced(self): # force the module to not be in the current path import os from inspect import isclass module_filename = path.join(TESTDIR, "tmp_module4.py") module = __load_module__(module_filename, allowdupe=True) classes = [ name for name in _dir(module) if isclass(getattr(module, name)) ] self.assertEquals(classes, ['foobar', 'foobar2', 'foobar3', 'mybase'])
def test_load_module_not_in_cwd_abspath(self): # if module.py in /home/burtnolej; move cwd to /tmp and load # /home/burtnolej/module.py import os from inspect import isclass _cwd = os.getcwd() os.chdir("/tmp") module_filename = "tmp_module3.py" module_path = os.path.join(_cwd,"tmp_module3.py") module = __load_module__(module_path,allowdupe=True) os.chdir(_cwd) classes = [name for name in _dir(module) if isclass(getattr(module,name))] self.assertEquals(classes,['foobar','foobar2','foobar3','mybase'])
def test_get_module_info_all(self): #need to put tmp_module to test_get_module_info_all.py #as we are picking up tmp_module from a previous load module_filename = path.join(TESTDIR, "test_get_module_info_all.py") module = __load_module__(module_filename, allowdupe=True) tokens = __getsourceaslist__(module_filename, module) self.assertListEqual([ 'foobart', 'boo', ['self'], [], ['blahblah'], 'foobart2', 'boohoo', ['self', 'banana'], [], 'boo2', ['self'], ['a', 'b'], [], 'foobart3', 'boo3', ['self'], ['self.foobar'], [], 'mybaser', [], 'myfuncy', ['fe', 'fi', 'fo', 'fum'], ['foo'], 'mylocaly' ], tokens)
def py2xml(self,**kwargs): for k,v in kwargs.iteritems(): setattr(self,k,v) if not hasattr(self,'module'): self.module = __load_module__(self.input_filename,allowdupe=True) from inspect import getmembers, isclass, isroutine tokens = __tokenize__(self.input_filename) root = xmltree.Element('root') for item in _dir(self.module): obj = getattr(self.module,item) if isclass(obj): if isuserclass(item,self.input_filename): cls_element = __add_element__(root,item,'class') for m in _getclassmethods(obj): clsmth_element = __add_element__(cls_element,m,'method') for arg in _getargsfromsource(getattr(obj,m),tokens): __add_element__(clsmth_element,arg,'arg') for var in _getvarfromsource(getattr(obj,m)): __add_element__(clsmth_element,var,'var') for memvar in _getclassmethods(obj,True): __add_element__(cls_element,memvar,'var') elif isroutine(obj): if isuserfunc(item,self.input_filename): def_element = __add_element__(root,item,'def') for arg in _getargsfromsource(obj,tokens): __add_element__(def_element,arg,'arg') for var in _getvarfromsource(obj): __add_element__(def_element,var,'var') else: __add_element__(root,item,'var') output_filename = __convert_filename__(self.input_filename,".xml") __xmltofile__(root,output_filename) return(output_filename)
def test_load_module_not_in_cwd_abspath(self): # if module.py in /home/burtnolej; move cwd to /tmp and load # /home/burtnolej/module.py import os from inspect import isclass _cwd = os.getcwd() os.chdir(LOGDIR) module_path = path.join(TESTDIR, "tmp_module3.py") module = __load_module__(module_path, allowdupe=True) os.chdir(_cwd) classes = [ name for name in _dir(module) if isclass(getattr(module, name)) ] self.assertEquals(classes, ['foobar', 'foobar2', 'foobar3', 'mybase'])
def test_get_module_class_vars(self): from inspect import isclass, ismethod module_filename = "tmp_module2.py" module = __load_module__(module_filename,allowdupe=True) classes = [name for name in _dir(module) if isclass(getattr(module,name))] v=[] _m = _getmembers(module.foobar) for key, obj in _m.iteritems(): if not ismethod(obj): v.append(key) self.assertListEqual(['blahblah'],v)
def test_get_module_info_all(self): #need to put tmp_module to test_get_module_info_all.py #as we are picking up tmp_module from a previous load module_filename = join(self.test_dir,"./test_misc/test_get_module_info_all.py") module = __load_module__(module_filename,allowdupe=True) tokens = __getsourceaslist__(join(self.test_dir,module_filename), module) self.assertListEqual(['foobart', 'boo', ['self'], [], ['blahblah'], 'foobart2', 'boohoo', ['self', 'banana'], [], 'boo2', ['self'], ['a', 'b'], [], 'foobart3', 'boo3', ['self'], ['self.foobar'], [], 'mybaser', [], 'myfuncy', ['fe', 'fi', 'fo', 'fum'], ['foo'], 'mylocaly'],tokens)
def test_get_module_contents(self): from inspect import getmembers module = __load_module__(self.tmp_module1, allowdupe=True) self.assertEquals( ['foobar'], [member for member in dir(module) if not member.startswith('__')]) # get methods of a module member self.assertEquals(['boo'], [ member[0] for member in getmembers(module.foobar) if not member[0].startswith('__') ]) # and using a diff function to load members self.assertEquals(['boo'], _getmembers(module.foobar).keys())
def test_get_module_class_vars(self): from inspect import isclass, ismethod module = __load_module__(self.tmp_module2, allowdupe=True) classes = [ name for name in _dir(module) if isclass(getattr(module, name)) ] v = [] _m = _getmembers(module.foobar) for key, obj in _m.iteritems(): if not ismethod(obj): v.append(key) self.assertListEqual(['blahblah'], v)
def test_get_module_class_method_vars(self): module = __load_module__(self.tmp_module2, allowdupe=True) vars = _getvarfromsource(module.foobar2.boo2) self.assertListEqual(['a', 'b'], vars)
def test_get_variables_in_function(self): module = __load_module__(self.tmp_module2, allowdupe=True) self.assertListEqual(['foo'], _getvarfromsource(module.myfunc))
def test_get_variables_in_function(self): module_filename = "tmp_module2.py" module = __load_module__(module_filename,allowdupe=True) self.assertListEqual(['foo'],_getvarfromsource(module.myfunc))