1. zjes
  2. rope_py3k

Source

rope_py3k / ropetest / refactor / multiprojecttest.py

Ali Gholami Rudi 4caaaf8 



Ali Gholami Rudi 2f9084d 
Ali Gholami Rudi 4caaaf8 







Ali Gholami Rudi 9c5c925 
Ali Gholami Rudi 4caaaf8 
Ali Gholami Rudi 2f9084d 
Ali Gholami Rudi 4caaaf8 






Ali Gholami Rudi c6dce5e 
Ali Gholami Rudi 4caaaf8 




zjes 6e28c44 
Ali Gholami Rudi 4caaaf8 
Ali Gholami Rudi c6dce5e 






zjes 6e28c44 

Ali Gholami Rudi c6dce5e 

Ali Gholami Rudi 2f9084d 







zjes 6e28c44 


Ali Gholami Rudi 2f9084d 


Ali Gholami Rudi e1a6268 








zjes 6e28c44 

Ali Gholami Rudi e1a6268 

Ali Gholami Rudi 4caaaf8 

import unittest

import rope.base.codeanalyze
import rope.refactor.occurrences
from rope.refactor import multiproject, rename, move
from ropetest import testutils


class MultiProjectRefactoringTest(unittest.TestCase):

    def setUp(self):
        super(MultiProjectRefactoringTest, self).setUp()
        self.project1 = testutils.sample_project(foldername='testproject1')
        self.project2 = testutils.sample_project(foldername='testproject2')
        self.mod1 = self.project1.root.create_file('mod1.py')
        self.other = self.project1.root.create_file('other.py')
        self.mod2 = self.project2.root.create_file('mod2.py')

    def tearDown(self):
        testutils.remove_project(self.project1)
        testutils.remove_project(self.project2)
        super(MultiProjectRefactoringTest, self).tearDown()

    def test_trivial_rename(self):
        self.mod1.write('var = 1\n')
        refactoring = multiproject.MultiProjectRefactoring(
            rename.Rename, [])
        renamer = refactoring(self.project1, self.mod1, 1)
        multiproject.perform(renamer.get_all_changes('newvar'))
        self.assertEqual('newvar = 1\n', self.mod1.read())

    def test_rename(self):
        self.mod1.write('var = 1\n')
        self.mod2.write('import mod1\nmyvar = mod1.var\n')
        refactoring = multiproject.MultiProjectRefactoring(
            rename.Rename, [self.project2])
        renamer = refactoring(self.project1, self.mod1, 1)
        multiproject.perform(renamer.get_all_changes('newvar'))
        self.assertEqual('newvar = 1\n', self.mod1.read())
        self.assertEqual('import mod1\nmyvar = mod1.newvar\n',
                          self.mod2.read())

    def test_move(self):
        self.mod1.write('def a_func():\n    pass\n')
        self.mod2.write('import mod1\nmyvar = mod1.a_func()\n')
        refactoring = multiproject.MultiProjectRefactoring(
            move.create_move, [self.project2])
        renamer = refactoring(self.project1, self.mod1,
                              self.mod1.read().index('_func'))
        multiproject.perform(renamer.get_all_changes(self.other))
        self.assertEqual('', self.mod1.read())
        self.assertEqual('def a_func():\n    pass\n', self.other.read())
        self.assertEqual(
            'import mod1\nimport other\nmyvar = other.a_func()\n',
            self.mod2.read())

    def test_rename_from_the_project_not_containing_the_change(self):
        self.project2.get_prefs().add('python_path', self.project1.address)
        self.mod1.write('var = 1\n')
        self.mod2.write('import mod1\nmyvar = mod1.var\n')
        refactoring = multiproject.MultiProjectRefactoring(
            rename.Rename, [self.project1])
        renamer = refactoring(self.project2, self.mod2,
                              self.mod2.read().rindex('var'))
        multiproject.perform(renamer.get_all_changes('newvar'))
        self.assertEqual('newvar = 1\n', self.mod1.read())
        self.assertEqual('import mod1\nmyvar = mod1.newvar\n',
                          self.mod2.read())


if __name__ == '__main__':
    unittest.main()