| Index: tests/checkout_test.py
|
| diff --git a/tests/checkout_test.py b/tests/checkout_test.py
|
| index 21cd67150b3543e5022a0f680836f1e23f903216..1428bd7308729ba54d716815b38f32925953a3e7 100755
|
| --- a/tests/checkout_test.py
|
| +++ b/tests/checkout_test.py
|
| @@ -40,6 +40,11 @@ class FakeRepos(fake_repos.FakeReposBase):
|
| '--non-interactive', '--no-auth-cache',
|
| '--username', self.USERS[0][0], '--password', self.USERS[0][1]])
|
| assert os.path.isdir(os.path.join(self.svn_checkout, '.svn'))
|
| + self._commit_svn(self._tree_1())
|
| + self._commit_svn(self._tree_2())
|
| +
|
| + @staticmethod
|
| + def _tree_1():
|
| fs = {}
|
| fs['trunk/origin'] = 'svn@1'
|
| fs['trunk/codereview.settings'] = (
|
| @@ -63,11 +68,26 @@ class FakeRepos(fake_repos.FakeReposBase):
|
| 'ooo\n'
|
| 'pp\n'
|
| 'q\n')
|
| - self._commit_svn(fs)
|
| + return fs
|
| +
|
| + @classmethod
|
| + def _tree_2(cls):
|
| + fs = cls._tree_1()
|
| fs['trunk/origin'] = 'svn@2\n'
|
| fs['trunk/extra'] = 'dummy\n'
|
| fs['trunk/bin_file'] = '\x00'
|
| - self._commit_svn(fs)
|
| + fs['trunk/chromeos/views/DOMui_menu_widget.h'] = (
|
| + '// Copyright (c) 2010\n'
|
| + '// Use of this source code\n'
|
| + '// found in the LICENSE file.\n'
|
| + '\n'
|
| + '#ifndef DOM\n'
|
| + '#define DOM\n'
|
| + '#pragma once\n'
|
| + '\n'
|
| + '#include <string>\n'
|
| + '#endif\n')
|
| + return fs
|
|
|
| def populateGit(self):
|
| raise NotImplementedError()
|
| @@ -100,11 +120,10 @@ class BaseTest(fake_repos.FakeReposTestBase):
|
|
|
| def get_patches(self):
|
| return patch.PatchSet([
|
| + patch.FilePatchDiff('new_dir/subdir/new_file', GIT.NEW_SUBDIR, []),
|
| + patch.FilePatchDiff('chrome/file.cc', GIT.PATCH, []),
|
| # TODO(maruel): Test with is_new == False.
|
| patch.FilePatchBinary('bin_file', '\x00', [], is_new=True),
|
| - patch.FilePatchDiff(
|
| - 'chrome/file.cc', GIT.PATCH, []),
|
| - patch.FilePatchDiff('new_dir/subdir/new_file', GIT.NEW_SUBDIR, []),
|
| patch.FilePatchDelete('extra', False),
|
| ])
|
|
|
| @@ -201,6 +220,35 @@ class BaseTest(fake_repos.FakeReposTestBase):
|
| self.assertEquals(len(expected), len(results))
|
| self.assertEquals(expected, results)
|
|
|
| + def _check_move(self, co):
|
| + """Makes sure file moves are handled correctly."""
|
| + co.prepare(None)
|
| + patchset = patch.PatchSet([
|
| + patch.FilePatchDelete('chromeos/views/DOMui_menu_widget.h', False),
|
| + patch.FilePatchDiff(
|
| + 'chromeos/views/webui_menu_widget.h', GIT.RENAME_PARTIAL, []),
|
| + ])
|
| + co.apply_patch(patchset)
|
| + # Make sure chromeos/views/DOMui_menu_widget.h is deleted and
|
| + # chromeos/views/webui_menu_widget.h is correctly created.
|
| + root = os.path.join(self.root_dir, self.name)
|
| + tree = self.get_trunk(False)
|
| + del tree['chromeos/views/DOMui_menu_widget.h']
|
| + tree['chromeos/views/webui_menu_widget.h'] = (
|
| + '// Copyright (c) 2011\n'
|
| + '// Use of this source code\n'
|
| + '// found in the LICENSE file.\n'
|
| + '\n'
|
| + '#ifndef WEB\n'
|
| + '#define WEB\n'
|
| + '#pragma once\n'
|
| + '\n'
|
| + '#include <string>\n'
|
| + '#endif\n')
|
| + #print patchset[0].get()
|
| + #print fake_repos.read_tree(root)
|
| + self.assertTree(tree, root)
|
| +
|
|
|
| class SvnBaseTest(BaseTest):
|
| def setUp(self):
|
| @@ -349,6 +397,9 @@ class SvnCheckout(SvnBaseTest):
|
| def testPrepare(self):
|
| self._test_prepare(self._get_co(None))
|
|
|
| + def testMove(self):
|
| + self._check_move(self._get_co(None))
|
| +
|
|
|
| class GitSvnCheckout(SvnBaseTest):
|
| name = 'foo.git'
|
| @@ -419,6 +470,9 @@ class GitSvnCheckout(SvnBaseTest):
|
| co.prepare = prepare
|
| self._test_prepare(co)
|
|
|
| + def testMove(self):
|
| + self._check_move(self._get_co(None))
|
| +
|
|
|
| class RawCheckout(SvnBaseTest):
|
| def setUp(self):
|
| @@ -482,6 +536,9 @@ class RawCheckout(SvnBaseTest):
|
| self._test_prepare(co)
|
| self.assertEquals([], revs)
|
|
|
| + def testMove(self):
|
| + self._check_move(self._get_co(None))
|
| +
|
|
|
| class ReadOnlyCheckout(SvnBaseTest):
|
| # Use SvnCheckout as the backed since it support read-only checkouts too.
|
| @@ -513,6 +570,9 @@ class ReadOnlyCheckout(SvnBaseTest):
|
| def testPrepare(self):
|
| self._test_prepare(self._get_co(None))
|
|
|
| + def testMove(self):
|
| + self._check_move(self._get_co(None))
|
| +
|
|
|
| if __name__ == '__main__':
|
| if '-v' in sys.argv:
|
|
|