def test_updatesFromImportMultiplesInTargetModule(self): src0=trimLines(""" from a.foo import something,theFunction,somethingelse #comment print theFunction() """) src1=trimLines(""" def theFunction(self): pass something = '' somethingelse = 0 """) src0after=trimLines(""" from a.foo import something,somethingelse #comment print theFunction() def theFunction(self): pass """) try: createPackageStructure(src1,"",src0) moveFunctionToNewModule(pkgstructureFile1,1, pkgstructureFile0) save() #print file(pkgstructureFile0).read() self.assertEqual(src0after,file(pkgstructureFile0).read()) finally: removePackageStructure()
def test_movesTheText(self): src1=trimLines(""" def before(): pass class TheClass: pass def after(): pass """) src1after=trimLines(""" def before(): pass def after(): pass """) src2after=trimLines(""" class TheClass: pass """) try: createPackageStructure(src1, "") moveClassToNewModule(pkgstructureFile1,2, pkgstructureFile2) save() self.assertEqual(src1after,file(pkgstructureFile1).read()) self.assertEqual(src2after,file(pkgstructureFile2).read()) finally: removePackageStructure()
def test_updatesFromImportMultiplesInTargetModule(self): src0 = trimLines(""" from a.foo import something,theFunction,somethingelse #comment print theFunction() """) src1 = trimLines(""" def theFunction(self): pass something = '' somethingelse = 0 """) src0after = trimLines(""" from a.foo import something,somethingelse #comment print theFunction() def theFunction(self): pass """) try: createPackageStructure(src1, "", src0) moveFunctionToNewModule(pkgstructureFile1, 1, pkgstructureFile0) save() #print file(pkgstructureFile0).read() self.assertEqual(src0after, file(pkgstructureFile0).read()) finally: removePackageStructure()
def rename(self, src, line, col, newname): try: createPackageStructure("pass",src) rename(pkgstructureFile2,line,col,newname) save() return file(pkgstructureFile2).read() finally: removePackageStructure()
def renameMethod(self, src, line, col, newname): try: createPackageStructure(src,MethodTestdata) rename(pkgstructureFile2,line,col,newname) save() return file(pkgstructureFile1).read() finally: removePackageStructure()
def helper(self, src1, src2after): try: createPackageStructure(src1, "") moveFunctionToNewModule(pkgstructureFile1, 2, pkgstructureFile2) save() self.assertEqual(src2after, file(pkgstructureFile2).read()) finally: removePackageStructure()
def helper(self, src1, src2after): try: createPackageStructure(src1, "") moveFunctionToNewModule(pkgstructureFile1,2, pkgstructureFile2) save() self.assertEqual(src2after,file(pkgstructureFile2).read()) finally: removePackageStructure()
def rename_class(self, oldname, newname): import string class FullListing: def __init__(self): self.listing = [] self.lines = [] full = FullListing() def concat_listing(res, full): if hasattr(res, "listing"): full.lines.append(len(full.listing)) full.listing += res.listing.split('\n') self.apply(concat_listing, full) full.listing = string.join(full.listing, '\n') full.lines.append(-1) import re import tempfile import os.path filename = os.path.join(tempfile.gettempdir(), "refactortemp.py") open(filename, 'w').write(full.listing) lines = full.listing.split('\n') line = 1 for l in lines: match = re.compile('class (\s)*(' + oldname + ')[^a-zA-Z_]').search(l) if match: rename(filename, line, match.start(2), newname) save() full.listing = open(filename).read().split('\n') def restore_listing(res, full): if hasattr(res, "listing"): res.listing = string.join( full.listing[full.lines[0]:full.lines[1]], '\n') + '\n' res.listing_has_changed = True del full.lines[0] self.apply(restore_listing, full) break line += 1 os.remove(filename) self.exec_all_scripts()
def test_addsImportStatementToOriginalFileIfRequired(self): src1 = trimLines(""" def theFunction(self): pass b = theFunction() """) src1after = trimLines(""" from a.b.bah import theFunction b = theFunction() """) try: createPackageStructure(src1, "") moveFunctionToNewModule(pkgstructureFile1, 1, pkgstructureFile2) save() self.assertEqual(src1after, file(pkgstructureFile1).read()) finally: removePackageStructure()
def test_addsImportStatementToOriginalFileIfRequired(self): src1=trimLines(""" def theFunction(self): pass b = theFunction() """) src1after=trimLines(""" from a.b.bah import theFunction b = theFunction() """) try: createPackageStructure(src1,"") moveFunctionToNewModule(pkgstructureFile1,1, pkgstructureFile2) save() self.assertEqual(src1after,file(pkgstructureFile1).read()) finally: removePackageStructure()
def test_updatesFromImportStatementsInOtherModules(self): src0 = trimLines(""" from a.foo import theFunction print theFunction() """) src1 = trimLines(""" def theFunction(self): pass """) src0after = trimLines(""" from a.b.bah import theFunction print theFunction() """) try: createPackageStructure(src1, "", src0) moveFunctionToNewModule(pkgstructureFile1, 1, pkgstructureFile2) save() self.assertEqual(src0after, file(pkgstructureFile0).read()) finally: removePackageStructure()
def test_importsExternalReference(self): src0 = (""" a = 'hello' """) src1 = trimLines(""" from top import a def theFunction(self): print a """) src2after = trimLines(""" from top import a def theFunction(self): print a """) try: createPackageStructure(src1, "", src0) moveFunctionToNewModule(pkgstructureFile1, 2, pkgstructureFile2) save() self.assertEqual(src2after, file(pkgstructureFile2).read()) finally: removePackageStructure()
def test_updatesFromImportStatementsInOtherModules(self): src0=trimLines(""" from a.foo import theFunction print theFunction() """) src1=trimLines(""" def theFunction(self): pass """) src0after=trimLines(""" from a.b.bah import theFunction print theFunction() """) try: createPackageStructure(src1,"",src0) moveFunctionToNewModule(pkgstructureFile1,1, pkgstructureFile2) save() self.assertEqual(src0after,file(pkgstructureFile0).read()) finally: removePackageStructure()
def rename_class(self, oldname, newname): import string class FullListing: def __init__(self): self.listing = [] self.lines = [] full = FullListing() def concat_listing(res, full): if hasattr(res, "listing"): full.lines.append(len(full.listing)) full.listing += res.listing.split('\n') self.apply(concat_listing, full) full.listing = string.join(full.listing, '\n') full.lines.append(-1) import re import tempfile import os.path filename = os.path.join(tempfile.gettempdir(), "refactortemp.py") open(filename, 'w').write(full.listing) lines = full.listing.split('\n') line = 1 for l in lines: match = re.compile('class (\s)*(' + oldname + ')[^a-zA-Z_]').search(l) if match: rename(filename, line, match.start(2), newname) save() full.listing = open(filename).read().split('\n') def restore_listing(res, full): if hasattr(res, "listing"): res.listing = string.join(full.listing[full.lines[0]:full.lines[1]], '\n') + '\n' res.listing_has_changed = True del full.lines[0] self.apply(restore_listing, full) break line += 1 os.remove(filename) self.exec_all_scripts()
def test_importsExternalReference(self): src0=(""" a = 'hello' """) src1=trimLines(""" from top import a def theFunction(self): print a """) src2after=trimLines(""" from top import a def theFunction(self): print a """) try: createPackageStructure(src1, "", src0) moveFunctionToNewModule(pkgstructureFile1,2, pkgstructureFile2) save() self.assertEqual(src2after,file(pkgstructureFile2).read()) finally: removePackageStructure()
def test_movesTheText(self): src1 = trimLines(""" def before(): pass class TheClass: pass def after(): pass """) src1after = trimLines(""" def before(): pass def after(): pass """) src2after = trimLines(""" class TheClass: pass """) try: createPackageStructure(src1, "") moveClassToNewModule(pkgstructureFile1, 2, pkgstructureFile2) save() self.assertEqual(src1after, file(pkgstructureFile1).read()) self.assertEqual(src2after, file(pkgstructureFile2).read()) finally: removePackageStructure()
def renameClass(self, src, newname): createPackageStructure(src,TheClassTestdata) rename(pkgstructureFile2,1,6, newname) save() return file(pkgstructureFile1).read()
def rename(self, src, line, col, newname): createPackageStructure(src,"pass") rename(pkgstructureFile1,line,col, newname) save() return file(pkgstructureFile1).read()
def renameMethod(self, src, line, col, newname): createPackageStructure(src, MethodTestdata) rename(pkgstructureFile1,line,col,newname,self.callback) save() return file(pkgstructureFile1).read()
def renameClass(self, src, newname): createPackageStructure(src, TheClassTestdata) rename(pkgstructureFile2, 1, 6, newname) save() return file(pkgstructureFile1).read()
def renameFunction(self, src, newname): createPackageStructure(src,FunctionTestdata) rename(pkgstructureFile2,1,4, newname) save() return file(pkgstructureFile1).read()
def rename(self, src, line, col, newname): writeTmpTestFile(src) rename(tmpfile,line,col, newname) save() return file(tmpfile).read()
def rename(self, src, line, col, newname): createPackageStructure(src, "pass") rename(pkgstructureFile1, line, col, newname) save() return file(pkgstructureFile1).read()