You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by da...@apache.org on 2015/03/29 09:17:38 UTC

svn commit: r1669864 - in /subversion/trunk/tools/dist: backport/merger.py backport_tests.py detect-conflicting-backports.py merge-approved-backports.py

Author: danielsh
Date: Sun Mar 29 07:17:37 2015
New Revision: 1669864

URL: http://svn.apache.org/r1669864
Log:
backport: Port another feature to backport.py.  Add a regression test.

* tools/dist/detect-conflicting-backports.py,
* tools/dist/merge-approved-backports.py:
    Check for local mods to STATUS.

* tools/dist/backport/merger.py
  (no_local_mods): New function.

* tools/dist/backport_tests.py
  (backport_STATUS_mods): New test.

Modified:
    subversion/trunk/tools/dist/backport/merger.py
    subversion/trunk/tools/dist/backport_tests.py
    subversion/trunk/tools/dist/detect-conflicting-backports.py
    subversion/trunk/tools/dist/merge-approved-backports.py

Modified: subversion/trunk/tools/dist/backport/merger.py
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/backport/merger.py?rev=1669864&r1=1669863&r2=1669864&view=diff
==============================================================================
--- subversion/trunk/tools/dist/backport/merger.py (original)
+++ subversion/trunk/tools/dist/backport/merger.py Sun Mar 29 07:17:37 2015
@@ -121,6 +121,11 @@ def last_changed_revision(path_or_url):
     else:
       raise Exception("'svn info' did not print last changed revision")
 
+def no_local_mods(path):
+  "Check PATH for local mods.  Raise if there are any."
+  if run_svn(['status', '-q', '--', path])[1]:
+    raise UnableToMergeException("Local mods on {!r}".format(path))
+
 def _includes_only_svn_mergeinfo_changes(status_output):
   """Return TRUE iff there is exactly one local mod, and it is an svn:mergeinfo
   change.  Use the provided `status -q` output."""

Modified: subversion/trunk/tools/dist/backport_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/backport_tests.py?rev=1669864&r1=1669863&r2=1669864&view=diff
==============================================================================
--- subversion/trunk/tools/dist/backport_tests.py (original)
+++ subversion/trunk/tools/dist/backport_tests.py Sun Mar 29 07:17:37 2015
@@ -624,6 +624,23 @@ def backport_otherproject_change(sbox):
                                 expected_stdout, expected_stderr)
 
 #----------------------------------------------------------------------
+@BackportTest(None)
+def backport_STATUS_mods(sbox):
+  "local mods to STATUS"
+
+  # Introduce a local mod.
+  sbox.simple_append(STATUS, "\n")
+
+  exit_code, output, errput = run_backport(sbox, error_expected=True)
+  expected_stdout = None
+  expected_stderr = ".*Local mods.*STATUS.*"
+  if exit_code == 0:
+    # Can't use verify_exit_code() since the exact code used varies.
+    raise svntest.Failure("exit_code should be non-zero")
+  svntest.verify.verify_outputs(None, output, errput,
+                                expected_stdout, expected_stderr)
+
+#----------------------------------------------------------------------
 
 ########################################################################
 # Run the tests
@@ -640,6 +657,7 @@ test_list = [ None,
               backport_double_conflict,
               backport_branch_with_original_revision,
               backport_otherproject_change,
+              backport_STATUS_mods,
               # When adding a new test, include the test number in the last
               # 6 bytes of the UUID.
              ]

Modified: subversion/trunk/tools/dist/detect-conflicting-backports.py
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/detect-conflicting-backports.py?rev=1669864&r1=1669863&r2=1669864&view=diff
==============================================================================
--- subversion/trunk/tools/dist/detect-conflicting-backports.py (original)
+++ subversion/trunk/tools/dist/detect-conflicting-backports.py Sun Mar 29 07:17:37 2015
@@ -68,6 +68,7 @@ if sys.argv[1:]:
   print(__doc__)
   sys.exit(0)
 
+backport.merger.no_local_mods('./STATUS')
 sf = backport.status.StatusFile(open('./STATUS'))
 
 ERRORS = collections.defaultdict(list)

Modified: subversion/trunk/tools/dist/merge-approved-backports.py
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/merge-approved-backports.py?rev=1669864&r1=1669863&r2=1669864&view=diff
==============================================================================
--- subversion/trunk/tools/dist/merge-approved-backports.py (original)
+++ subversion/trunk/tools/dist/merge-approved-backports.py Sun Mar 29 07:17:37 2015
@@ -39,6 +39,7 @@ if sys.argv[1:]:
   print(__doc__)
   sys.exit(0)
 
+backport.merger.no_local_mods('./STATUS')
 sf = backport.status.StatusFile(open('./STATUS'))
 
 # Duplicate sf.paragraphs, since merge() will be removing elements from it.