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()
Example #3
0
    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()
Example #4
0
 def rename(self, src, line, col, newname):
     try:
         createPackageStructure("pass",src)
         rename(pkgstructureFile2,line,col,newname)
         save()
         return file(pkgstructureFile2).read()
     finally:
         removePackageStructure()
Example #5
0
 def renameMethod(self, src, line, col, newname):
     try:
         createPackageStructure(src,MethodTestdata)
         rename(pkgstructureFile2,line,col,newname)
         save()
         return file(pkgstructureFile1).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()
Example #8
0
 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()
Example #10
0
    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()
Example #11
0
    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()
Example #13
0
    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()
Example #14
0
 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()
Example #16
0
 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()
Example #18
0
    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()
Example #22
0
 def renameClass(self, src, newname):
     createPackageStructure(src, TheClassTestdata)
     rename(pkgstructureFile2, 1, 6, newname)
     save()
     return file(pkgstructureFile1).read()
Example #23
0
 def renameFunction(self, src, newname):
     createPackageStructure(src,FunctionTestdata)
     rename(pkgstructureFile2,1,4, newname)
     save()
     return file(pkgstructureFile1).read()
Example #24
0
 def rename(self, src, line, col, newname):
     writeTmpTestFile(src)
     rename(tmpfile,line,col, newname)
     save()
     return file(tmpfile).read()
Example #25
0
 def renameMethod(self, src, line, col, newname):
     createPackageStructure(src, MethodTestdata)
     rename(pkgstructureFile1,line,col,newname,self.callback)
     save()
     return file(pkgstructureFile1).read()
Example #26
0
 def rename(self, src, line, col, newname):
     createPackageStructure(src, "pass")
     rename(pkgstructureFile1, line, col, newname)
     save()
     return file(pkgstructureFile1).read()