Author: troycurtisjr
Date: Sun Feb 25 17:26:45 2018
New Revision: 1825316
URL: http://svn.apache.org/viewvc?rev=1825316&view=rev
Log:
Update external 'diff' command test for svn.fs.FileDiff() to depend on presence
of the command instead of testing for 'win32' platform.
* subversion/bindings/swig/python/tests/fs.py
(SubversionFSTestCase.test_diff_repos_paths): Split function into internal
and external variants.
(SubversionFSTestCase.test_diff_repos_paths_external): New test method.
(SubversionFSTestCase.test_diff_repos_paths_internal): New test method.
(SubversionFSTestCase.setUp): Added unicode test commit from original
test_diff_repos_paths() so all test methods have a common repository setup.
Found by: stsp
Modified:
subversion/trunk/subversion/bindings/swig/python/tests/fs.py
Modified: subversion/trunk/subversion/bindings/swig/python/tests/fs.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/tests/fs.py?rev=1825316&r1=1825315&r2=1825316&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/python/tests/fs.py (original)
+++ subversion/trunk/subversion/bindings/swig/python/tests/fs.py Sun Feb 25
17:26:45 2018
@@ -19,8 +19,9 @@
# under the License.
#
#
-import os, unittest, sys
+import os, unittest, sys, errno
from tempfile import mkstemp
+from subprocess import Popen, PIPE
try:
# Python >=3.0
from urllib.parse import urljoin
@@ -46,23 +47,13 @@ class SubversionFSTestCase(unittest.Test
self.fs = repos.fs(self.repos)
self.rev = fs.youngest_rev(self.fs)
self.tmpfile = None
-
- def tearDown(self):
- self.fs = None
- self.repos = None
- self.temper.cleanup()
-
- if self.tmpfile is not None:
- os.remove(self.tmpfile)
-
- def test_diff_repos_paths(self):
- """Test diffing of a repository path."""
+ self.unistr = u'â_Ê'
tmpfd, self.tmpfile = mkstemp()
tmpfp = os.fdopen(tmpfd, "wb")
# Use a unicode file to ensure proper non-ascii handling.
- tmpfp.write(u'â_Ê'.encode('utf8'))
+ tmpfp.write(self.unistr.encode('utf8'))
tmpfp.close()
@@ -81,27 +72,48 @@ class SubversionFSTestCase(unittest.Test
urljoin(self.repos_uri +"/",
"trunk/UniTest.txt"),
True, True,
clientctx)
- self.assertEqual(commitinfo.revision, self.rev + 1)
+
+ self.commitedrev = commitinfo.revision
+
+ def tearDown(self):
+ self.fs = None
+ self.repos = None
+ self.temper.cleanup()
+
+ if self.tmpfile is not None:
+ os.remove(self.tmpfile)
+
+ def test_diff_repos_paths_internal(self):
+ """Test diffing of a repository path using the internal diff."""
# Test standard internal diff
- fdiff = fs.FileDiff(fs.revision_root(self.fs, commitinfo.revision),
"/trunk/UniTest.txt",
+ fdiff = fs.FileDiff(fs.revision_root(self.fs, self.commitedrev),
"/trunk/UniTest.txt",
None, None, diffoptions=None)
diffp = fdiff.get_pipe()
diffoutput = diffp.read().decode('utf8')
- self.assertTrue(diffoutput.find(u'-â_Ê') > 0)
+ self.assertTrue(diffoutput.find(u'-' + self.unistr) > 0)
+
+ def test_diff_repos_paths_external(self):
+ """Test diffing of a repository path using an external diff (if
available)."""
+
+ # Test if this environment has the diff command, if not then skip the test
+ try:
+ diffout, differr = Popen(["diff"], stdin=PIPE, stderr=PIPE).communicate()
+
+ except OSError as err:
+ if err.errno == errno.ENOENT:
+ self.skipTest("'diff' command not present")
+ else:
+ raise err
- # Test passing diffoptions to an external 'diff' executable.
- # It is unusual to have the 'diff' tool on Windows, so do not
- # try the test there.
- if sys.platform != "win32":
- fdiff = fs.FileDiff(fs.revision_root(self.fs, commitinfo.revision),
"/trunk/UniTest.txt",
- None, None, diffoptions=['--normal'])
- diffp = fdiff.get_pipe()
- diffoutput = diffp.read().decode('utf8')
+ fdiff = fs.FileDiff(fs.revision_root(self.fs, self.commitedrev),
"/trunk/UniTest.txt",
+ None, None, diffoptions=[])
+ diffp = fdiff.get_pipe()
+ diffoutput = diffp.read().decode('utf8')
- self.assertTrue(diffoutput.find(u'< â_Ê') > 0)
+ self.assertTrue(diffoutput.find(u'< ' + self.unistr) > 0)
def suite():
return unittest.defaultTestLoader.loadTestsFromTestCase(