[py-svn] r51978 - in py/branch/guido-svn-auth/py/path/svn: . testing

guido at codespeak.net guido at codespeak.net
Sat Mar 1 11:00:07 CET 2008


Author: guido
Date: Sat Mar  1 11:00:07 2008
New Revision: 51978

Modified:
   py/branch/guido-svn-auth/py/path/svn/testing/test_auth.py
   py/branch/guido-svn-auth/py/path/svn/wccommand.py
Log:
Refactored the tests a bit to avoid redundancy, made that the svnwc api is
similar to the svnurl one (so both now have a property 'auth' that allows
overriding auth on a per-object basis, rather than having to pass the SvnAuth
instance as an argument to all methods that hit the server).


Modified: py/branch/guido-svn-auth/py/path/svn/testing/test_auth.py
==============================================================================
--- py/branch/guido-svn-auth/py/path/svn/testing/test_auth.py	(original)
+++ py/branch/guido-svn-auth/py/path/svn/testing/test_auth.py	Sat Mar  1 11:00:07 2008
@@ -93,34 +93,32 @@
         self.commands.append(args)
 
 class TestSvnWCAuth(object):
+    def setup_method(self, meth):
+        self.auth = SvnAuth('user', 'pass', cache_auth=False)
+
     def test_checkout(self):
-        wc = svnwc_no_svn('foo')
-        auth = SvnAuth('user', 'pass')
-        wc.checkout('url', auth=auth)
-        assert wc.commands == [('co', 'url',
-                                '--username="user" --password="pass"')]
+        wc = svnwc_no_svn('foo', auth=self.auth)
+        wc.checkout('url')
+        assert wc.commands[0][-1] == ('--username="user" --password="pass" '
+                                      '--no-auth-cache')
 
     def test_commit(self):
-        wc = svnwc_no_svn('foo')
-        auth = SvnAuth('user', 'pass')
-        wc.commit('msg', auth=auth)
-        assert wc.commands == [('commit -m "msg" --force-log',
-                                '--username="user" --password="pass"')]
+        wc = svnwc_no_svn('foo', auth=self.auth)
+        wc.commit('msg')
+        assert wc.commands[0][-1] == ('--username="user" --password="pass" '
+                                      '--no-auth-cache')
 
     def test_checkout_no_cache_auth(self):
-        wc = svnwc_no_svn('foo')
-        auth = SvnAuth('user', 'pass', cache_auth=False)
-        wc.checkout('url', auth=auth)
-        assert wc.commands == [('co', 'url',
-                                ('--username="user" --password="pass" '
-                                 '--no-auth-cache'))]
+        wc = svnwc_no_svn('foo', auth=self.auth)
+        wc.checkout('url')
+        assert wc.commands[0][-1] == ('--username="user" --password="pass" '
+                                      '--no-auth-cache')
 
     def test_checkout_auth_from_constructor(self):
-        auth = SvnAuth('user', 'pass')
-        wc = svnwc_no_svn('foo', auth=auth)
+        wc = svnwc_no_svn('foo', auth=self.auth)
         wc.checkout('url')
-        assert wc.commands == [('co', 'url',
-                                '--username="user" --password="pass"')]
+        assert wc.commands[0][-1] == ('--username="user" --password="pass" '
+                                      '--no-auth-cache')
 
 class svnurl_no_svn(py.path.svnurl):
     cmdexec_output = 'test'
@@ -137,44 +135,40 @@
 class TestSvnURLAuth(object):
     def setup_method(self, meth):
         svnurl_no_svn.commands = []
+        self.auth = SvnAuth('foo', 'bar')
 
     def test_init(self):
         u = svnurl_no_svn('http://foo.bar/svn')
         assert u.auth is None
 
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn', auth=auth)
-        assert u.auth is auth
+        u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)
+        assert u.auth is self.auth
 
     def test_new(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn/foo', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn/foo', auth=self.auth)
         new = u.new(basename='bar')
-        assert new.auth is auth
+        assert new.auth is self.auth
         assert new.url == 'http://foo.bar/svn/bar'
 
     def test_join(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)
         new = u.join('foo')
-        assert new.auth is auth
+        assert new.auth is self.auth
         assert new.url == 'http://foo.bar/svn/foo'
 
     def test_listdir(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)
         u.cmdexec_output = '''\
    1717 johnny           1529 Nov 04 14:32 LICENSE.txt
    1716 johnny           5352 Nov 04 14:28 README.txt
 '''
         paths = u.listdir()
-        assert paths[0].auth is auth
-        assert paths[1].auth is auth
+        assert paths[0].auth is self.auth
+        assert paths[1].auth is self.auth
         assert paths[0].basename == 'LICENSE.txt'
 
     def test_info(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn/LICENSE.txt', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn/LICENSE.txt', auth=self.auth)
         def dirpath(self):
             return self
         u.cmdexec_output = '''\
@@ -190,67 +184,47 @@
         assert info.size == 1529
 
     def test_open(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)
         foo = u.join('foo')
         foo.check = lambda *args, **kwargs: True
         ret = foo.open()
         assert ret == 'test'
-        assert foo.commands[0].endswith('svn cat "http://foo.bar/svn/foo" '
-                                        '--username="foo" --password="bar"')
+        assert '--username="foo" --password="bar"' in foo.commands[0]
 
     def test_dirpath(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn/foo', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn/foo', auth=self.auth)
         parent = u.dirpath()
-        assert parent.auth is auth
+        assert parent.auth is self.auth
 
     def test_mkdir(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)
         u.mkdir('foo', msg='created dir foo')
-        assert u.commands[0].endswith('svn mkdir "-m" "created dir foo" '
-                                      '"http://foo.bar/svn/foo" '
-                                      '--username="foo" --password="bar"')
+        assert '--username="foo" --password="bar"' in u.commands[0]
 
     def test_copy(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)
         u2 = svnurl_no_svn('http://foo.bar/svn2')
         u.copy(u2, 'copied dir')
-        assert u.commands[0].endswith('svn copy -m "copied dir" '
-                                      '"http://foo.bar/svn" '
-                                      '"http://foo.bar/svn2" '
-                                      '--username="foo" --password="bar"')
+        assert '--username="foo" --password="bar"' in u.commands[0]
 
     def test_rename(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn/foo', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn/foo', auth=self.auth)
         u.rename('http://foo.bar/svn/bar', 'moved foo to bar')
-        assert u.commands[0].endswith('svn move -m "moved foo to bar" --force '
-                                      '"http://foo.bar/svn/foo" '
-                                      '"http://foo.bar/svn/bar" '
-                                      '--username="foo" --password="bar"')
+        assert '--username="foo" --password="bar"' in u.commands[0]
 
     def test_remove(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn/foo', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn/foo', auth=self.auth)
         u.remove(msg='removing foo')
-        assert u.commands[0].endswith('svn rm -m "removing foo" '
-                                      '"http://foo.bar/svn/foo" '
-                                      '--username="foo" --password="bar"')
+        assert '--username="foo" --password="bar"' in u.commands[0]
 
     def test_export(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)
         target = py.path.local('/foo')
         u.export(target)
-        assert u.commands[0].endswith('svn export "http://foo.bar/svn" "/foo" '
-                                      '--username="foo" --password="bar"')
+        assert '--username="foo" --password="bar"' in u.commands[0]
 
     def test_log(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn/foo', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn/foo', auth=self.auth)
         u.popen_output = py.std.StringIO.StringIO('''\
 <?xml version="1.0"?>
 <log>
@@ -264,20 +238,15 @@
 ''')
         u.check = lambda *args, **kwargs: True
         ret = u.log(10, 20, verbose=True)
-        assert u.commands[0].endswith('svn log --xml -r 10:20 -v '
-                                      '"http://foo.bar/svn/foo" '
-                                      '--username="foo" --password="bar"')
+        assert '--username="foo" --password="bar"' in u.commands[0]
         assert len(ret) == 1
         assert int(ret[0].rev) == 51381
         assert ret[0].author == 'guido'
 
     def test_propget(self):
-        auth = SvnAuth('foo', 'bar')
-        u = svnurl_no_svn('http://foo.bar/svn', auth=auth)
+        u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)
         u.propget('foo')
-        assert u.commands[0].endswith('svn propget "foo" '
-                                      '"http://foo.bar/svn" '
-                                      '--username="foo" --password="bar"')
+        assert '--username="foo" --password="bar"' in u.commands[0]
 
 class SvnAuthFunctionalTestBase(object):
     def setup_class(cls):
@@ -292,6 +261,8 @@
         self.repopath = py.path.local(str(self.repo)[7:])
         self.temppath = py.test.ensuretemp('TestSvnAuthFunctional.%s' % (
                                            func_name))
+        self.auth = py.path.SvnAuth('johnny', 'foo', cache_auth=False,
+                                    interactive=False)
 
     def _start_svnserve(self):
         make_repo_auth(self.repopath, {'johnny': ('foo', 'rw')})
@@ -304,8 +275,7 @@
     def test_checkout_constructor_arg(self):
         port, pid = self._start_svnserve()
         try:
-            auth = py.path.SvnAuth('johnny', 'foo', cache_auth=False)
-            wc = py.path.svnwc(self.temppath, auth=auth)
+            wc = py.path.svnwc(self.temppath, auth=self.auth)
             wc.checkout(
                 'svn://localhost:%s/%s' % (port, self.repopath.basename))
             assert wc.join('.svn').check()
@@ -317,11 +287,9 @@
     def test_checkout_function_arg(self):
         port, pid = self._start_svnserve()
         try:
-            auth = py.path.SvnAuth('johnny', 'foo', cache_auth=False)
-            wc = py.path.svnwc(self.temppath)
+            wc = py.path.svnwc(self.temppath, auth=self.auth)
             wc.checkout(
-                'svn://localhost:%s/%s' % (port, self.repopath.basename),
-                auth=auth)
+                'svn://localhost:%s/%s' % (port, self.repopath.basename))
             assert wc.join('.svn').check()
         finally:
             killproc(pid)
@@ -341,14 +309,12 @@
     def test_log(self):
         port, pid = self._start_svnserve()
         try:
-            auth = py.path.SvnAuth('johnny', 'foo', cache_auth=False,
-                                   interactive=False)
-            wc = py.path.svnwc(self.temppath, auth)
+            wc = py.path.svnwc(self.temppath, self.auth)
             wc.checkout(
                 'svn://localhost:%s/%s' % (port, self.repopath.basename))
             foo = wc.ensure('foo.txt')
             wc.commit('added foo.txt')
-            log = foo.log(auth=auth)
+            log = foo.log()
             assert len(log) == 1
             assert log[0].msg == 'added foo.txt'
         finally:
@@ -357,9 +323,7 @@
     def test_switch(self):
         port, pid = self._start_svnserve()
         try:
-            auth = py.path.SvnAuth('johnny', 'foo', cache_auth=False,
-                                   interactive=False)
-            wc = py.path.svnwc(self.temppath, auth=auth)
+            wc = py.path.svnwc(self.temppath, auth=self.auth)
             svnurl = 'svn://localhost:%s/%s' % (port, self.repopath.basename)
             wc.checkout(svnurl)
             wc.ensure('foo', dir=True).ensure('foo.txt').write('foo')
@@ -367,7 +331,7 @@
             wc.ensure('bar', dir=True)
             wc.commit('added bar dir')
             bar = wc.join('bar')
-            bar.switch(svnurl + '/foo', auth=auth)
+            bar.switch(svnurl + '/foo')
             assert bar.join('foo.txt')
         finally:
             killproc(pid)
@@ -375,12 +339,10 @@
     def test_update(self):
         port, pid = self._start_svnserve()
         try:
-            auth = py.path.SvnAuth('johnny', 'foo', cache_auth=False,
-                                   interactive=False)
             wc1 = py.path.svnwc(self.temppath.ensure('wc1', dir=True),
-                                auth=auth)
+                                auth=self.auth)
             wc2 = py.path.svnwc(self.temppath.ensure('wc2', dir=True),
-                                auth=auth)
+                                auth=self.auth)
             wc1.checkout(
                 'svn://localhost:%s/%s' % (port, self.repopath.basename))
             wc2.checkout(
@@ -391,40 +353,38 @@
             assert wc2.join('foo').check()
 
             auth = py.path.SvnAuth('unknown', 'unknown', interactive=False)
-            py.test.raises(Exception, 'wc2.update(auth=auth)')
+            wc2.auth = auth
+            py.test.raises(Exception, 'wc2.update()')
         finally:
             killproc(pid)
 
     def test_lock_unlock_status(self):
         port, pid = self._start_svnserve()
         try:
-            auth = py.path.SvnAuth('johnny', 'foo', cache_auth=False,
-                                   interactive=False)
-            wc = py.path.svnwc(self.temppath, auth=auth)
+            wc = py.path.svnwc(self.temppath, auth=self.auth)
             wc.checkout(
                 'svn://localhost:%s/%s' % (port, self.repopath.basename,))
             wc.ensure('foo', file=True)
             wc.commit('added foo file')
             foo = wc.join('foo')
-            foo.lock(auth=auth)
-            status = foo.status(auth=auth)
+            foo.lock()
+            status = foo.status()
             assert status.locked
-            foo.unlock(auth=auth)
-            status = foo.status(auth=auth)
+            foo.unlock()
+            status = foo.status()
             assert not status.locked
 
             auth = py.path.SvnAuth('unknown', 'unknown', interactive=False)
-            py.test.raises(Exception, 'foo.lock(auth=auth)')
-            py.test.raises(Exception, 'foo.unlock(auth=auth)')
+            foo.auth = auth
+            py.test.raises(Exception, 'foo.lock()')
+            py.test.raises(Exception, 'foo.unlock()')
         finally:
             killproc(pid)
 
     def test_diff(self):
         port, pid = self._start_svnserve()
         try:
-            auth = py.path.SvnAuth('johnny', 'foo', cache_auth=False,
-                                   interactive=False)
-            wc = py.path.svnwc(self.temppath, auth=auth)
+            wc = py.path.svnwc(self.temppath, auth=self.auth)
             wc.checkout(
                 'svn://localhost:%s/%s' % (port, self.repopath.basename,))
             wc.ensure('foo', file=True)
@@ -435,14 +395,15 @@
             foo.write('bar')
             diff = foo.diff()
             assert '\n+bar\n' in diff
-            foo.commit('added some content', auth=auth)
+            foo.commit('added some content')
             diff = foo.diff()
             assert not diff
-            diff = foo.diff(rev=rev, auth=auth)
+            diff = foo.diff(rev=rev)
             assert '\n+bar\n' in diff
 
             auth = py.path.SvnAuth('unknown', 'unknown', interactive=False)
-            py.test.raises(Exception, 'foo.diff(rev=rev, auth=auth)')
+            foo.auth = auth
+            py.test.raises(Exception, 'foo.diff(rev=rev)')
         finally:
             killproc(pid)
 
@@ -450,15 +411,13 @@
     def test_listdir(self):
         port, pid = self._start_svnserve()
         try:
-            auth = SvnAuth('johnny', 'foo', cache_auth=False,
-                           interactive=False)
             u = py.path.svnurl(
                 'svn://localhost:%s/%s' % (port, self.repopath.basename),
-                auth=auth)
+                auth=self.auth)
             u.ensure('foo')
             paths = u.listdir()
             assert len(paths) == 1
-            assert paths[0].auth is auth
+            assert paths[0].auth is self.auth
 
             auth = SvnAuth('foo', 'bar', interactive=False)
             u = py.path.svnurl(
@@ -471,16 +430,14 @@
     def test_copy(self):
         port, pid = self._start_svnserve()
         try:
-            auth = SvnAuth('johnny', 'foo', cache_auth=False,
-                           interactive=False)
             u = py.path.svnurl(
                 'svn://localhost:%s/%s' % (port, self.repopath.basename),
-                auth=auth)
+                auth=self.auth)
             foo = u.ensure('foo')
             bar = u.join('bar')
             foo.copy(bar)
             assert bar.check()
-            assert bar.auth is auth
+            assert bar.auth is self.auth
 
             auth = SvnAuth('foo', 'bar', interactive=False)
             u = py.path.svnurl(
@@ -495,11 +452,9 @@
     def test_write_read(self):
         port, pid = self._start_svnserve()
         try:
-            auth = SvnAuth('johnny', 'foo', cache_auth=False,
-                           interactive=False)
             u = py.path.svnurl(
                 'svn://localhost:%s/%s' % (port, self.repopath.basename),
-                auth=auth)
+                auth=self.auth)
             foo = u.ensure('foo')
             fp = foo.open()
             try:

Modified: py/branch/guido-svn-auth/py/path/svn/wccommand.py
==============================================================================
--- py/branch/guido-svn-auth/py/path/svn/wccommand.py	(original)
+++ py/branch/guido-svn-auth/py/path/svn/wccommand.py	Sat Mar  1 11:00:07 2008
@@ -35,7 +35,7 @@
                                           svncommon.ALLOWED_CHARS):
             raise ValueError("bad char in wcpath %s" % (wcpath, ))
         self.localpath = py.path.local(wcpath)
-        self._auth = auth
+        self.auth = auth
         return self
 
     strpath = property(lambda x: str(x.localpath), None, None, "string path")
@@ -64,24 +64,21 @@
         info = self.info()
         return py.path.svnurl(info.url)
 
-
     def __repr__(self):
         return "svnwc(%r)" % (self.strpath) # , self._url)
 
     def __str__(self):
         return str(self.localpath)
 
-    def _makeauthoptions(self, auth):
-        if auth is None:
-            auth = self._auth 
-        if auth is None:
+    def _makeauthoptions(self):
+        if self.auth is None:
             return ''
-        return auth.makecmdoptions()
+        return self.auth.makecmdoptions()
 
-    def _authsvn(self, cmd, args=None, auth=None):
-        args = args and list(args) or [] 
-        args.append(self._makeauthoptions(auth)) 
-        return self._svn(cmd, *args) 
+    def _authsvn(self, cmd, args=None):
+        args = args and list(args) or []
+        args.append(self._makeauthoptions())
+        return self._svn(cmd, *args)
         
     def _svn(self, cmd, *args):
         l = ['svn %s' % cmd]
@@ -114,11 +111,11 @@
             raise
         return out
 
-    def switch(self, url, auth=None):
+    def switch(self, url):
         """ switch to given URL. """
-        self._authsvn('switch', [url], auth=auth)
+        self._authsvn('switch', [url])
 
-    def checkout(self, url=None, rev=None, auth=None):
+    def checkout(self, url=None, rev=None):
         """ checkout from url to local wcpath. """
         args = []
         if url is None:
@@ -133,11 +130,11 @@
             else:
                 args.append('-r' + str(rev))
         args.append(url)
-        self._authsvn('co', args, auth=auth)
+        self._authsvn('co', args)
 
-    def update(self, rev = 'HEAD', auth=None):
+    def update(self, rev = 'HEAD'):
         """ update working copy item to given revision. (None -> HEAD). """
-        self._authsvn('up', ['-r', rev], auth=auth)
+        self._authsvn('up', ['-r', rev])
 
     def write(self, content, mode='wb'):
         """ write content into local filesystem wc. """
@@ -145,7 +142,7 @@
 
     def dirpath(self, *args):
         """ return the directory Path of the current Path. """
-        return self.__class__(self.localpath.dirpath(*args))
+        return self.__class__(self.localpath.dirpath(*args), auth=self.auth)
 
     def _ensuredirs(self):
         parent = self.dirpath()
@@ -213,16 +210,16 @@
 
     _rex_status = re.compile(r'\s+(\d+|-)\s+(\S+)\s+(\S+)\s+(.*)')
 
-    def lock(self, auth=None):
+    def lock(self):
         """ set a lock (exclusive) on the resource """
-        out = self._authsvn('lock', auth=auth).strip()
+        out = self._authsvn('lock').strip()
         if not out:
             # warning or error, raise exception
             raise Exception(out[4:])
     
-    def unlock(self, auth=None):
+    def unlock(self):
         """ unset a previously set lock """
-        out = self._authsvn('unlock', auth=auth).strip()
+        out = self._authsvn('unlock').strip()
         if out.startswith('svn:'):
             # warning or error, raise exception
             raise Exception(out[4:])
@@ -235,7 +232,7 @@
         except:
             pass
 
-    def status(self, updates=0, rec=0, externals=0, auth=None):
+    def status(self, updates=0, rec=0, externals=0):
         """ return (collective) Status object for this file. """
         # http://svnbook.red-bean.com/book.html#svn-ch-3-sect-4.3.1
         #             2201     2192        jum   test
@@ -263,7 +260,7 @@
         update_rev = None
 
         cmd = 'status -v %s %s %s' % (updates, rec, externals)
-        out = self._authsvn(cmd, auth=auth)
+        out = self._authsvn(cmd)
         rootstatus = WCStatus(self)
         for line in out.split('\n'):
             if not line.strip():
@@ -281,7 +278,8 @@
                     wcpath = self.join(fn, abs=1)
                     rootstatus.unknown.append(wcpath)
                 elif c0 == 'X':
-                    wcpath = self.__class__(self.localpath.join(fn, abs=1))
+                    wcpath = self.__class__(self.localpath.join(fn, abs=1),
+                                            auth=self.auth)
                     rootstatus.external.append(wcpath)
                 elif c0 == 'I':
                     wcpath = self.join(fn, abs=1)
@@ -345,14 +343,14 @@
                 continue
         return rootstatus
 
-    def diff(self, rev=None, auth=None):
+    def diff(self, rev=None):
         """ return a diff of the current path against revision rev (defaulting
             to the last one).
         """
         args = []
         if rev is not None:
             args.append("-r %d" % rev)
-        out = self._authsvn('diff', args, auth=auth)
+        out = self._authsvn('diff', args)
         return out
 
     def blame(self):
@@ -373,14 +371,14 @@
         return result
 
     _rex_commit = re.compile(r'.*Committed revision (\d+)\.$', re.DOTALL)
-    def commit(self, msg='', rec=1, auth=None):
+    def commit(self, msg='', rec=1):
         """ commit with support for non-recursive commits """
         from py.__.path.svn import cache
         # XXX i guess escaping should be done better here?!?
         cmd = 'commit -m "%s" --force-log' % (msg.replace('"', '\\"'),)
         if not rec:
             cmd += ' -N'
-        out = self._authsvn(cmd, auth=auth) 
+        out = self._authsvn(cmd)
         try:
             del cache.info[self]
         except KeyError:
@@ -446,7 +444,7 @@
             localpath = self.localpath.new(**kw)
         else:
             localpath = self.localpath
-        return self.__class__(localpath)
+        return self.__class__(localpath, auth=self.auth)
 
     def join(self, *args, **kwargs):
         """ return a new Path (with the same revision) which is composed
@@ -455,7 +453,7 @@
         if not args:
             return self
         localpath = self.localpath.join(*args, **kwargs)
-        return self.__class__(localpath)
+        return self.__class__(localpath, auth=self.auth)
 
     def info(self, usecache=1):
         """ return an Info structure with svn-provided information. """
@@ -498,7 +496,7 @@
 
         paths = []
         for localpath in self.localpath.listdir(notsvn):
-            p = self.__class__(localpath)
+            p = self.__class__(localpath, auth=self.auth)
             paths.append(p)
 
         if fil or sort:
@@ -533,7 +531,7 @@
             else:
                 return True 
 
-    def log(self, rev_start=None, rev_end=1, verbose=False, auth=None):
+    def log(self, rev_start=None, rev_end=1, verbose=False):
         """ return a list of LogEntry instances for this path.
 rev_start is the starting revision (defaulting to the first one).
 rev_end is the last revision (defaulting to HEAD).
@@ -551,7 +549,7 @@
         verbose_opt = verbose and "-v" or ""
         locale_env = svncommon.fixlocale()
         # some blather on stderr
-        auth_opt = self._makeauthoptions(auth)
+        auth_opt = self._makeauthoptions()
         stdin, stdout, stderr  = os.popen3(locale_env +
                                            'svn log --xml %s %s %s "%s"' % (
                                             rev_opt, verbose_opt, auth_opt,
@@ -579,7 +577,7 @@
         return self.info().mtime
 
     def __hash__(self):
-        return hash((self.strpath, self.__class__))
+        return hash((self.strpath, self.__class__, self.auth))
 
 
 class WCStatus:


More information about the py-svn mailing list