Rev 1266: Cherrypick additional assertions, small improvements from the cext branch. in http://people.samba.org/bzr/jelmer/bzr-svn/0.4
Jelmer Vernooij
jelmer at samba.org
Sun Jun 22 09:45:54 BST 2008
At http://people.samba.org/bzr/jelmer/bzr-svn/0.4
------------------------------------------------------------
revno: 1266
revision-id: jelmer at samba.org-20080622084553-tr8u5z31hd8er3jv
parent: jelmer at samba.org-20080622083112-68pzny4uxj2ttk3a
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sun 2008-06-22 10:45:53 +0200
message:
Cherrypick additional assertions, small improvements from the cext branch.
modified:
logwalker.py logwalker.py-20060621215743-c13fhfnyzh1xzwh2-1
mapping.py mapping.py-20080128201303-6cp01phc0dmc0kiv-1
mapping3/__init__.py __init__.py-20080502174630-9324zh25kka98vlw-1
setup.py setup.py-20060502115218-86950492da22353f
tests/test_errors.py test_errors.py-20070129114605-ban03f32t6ja14ez-1
wc.c wc.pyx-20080313142018-10l8l23vha2j9e6b-1
workingtree.py workingtree.py-20060306120941-b083cb0fdd4a69de
=== modified file 'logwalker.py'
--- a/logwalker.py 2008-06-22 07:37:15 +0000
+++ b/logwalker.py 2008-06-22 08:45:53 +0000
@@ -185,6 +185,7 @@
revprops = lazy_dict({}, self._transport.revprop_list, revnum)
if changes.changes_path(revpaths, path, True):
+ assert isinstance(revnum, int)
yield (revpaths, revnum, revprops)
i += 1
if limit != 0 and i == limit:
@@ -193,7 +194,11 @@
if next is None:
break
+ assert (ascending and next[1] > revnum) or \
+ (not ascending and next[1] < revnum)
(path, revnum) = next
+ assert isinstance(path, str)
+ assert isinstance(revnum, int)
def get_previous(self, path, revnum):
"""Return path,revnum pair specified pair was derived from.
@@ -247,9 +252,11 @@
:param to_revnum: End of range to fetch information for
"""
+ assert isinstance(self.saved_revnum, int)
if to_revnum <= self.saved_revnum:
return
latest_revnum = self.actual._transport.get_latest_revnum()
+ assert isinstance(latest_revnum, int)
to_revnum = max(latest_revnum, to_revnum)
pb = ui.ui_factory.nested_progress_bar()
=== modified file 'mapping.py'
--- a/mapping.py 2008-06-22 08:08:39 +0000
+++ b/mapping.py 2008-06-22 08:45:53 +0000
@@ -21,7 +21,6 @@
from bzrlib.plugins.svn import core, errors, properties, version_info
import calendar
-import svn
import time
import urllib
=== modified file 'mapping3/__init__.py'
--- a/mapping3/__init__.py 2008-06-17 22:52:33 +0000
+++ b/mapping3/__init__.py 2008-06-22 08:45:53 +0000
@@ -71,6 +71,7 @@
return self.repository.transport.check_path(path, revnum) == NODE_DIR
def find_children(path):
try:
+ assert not path.startswith("/")
dirents = self.repository.transport.get_dir(path, revnum)[0]
except SubversionException, (msg, num):
if num in (ERR_FS_NOT_DIRECTORY, ERR_FS_NOT_FOUND, ERR_RA_DAV_PATH_NOT_FOUND):
=== modified file 'setup.py'
--- a/setup.py 2008-06-22 08:08:39 +0000
+++ b/setup.py 2008-06-22 08:45:53 +0000
@@ -44,7 +44,7 @@
ext_modules=[
Extension("core", ["core.c", "util.c"], libraries=["svn_subr-1"],
include_dirs=[apr_include_dir(), svn_include_dir()]),
- Extension("client", ["client.c", "util.c"], libraries=["svn_client-1"],
+ Extension("client", ["client.c", "editor.c", "util.c", "ra.c", "wc.c"], libraries=["svn_client-1"],
include_dirs=[apr_include_dir(), svn_include_dir()]),
Extension("ra", ["ra.c", "util.c", "editor.c"], libraries=["svn_ra-1"],
include_dirs=[apr_include_dir(), svn_include_dir()]),
=== modified file 'tests/test_errors.py'
--- a/tests/test_errors.py 2008-06-15 02:48:51 +0000
+++ b/tests/test_errors.py 2008-06-22 08:45:53 +0000
@@ -19,8 +19,8 @@
UnexpectedEndOfContainerError)
from bzrlib.tests import TestCase
+from bzrlib.plugins.svn.core import SubversionException
from bzrlib.plugins.svn.errors import *
-from bzrlib.plugins.svn.core import SubversionException
class TestConvertError(TestCase):
def test_decorator_unknown(self):
=== modified file 'wc.c'
--- a/wc.c 2008-06-22 05:13:11 +0000
+++ b/wc.c 2008-06-22 08:45:53 +0000
@@ -452,7 +452,7 @@
Py_RETURN_NONE;
}
-static PyObject *adm_crawl_revisions(PyObject *self, PyObject *args)
+static PyObject *adm_crawl_revisions(PyObject *self, PyObject *args, PyObject *kwargs)
{
char *path;
PyObject *reporter;
@@ -461,8 +461,9 @@
apr_pool_t *temp_pool;
AdmObject *admobj = (AdmObject *)self;
svn_wc_traversal_info_t *traversal_info;
+ char *kwnames[] = { "path", "reporter", "restore_files", "recurse", "use_commit_times", "notify_func", NULL };
- if (!PyArg_ParseTuple(args, "sO|bbbO", &path, &reporter, &restore_files, &recurse, &use_commit_times,
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO|bbbO", kwnames, &path, &reporter, &restore_files, &recurse, &use_commit_times,
¬ify_func))
return NULL;
@@ -605,7 +606,7 @@
{ "add", adm_add, METH_VARARGS, NULL },
{ "copy", adm_copy, METH_VARARGS, NULL },
{ "delete", adm_delete, METH_VARARGS, NULL },
- { "crawl_revisions", adm_crawl_revisions, METH_VARARGS, NULL },
+ { "crawl_revisions", (PyCFunction)adm_crawl_revisions, METH_VARARGS|METH_KEYWORDS, NULL },
{ "get_update_editor", adm_get_update_editor, METH_VARARGS, NULL },
{ "close", (PyCFunction)adm_close, METH_NOARGS, NULL },
{ "entry", (PyCFunction)adm_entry, METH_VARARGS, NULL },
=== modified file 'workingtree.py'
--- a/workingtree.py 2008-06-22 06:04:20 +0000
+++ b/workingtree.py 2008-06-22 08:45:53 +0000
@@ -218,7 +218,7 @@
assert isinstance(path, str)
rp = self.branch.unprefix(path)
- entry = self.base_tree.id_map[rp]
+ entry = self.basis_tree().id_map[rp]
assert entry[0] is not None
assert isinstance(entry[0], str), "fileid %r for %r is not a string" % (entry[0], path)
return entry
@@ -660,6 +660,32 @@
return []
+ def path_content_summary(self, path, _lstat=os.lstat,
+ _mapper=osutils.file_kind_from_stat_mode):
+ """See Tree.path_content_summary."""
+ abspath = self.abspath(path)
+ try:
+ stat_result = _lstat(abspath)
+ except OSError, e:
+ if getattr(e, 'errno', None) == errno.ENOENT:
+ # no file.
+ return ('missing', None, None, None)
+ # propagate other errors
+ raise
+ kind = _mapper(stat_result.st_mode)
+ if kind == 'file':
+ size = stat_result.st_size
+ # try for a stat cache lookup
+ executable = self._is_executable_from_path_and_stat(path, stat_result)
+ return (kind, size, executable, self._sha_from_stat(
+ path, stat_result))
+ elif kind == 'directory':
+ return kind, None, None, None
+ elif kind == 'symlink':
+ return ('symlink', None, None, os.readlink(abspath))
+ else:
+ return (kind, None, None, None)
+
def _reset_data(self):
pass
@@ -713,7 +739,10 @@
self.local_path = transport.local_abspath(".")
# Open related remote repository + branch
- wc = WorkingCopy(None, self.local_path)
+ try:
+ wc = WorkingCopy(None, self.local_path)
+ except SubversionException, (msg, ERR_WC_UNSUPPORTED_FORMAT):
+ raise UnsupportedFormatError(msg, kind='workingtree')
try:
self.svn_url = wc.entry(self.local_path, True).url
finally:
More information about the bazaar-commits
mailing list