diff options
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_steps_source_svn.py')
-rw-r--r-- | lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_steps_source_svn.py | 1477 |
1 files changed, 0 insertions, 1477 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_steps_source_svn.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_steps_source_svn.py deleted file mode 100644 index b1c4e2ce..00000000 --- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_steps_source_svn.py +++ /dev/null @@ -1,1477 +0,0 @@ -# This file is part of Buildbot. Buildbot is free software: you can -# redistribute it and/or modify it under the terms of the GNU General Public -# License as published by the Free Software Foundation, version 2. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Copyright Buildbot Team Members - -from twisted.trial import unittest -from twisted.python.reflect import namedModule -from buildbot.steps.source import svn -from buildbot.status.results import SUCCESS, FAILURE -from buildbot.test.util import sourcesteps -from buildbot.process import buildstep -from buildbot.test.fake.remotecommand import ExpectShell, Expect -from buildbot.test.util.properties import ConstantRenderable -from buildbot import config - -class TestSVN(sourcesteps.SourceStepMixin, unittest.TestCase): - - svn_st_xml = """<?xml version="1.0"?> - <status> - <target path="."> - <entry path="svn_external_path"> - <wc-status props="none" item="external"> - </wc-status> - </entry> - <entry path="svn_external_path/unversioned_file1"> - <wc-status props="none" item="unversioned"> - </wc-status> - </entry> - <entry path="svn_external_path/unversioned_file2"> - <wc-status props="none" item="unversioned"> - </wc-status> - </entry> - </target> - </status> - """ - svn_st_xml_corrupt = """<?xml version="1.0"?> - <target path="."> - <entry path="svn_external_path"> - <wc-status props="none" item="external"> - </wc-status> - </entry> - <entry path="svn_external_path/unversioned_file"> - <wc-status props="none" item="unversioned"> - </wc-status> - </entry> - </target> - </status> - """ - svn_st_xml_empty = """<?xml version="1.0"?> - <status> - <target path="."> - </target> - </status>""" - svn_info_stdout_xml = """<?xml version="1.0"?> - <info> - <entry - kind="dir" - path="." - revision="100"> - <url>http://svn.red-bean.com/repos/test</url> - <repository> - <root>http://svn.red-bean.com/repos/test</root> - <uuid>5e7d134a-54fb-0310-bd04-b611643e5c25</uuid> - </repository> - <wc-info> - <schedule>normal</schedule> - <depth>infinity</depth> - </wc-info> - <commit - revision="90"> - <author>sally</author> - <date>2003-01-15T23:35:12.847647Z</date> - </commit> - </entry> - </info>""" - svn_info_stdout_xml_nonintegerrevision = """<?xml version="1.0"?> - <info> - <entry - kind="dir" - path="." - revision="a10"> - <url>http://svn.red-bean.com/repos/test</url> - <repository> - <root>http://svn.red-bean.com/repos/test</root> - <uuid>5e7d134a-54fb-0310-bd04-b611643e5c25</uuid> - </repository> - <wc-info> - <schedule>normal</schedule> - <depth>infinity</depth> - </wc-info> - <commit - revision="a10"> - <author>sally</author> - <date>2003-01-15T23:35:12.847647Z</date> - </commit> - </entry> - </info>""" - - def setUp(self): - return self.setUpSourceStep() - - def tearDown(self): - return self.tearDownSourceStep() - - def patch_slaveVersionIsOlderThan(self, result): - self.patch(svn.SVN, 'slaveVersionIsOlderThan', lambda x, y, z: result) - - def test_no_repourl(self): - self.assertRaises(config.ConfigErrors, lambda : - svn.SVN()) - - def test_incorrect_mode(self): - self.assertRaises(config.ConfigErrors, lambda : - svn.SVN(repourl='http://svn.local/app/trunk', - mode='invalid')) - - def test_incorrect_method(self): - self.assertRaises(config.ConfigErrors, lambda : - svn.SVN(repourl='http://svn.local/app/trunk', - method='invalid')) - - def test_corrupt_xml(self): - self.setupStep(svn.SVN(repourl='http://svn.local/app/trunk')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_st_xml_corrupt) - + 0, - ) - self.expectOutcome(result=FAILURE, status_text=["updating"]) - return self.runStep() - - def test_revision_noninteger(self): - svnTestStep = svn.SVN(repourl='http://svn.local/app/trunk') - self.setupStep(svnTestStep) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml_nonintegerrevision) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', 'a10', 'SVN') - d = self.runStep() - def _checkType(): - revision = self.step.getProperty('got_revision') - self.assertRaises(ValueError, lambda: int(revision)) - d.addCallback(lambda _: _checkType()) - return d - - def test_revision_missing(self): - """Fail if 'revision' tag isnt there""" - svn_info_stdout = self.svn_info_stdout_xml.replace('entry', 'Blah') - - svnTestStep = svn.SVN(repourl='http://svn.local/app/trunk') - self.setupStep(svnTestStep) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=svn_info_stdout) - + 0, - ) - self.expectOutcome(result=FAILURE, status_text=["updating"]) - return self.runStep() - - def test_mode_incremental(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='incremental',username='user', - password='pass', extra_args=['--random'])) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_incremental_timeout(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='incremental',username='user', - timeout=1, - password='pass', extra_args=['--random'])) - self.expectCommands( - ExpectShell(workdir='wkdir', - timeout=1, - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - timeout=1, - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - timeout=1, - command=['svn', 'update', '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + 0, - ExpectShell(workdir='wkdir', - timeout=1, - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_incremental_repourl_renderable(self): - self.setupStep( - svn.SVN(repourl=ConstantRenderable('http://svn.local/trunk'), - mode='incremental')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_incremental_repourl_not_updatable(self): - self.setupStep( - svn.SVN(repourl=ConstantRenderable('http://svn.local/trunk/app'), - mode='incremental',)) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 1, - Expect('rmdir', {'dir': 'wkdir', 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'checkout', 'http://svn.local/trunk/app', - '.', '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_incremental_repourl_not_updatable_svninfo_mismatch(self): - self.setupStep( - svn.SVN(repourl=ConstantRenderable('http://svn.local/trunk/app'), - mode='incremental')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache']) - + ExpectShell.log('stdio', # expecting ../trunk/app - stdout="""<?xml version="1.0"?><url>http://svn.local/branch/foo/app</url>""") - + 0, - Expect('rmdir', {'dir': 'wkdir', 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'checkout', 'http://svn.local/trunk/app', - '.', '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_incremental_given_revision(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='incremental'), dict( - revision='100', - )) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--revision', '100', - '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_incremental_win32path(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='incremental',username='user', - password='pass', extra_args=['--random'])) - self.build.path_module = namedModule("ntpath") - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file=r'wkdir\.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - return self.runStep() - - def test_mode_incremental_preferLastChangedRev(self): - """Give the last-changed rev if 'preferLastChangedRev' is set""" - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='incremental',username='user', - preferLastChangedRev=True, - password='pass', extra_args=['--random'])) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '90', 'SVN') - return self.runStep() - - def test_mode_incremental_preferLastChangedRev_butMissing(self): - """If 'preferLastChangedRev' is set, but missing, fall back - to the regular revision value.""" - svn_info_stdout = self.svn_info_stdout_xml.replace('commit', 'Blah') - - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='incremental',username='user', - preferLastChangedRev=True, - password='pass', extra_args=['--random'])) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=svn_info_stdout) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_clobber(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='clobber')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('rmdir', {'dir': 'wkdir', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'checkout', - 'http://svn.local/app/trunk', '.', - '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_clobber_given_revision(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='clobber'),dict( - revision='100', - )) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('rmdir', {'dir': 'wkdir', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'checkout', - 'http://svn.local/app/trunk', '.', - '--revision', '100', - '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_fresh(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='fresh', depth='infinite')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', {'file': 'wkdir/.svn', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--depth', 'infinite' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', - 'status', '--xml', '--no-ignore', - '--non-interactive', '--no-auth-cache', - '--depth', 'infinite']) - + ExpectShell.log('stdio', - stdout=self.svn_st_xml_empty) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', - '--non-interactive', '--no-auth-cache', '--depth', 'infinite']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', stdout=self.svn_info_stdout_xml) - + ExpectShell.log('stdio', stdout='\n') - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_fresh_given_revision(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='fresh', depth='infinite'),dict( - revision='100', - )) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', {'file': 'wkdir/.svn', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--depth', 'infinite' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', - 'status', '--xml', '--no-ignore', - '--non-interactive', '--no-auth-cache', - '--depth', 'infinite']) - + ExpectShell.log('stdio', - stdout=self.svn_st_xml_empty) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--revision', '100', - '--non-interactive', '--no-auth-cache', '--depth', 'infinite']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', stdout=self.svn_info_stdout_xml) - + ExpectShell.log('stdio', stdout='\n') - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_fresh_keep_on_purge(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', - keep_on_purge=['svn_external_path/unversioned_file1'])) - - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', {'file': 'wkdir/.svn', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', - 'status', '--xml', '--no-ignore', - '--non-interactive', '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout=self.svn_st_xml) - + 0, - Expect('rmdir', {'dir': - ['wkdir/svn_external_path/unversioned_file2'], - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', - '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_clean(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='clean')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', {'file': 'wkdir/.svn', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', - 'status', '--xml', - '--non-interactive', '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout=self.svn_st_xml_empty) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', - '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_clean_given_revision(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='clean'),dict( - revision='100', - )) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', {'file': 'wkdir/.svn', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', - 'status', '--xml', - '--non-interactive', '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout=self.svn_st_xml_empty) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--revision', '100', - '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_not_updatable(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='clean')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', {'file': 'wkdir/.svn', - 'logEnviron': True}) - + 1, - Expect('rmdir', {'dir': 'wkdir', 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'checkout', 'http://svn.local/app/trunk', - '.', '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_not_updatable_given_revision(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='clean'),dict( - revision='100', - )) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', {'file': 'wkdir/.svn', - 'logEnviron': True}) - + 1, - Expect('rmdir', {'dir': 'wkdir', 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'checkout', 'http://svn.local/app/trunk', - '.', '--revision', '100', - '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_clean_old_rmdir(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='clean')) - self.patch_slaveVersionIsOlderThan(True) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', {'file': 'wkdir/.svn', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', - 'status', '--xml', - '--non-interactive', '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout=self.svn_st_xml) - + 0, - Expect('rmdir', {'dir': - 'wkdir/svn_external_path/unversioned_file1', - 'logEnviron': True}) - + 0, - Expect('rmdir', {'dir': - 'wkdir/svn_external_path/unversioned_file2', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', - '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_clean_new_rmdir(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='clean')) - - self.patch_slaveVersionIsOlderThan(False) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', {'file': 'wkdir/.svn', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', - 'status', '--xml', - '--non-interactive', '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout=self.svn_st_xml) - + 0, - Expect('rmdir', {'dir': - ['wkdir/svn_external_path/unversioned_file1', - 'wkdir/svn_external_path/unversioned_file2'], - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', - '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_copy(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='copy')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, - Expect('stat', dict(file='source/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='source', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='source', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache']) - + 0, - Expect('cpdir', {'fromdir': 'source', - 'todir': 'wkdir', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_copy_given_revision(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='copy'),dict( - revision='100', - )) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, - Expect('stat', dict(file='source/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='source', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='source', - command=['svn', 'update', '--revision', '100', - '--non-interactive', '--no-auth-cache']) - + 0, - Expect('cpdir', {'fromdir': 'source', - 'todir': 'wkdir', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_export(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='export')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, - Expect('stat', dict(file='source/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='source', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='source', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache']) - + 0, - ExpectShell(workdir='', - command=['svn', 'export', 'source', 'wkdir']) - + 0, - ExpectShell(workdir='source', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_export_timeout(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - timeout=1, - mode='full', method='export')) - self.expectCommands( - ExpectShell(workdir='wkdir', - timeout=1, - command=['svn', '--version']) - + 0, - Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, - Expect('stat', dict(file='source/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='source', - timeout=1, - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='source', - timeout=1, - command=['svn', 'update', '--non-interactive', - '--no-auth-cache']) - + 0, - ExpectShell(workdir='', - timeout=1, - command=['svn', 'export', 'source', 'wkdir']) - + 0, - ExpectShell(workdir='source', - timeout=1, - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_full_export_given_revision(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='export'),dict( - revision='100', - )) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, - Expect('stat', dict(file='source/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='source', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='source', - command=['svn', 'update', '--revision', '100', - '--non-interactive', '--no-auth-cache']) - + 0, - ExpectShell(workdir='', - command=['svn', 'export', '--revision', '100', - 'source', 'wkdir']) - + 0, - ExpectShell(workdir='source', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_incremental_with_env(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='incremental',username='user', - password='pass', extra_args=['--random'], - env={'abc': '123'})) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version'], - env={'abc': '123'}) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random'], - env={'abc': '123'}) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random'], - env={'abc': '123'}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml'], - env={'abc': '123'}) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_mode_incremental_logEnviron(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='incremental',username='user', - password='pass', extra_args=['--random'], - logEnviron=False)) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version'], - logEnviron=False) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=False)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random'], - logEnviron=False) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random'], - logEnviron=False) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml'], - logEnviron=False) - + ExpectShell.log('stdio', - stdout=self.svn_info_stdout_xml) - + 0, - ) - self.expectOutcome(result=SUCCESS, status_text=["update"]) - self.expectProperty('got_revision', '100', 'SVN') - return self.runStep() - - def test_command_fails(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='incremental',username='user', - password='pass', extra_args=['--random'])) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + 1, - ) - self.expectOutcome(result=FAILURE, status_text=["updating"]) - return self.runStep() - - def test_bogus_svnversion(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='incremental',username='user', - password='pass', extra_args=['--random'])) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', dict(file='wkdir/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + ExpectShell.log('stdio', stdout="""<?xml version="1.0"?><entry kind="dir" path="/a/b/c" revision="1"><url>http://svn.local/app/trunk</url></entry>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache', '--username', 'user', - '--password', 'pass', '--random']) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml']) - + ExpectShell.log('stdio', - stdout='1x0y0') - + 0, - ) - self.expectOutcome(result=FAILURE, status_text=["updating"]) - return self.runStep() - - def test_rmdir_fails_clobber(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='clobber')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('rmdir', {'dir': 'wkdir', - 'logEnviron': True}) - + 1, - ) - self.expectOutcome(result=FAILURE, status_text=["updating"]) - return self.runStep() - - def test_rmdir_fails_copy(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='copy')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 1, - ) - self.expectOutcome(result=FAILURE, status_text=["updating"]) - return self.runStep() - - def test_cpdir_fails_copy(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', method='copy')) - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, - Expect('stat', dict(file='source/.svn', - logEnviron=True)) - + 0, - ExpectShell(workdir='source', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='source', - command=['svn', 'update', '--non-interactive', - '--no-auth-cache']) - + 0, - Expect('cpdir', {'fromdir': 'source', - 'todir': 'wkdir', - 'logEnviron': True}) - + 1, - ) - self.expectOutcome(result=FAILURE, status_text=["updating"]) - return self.runStep() - - def test_rmdir_fails_purge(self): - self.setupStep( - svn.SVN(repourl='http://svn.local/app/trunk', - mode='full', - keep_on_purge=['svn_external_path/unversioned_file1'])) - - self.expectCommands( - ExpectShell(workdir='wkdir', - command=['svn', '--version']) - + 0, - Expect('stat', {'file': 'wkdir/.svn', - 'logEnviron': True}) - + 0, - ExpectShell(workdir='wkdir', - command=['svn', 'info', '--xml', - '--non-interactive', - '--no-auth-cache' ]) - + ExpectShell.log('stdio', - stdout="""<?xml version="1.0"?><url>http://svn.local/app/trunk</url>""") - + 0, - ExpectShell(workdir='wkdir', - command=['svn', - 'status', '--xml', '--no-ignore', - '--non-interactive', '--no-auth-cache']) - + ExpectShell.log('stdio', - stdout=self.svn_st_xml) - + 0, - Expect('rmdir', {'dir': - ['wkdir/svn_external_path/unversioned_file2'], - 'logEnviron': True}) - + 1, - ) - self.expectOutcome(result=FAILURE, status_text=["updating"]) - return self.runStep() - -class TestGetUnversionedFiles(unittest.TestCase): - def test_getUnversionedFiles_does_not_list_externals(self): - svn_st_xml = """<?xml version="1.0"?> - <status> - <target path="."> - <entry path="svn_external_path"> - <wc-status props="none" item="external"> - </wc-status> - </entry> - <entry path="svn_external_path/unversioned_file"> - <wc-status props="none" item="unversioned"> - </wc-status> - </entry> - </target> - </status> - """ - unversioned_files = list(svn.SVN.getUnversionedFiles(svn_st_xml, [])) - self.assertEquals(["svn_external_path/unversioned_file"], unversioned_files) - - def test_getUnversionedFiles_does_not_list_missing(self): - svn_st_xml = """<?xml version="1.0"?> - <status> - <target path="."> - <entry path="missing_file"> - <wc-status props="none" item="missing"></wc-status> - </entry> - </target> - </status> - """ - unversioned_files = list(svn.SVN.getUnversionedFiles(svn_st_xml, [])) - self.assertEquals([], unversioned_files) - - def test_getUnversionedFiles_corrupted_xml(self): - svn_st_xml_corrupt = """<?xml version="1.0"?> - <target path="."> - <entry path="svn_external_path"> - <wc-status props="none" item="external"> - </wc-status> - </entry> - <entry path="svn_external_path/unversioned_file"> - <wc-status props="none" item="unversioned"> - </wc-status> - </entry> - </target> - </status> - """ - self.assertRaises(buildstep.BuildStepFailed, - lambda : list(svn.SVN.getUnversionedFiles(svn_st_xml_corrupt, []))) - - def test_getUnversionedFiles_no_path(self): - svn_st_xml = """<?xml version="1.0"?> - <status> - <target path="."> - <entry path="svn_external_path"> - <wc-status props="none" item="external"> - </wc-status> - </entry> - <entry> - <wc-status props="none" item="unversioned"> - </wc-status> - </entry> - </target> - </status> - """ - unversioned_files = list(svn.SVN.getUnversionedFiles(svn_st_xml, [])) - self.assertEquals([], unversioned_files) - - def test_getUnversionedFiles_no_item(self): - svn_st_xml = """<?xml version="1.0"?> - <status> - <target path="."> - <entry path="svn_external_path"> - <wc-status props="none" item="external"> - </wc-status> - </entry> - <entry path="svn_external_path/unversioned_file"> - <wc-status props="none"> - </wc-status> - </entry> - </target> - </status> - """ - unversioned_files = list(svn.SVN.getUnversionedFiles(svn_st_xml, [])) - self.assertEquals(["svn_external_path/unversioned_file"], unversioned_files) - |