1try: 2 import unittest2 as unittest 3except ImportError: 4 import unittest 5 6from rope.refactor import multiproject, rename, move 7from ropetest import testutils 8 9 10class MultiProjectRefactoringTest(unittest.TestCase): 11 12 def setUp(self): 13 super(MultiProjectRefactoringTest, self).setUp() 14 self.project1 = testutils.sample_project(foldername='testproject1') 15 self.project2 = testutils.sample_project(foldername='testproject2') 16 self.mod1 = self.project1.root.create_file('mod1.py') 17 self.other = self.project1.root.create_file('other.py') 18 self.mod2 = self.project2.root.create_file('mod2.py') 19 20 def tearDown(self): 21 testutils.remove_project(self.project1) 22 testutils.remove_project(self.project2) 23 super(MultiProjectRefactoringTest, self).tearDown() 24 25 def test_trivial_rename(self): 26 self.mod1.write('var = 1\n') 27 refactoring = multiproject.MultiProjectRefactoring( 28 rename.Rename, []) 29 renamer = refactoring(self.project1, self.mod1, 1) 30 multiproject.perform(renamer.get_all_changes('newvar')) 31 self.assertEqual('newvar = 1\n', self.mod1.read()) 32 33 def test_rename(self): 34 self.mod1.write('var = 1\n') 35 self.mod2.write('import mod1\nmyvar = mod1.var\n') 36 refactoring = multiproject.MultiProjectRefactoring( 37 rename.Rename, [self.project2]) 38 renamer = refactoring(self.project1, self.mod1, 1) 39 multiproject.perform(renamer.get_all_changes('newvar')) 40 self.assertEqual('newvar = 1\n', self.mod1.read()) 41 self.assertEqual('import mod1\nmyvar = mod1.newvar\n', 42 self.mod2.read()) 43 44 def test_move(self): 45 self.mod1.write('def a_func():\n pass\n') 46 self.mod2.write('import mod1\nmyvar = mod1.a_func()\n') 47 refactoring = multiproject.MultiProjectRefactoring( 48 move.create_move, [self.project2]) 49 renamer = refactoring(self.project1, self.mod1, 50 self.mod1.read().index('_func')) 51 multiproject.perform(renamer.get_all_changes(self.other)) 52 self.assertEqual('', self.mod1.read()) 53 self.assertEqual('def a_func():\n pass\n', self.other.read()) 54 self.assertEqual('import other\nmyvar = other.a_func()\n', 55 self.mod2.read()) 56 57 def test_rename_from_the_project_not_containing_the_change(self): 58 self.project2.get_prefs().add('python_path', self.project1.address) 59 self.mod1.write('var = 1\n') 60 self.mod2.write('import mod1\nmyvar = mod1.var\n') 61 refactoring = multiproject.MultiProjectRefactoring( 62 rename.Rename, [self.project1]) 63 renamer = refactoring(self.project2, self.mod2, 64 self.mod2.read().rindex('var')) 65 multiproject.perform(renamer.get_all_changes('newvar')) 66 self.assertEqual('newvar = 1\n', self.mod1.read()) 67 self.assertEqual('import mod1\nmyvar = mod1.newvar\n', 68 self.mod2.read()) 69 70 71if __name__ == '__main__': 72 unittest.main() 73