Implement proper svn copy when a file is copied, moved or renamed

[email protected]
BUG=
TEST=A basic unit test verifies history is kept

Review URL: http://codereview.chromium.org/10310034

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@135651 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/tests/checkout_test.py b/tests/checkout_test.py
index 8128e02..26cb445 100755
--- a/tests/checkout_test.py
+++ b/tests/checkout_test.py
@@ -397,7 +397,36 @@
     self._test_prepare(self._get_co(None))
 
   def testMove(self):
-    self._check_move(self._get_co(None))
+    co = self._get_co(None)
+    self._check_move(co)
+    out = subprocess2.check_output(
+        ['svn', 'status'], cwd=co.project_path)
+    expected = (
+      'A  +    chromeos/views/webui_menu_widget.h\n'
+      'D       chromeos/views/DOMui_menu_widget.h\n')
+    self.assertEquals(expected, out)
+    # Make sure ancestry is what is expected;
+    env = os.environ.copy()
+    env['LANGUAGE'] = 'en_US.UTF-8'
+    out = subprocess2.check_output(
+        ['svn', 'info', 'chromeos/views/webui_menu_widget.h'],
+        cwd=co.project_path,
+        env=env)
+    values = dict(l.split(': ', 1) for l in out.splitlines() if l)
+    expected = {
+      'Checksum': '65837bb3da662c8fa88a4a50940ea7c6',
+      'Copied From Rev': '2',
+      'Copied From URL':
+          '%strunk/chromeos/views/DOMui_menu_widget.h' % self.svn_base,
+      'Name': 'webui_menu_widget.h',
+      'Node Kind': 'file',
+      'Path': 'chromeos/views/webui_menu_widget.h',
+      'Repository Root': '%s' % self.svn_base.rstrip('/'),
+      'Revision': '2',
+      'Schedule': 'add',
+      'URL': '%strunk/chromeos/views/webui_menu_widget.h' % self.svn_base,
+    }
+    self.assertEquals(expected, values)
 
 
 class GitSvnCheckout(SvnBaseTest):