Author: philip
Date: Thu Nov 19 20:10:11 2009
New Revision: 882276

URL: http://svn.apache.org/viewvc?rev=882276&view=rev
Log:
Add an XFail test for svn:external switching repositories.

* subversion/tests/cmdline/externals_tests.py
  (relegate_external): New.

Modified:
    subversion/trunk/subversion/tests/cmdline/externals_tests.py

Modified: subversion/trunk/subversion/tests/cmdline/externals_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/externals_tests.py?rev=882276&r1=882275&r2=882276&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/externals_tests.py Thu Nov 19 
20:10:11 2009
@@ -1396,6 +1396,62 @@
 
   svntest.main.safe_rmtree(export_target)
 
+#----------------------------------------------------------------------
+
+# Change external from one repo to another
+def relegate_external(sbox):
+  "relegate external from one repo to another"
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+  repo_dir = sbox.repo_dir
+  repo_url = sbox.repo_url
+  A_path = os.path.join(wc_dir, 'A')
+
+  # setup an external within the same repository
+  externals_desc = '^/A/B/E        external'
+  change_external(A_path, externals_desc)
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'up',
+                                     repo_url, wc_dir)
+
+  # create another repository
+  other_repo_dir, other_repo_url = sbox.add_repo_path('other')
+  svntest.main.copy_repos(repo_dir, other_repo_dir, 2)
+
+  # point external to the other repository
+  externals_desc = other_repo_url + '/A/B/E        external\n'
+  (fd, tmp_f) = tempfile.mkstemp()
+  svntest.main.file_append(tmp_f, externals_desc)
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'pset', '-F', tmp_f,
+                                     'svn:externals', A_path)
+
+  # Update "relegates", i.e. throws-away and recreates, the external
+  expected_output = svntest.wc.State(wc_dir, {
+      'A/external'       : Item(), # No A?
+      'A/external/alpha' : Item(status='A '),
+      'A/external/beta'  : Item(status='A '),
+    })
+  expected_disk = svntest.main.greek_state.copy()
+  expected_disk.tweak('A', props={'svn:externals' : externals_desc})
+  expected_disk.add({
+      'A/external'       : Item(),
+      'A/external/alpha' : Item('This is the file \'alpha\'.\n'),
+      'A/external/beta'  : Item('This is the file \'beta\'.\n'),
+      })
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
+  expected_status.tweak('A', status=' M')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None, None, None, None,
+                                        True)
+
+  ### TODO: Commit the propset and update a pristine working copy from
+  ### r2 to r3.
+
 ########################################################################
 # Run the tests
 
@@ -1423,6 +1479,7 @@
               XFail(update_lose_file_external),
               XFail(switch_relative_external),
               export_sparse_wc_with_externals,
+              XFail(relegate_external),
              ]
 
 if __name__ == '__main__':


Reply via email to