Rev 2884: test and fix for commit with bad non-ascii messages (bialix, r=mbp) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Thu Oct 4 07:38:21 BST 2007
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 2884
revision-id: pqm at pqm.ubuntu.com-20071004063818-ymke1egbfap2m31x
parent: pqm at pqm.ubuntu.com-20071004060117-by9mnl9eubiyz572
parent: bialix at ukr.net-20071004055044-pb88kgkfayawro8n
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2007-10-04 07:38:18 +0100
message:
test and fix for commit with bad non-ascii messages (bialix,r=mbp)
modified:
bzrlib/msgeditor.py msgeditor.py-20050901111708-ef6d8de98f5d8f2f
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
bzrlib/tests/blackbox/test_remove.py test_remove.py-20060530011439-fika5rm84lon0goe-1
bzrlib/tests/test_info.py test_info.py-20070320150933-m0xxm1g7xi9v6noe-1
bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
------------------------------------------------------------
revno: 2839.6.3
merged: bialix at ukr.net-20071004055044-pb88kgkfayawro8n
parent: bialix at ukr.net-20071004053510-1zdsm5ywq7pq41et
parent: pqm at pqm.ubuntu.com-20071003232450-c831pepea3skddct
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: 3
timestamp: Thu 2007-10-04 08:50:44 +0300
message:
merge bzr.dev
------------------------------------------------------------
revno: 2839.6.2
merged: bialix at ukr.net-20071004053510-1zdsm5ywq7pq41et
parent: bialix at ukr.net-20070921111545-f2791vn4uk7chglw
parent: bialix at ukr.net-20070920204924-lzis6yy2a0cmrlsj
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: 3
timestamp: Thu 2007-10-04 08:35:10 +0300
message:
changes after Martin's review
------------------------------------------------------------
revno: 2804.4.6
merged: bialix at ukr.net-20070920204924-lzis6yy2a0cmrlsj
parent: bialix at ukr.net-20070907102447-eefqp9m87w738smx
parent: pqm at pqm.ubuntu.com-20070920125023-upjqmzln7mjtvj1h
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: selftest.win32
timestamp: Thu 2007-09-20 23:49:24 +0300
message:
merge bzr.dev
------------------------------------------------------------
revno: 2804.4.5
merged: bialix at ukr.net-20070907102447-eefqp9m87w738smx
parent: bialix at ukr.net-20070907094546-jxr38xe0t5hwbemy
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: selftest.win32
timestamp: Fri 2007-09-07 13:24:47 +0300
message:
multiparent.py: workaround for windows bug: .tell() for files opened in 'ab' mode before any write returns 0
------------------------------------------------------------
revno: 2804.4.4
merged: bialix at ukr.net-20070907094546-jxr38xe0t5hwbemy
parent: bialix at ukr.net-20070907084620-7t25v0anhxompa0m
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: selftest.win32
timestamp: Fri 2007-09-07 12:45:46 +0300
message:
provide non-empty locations.conf for test_branch.TestBranchFormat5.test_set_push_location
------------------------------------------------------------
revno: 2804.4.3
merged: bialix at ukr.net-20070907084620-7t25v0anhxompa0m
parent: bialix at ukr.net-20070906133055-zlir290vgaxv9h4m
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: selftest.win32
timestamp: Fri 2007-09-07 11:46:20 +0300
message:
fix for test_info-tests: using osutils.getcwd instead of os.getcwd (sigh)
------------------------------------------------------------
revno: 2804.4.2
merged: bialix at ukr.net-20070906133055-zlir290vgaxv9h4m
parent: bialix at ukr.net-20070906115959-512lrh7jb9rll98d
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: selftest.win32
timestamp: Thu 2007-09-06 16:30:55 +0300
message:
win32-specific fix for removing file/link/dir
------------------------------------------------------------
revno: 2804.4.1
merged: bialix at ukr.net-20070906115959-512lrh7jb9rll98d
parent: pqm at pqm.ubuntu.com-20070906063814-iiwx3hccoukt499k
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: selftest.win32
timestamp: Thu 2007-09-06 14:59:59 +0300
message:
some win32-specific fixes for selftest
------------------------------------------------------------
revno: 2839.6.1
merged: bialix at ukr.net-20070921111545-f2791vn4uk7chglw
parent: pqm at pqm.ubuntu.com-20070920125023-upjqmzln7mjtvj1h
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: 3
timestamp: Fri 2007-09-21 14:15:45 +0300
message:
test and fix for commit with bad non-ascii messages (non-ascii chars that cannot be decoded with current user encoding)
=== modified file 'bzrlib/msgeditor.py'
--- a/bzrlib/msgeditor.py 2007-08-31 05:32:00 +0000
+++ b/bzrlib/msgeditor.py 2007-10-04 05:35:10 +0000
@@ -102,8 +102,8 @@
if not start_message is None:
start_message = start_message.encode(bzrlib.user_encoding)
- return edit_commit_message_encoded(infotext.encode(bzrlib.user_encoding),
- ignoreline, start_message)
+ infotext = infotext.encode(bzrlib.user_encoding, 'replace')
+ return edit_commit_message_encoded(infotext, ignoreline, start_message)
def edit_commit_message_encoded(infotext, ignoreline=DEFAULT_IGNORE_LINE,
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py 2007-10-02 06:13:56 +0000
+++ b/bzrlib/tests/__init__.py 2007-10-04 05:50:44 +0000
@@ -1153,6 +1153,7 @@
'BZR_HOME': None, # Don't inherit BZR_HOME to all the tests.
'HOME': os.getcwd(),
'APPDATA': None, # bzr now use Win32 API and don't rely on APPDATA
+ 'BZR_EDITOR': None, # test_msgeditor manipulates this variable
'BZR_EMAIL': None,
'BZREMAIL': None, # may still be present in the environment
'EMAIL': None,
@@ -1301,7 +1302,9 @@
working_dir):
"""Run bazaar command line, splitting up a string command line."""
if isinstance(args, basestring):
- args = list(shlex.split(args))
+ # shlex don't understand unicode strings,
+ # so args should be plain string (bialix 20070906)
+ args = list(shlex.split(str(args)))
return self._run_bzr_core(args, retcode=retcode,
encoding=encoding, stdin=stdin, working_dir=working_dir,
)
@@ -2628,3 +2631,18 @@
else:
return uni_val, str_val
return None, None
+
+
+def probe_bad_non_ascii(encoding):
+ """Try to find [bad] character with code [128..255]
+ that cannot be decoded to unicode in some encoding.
+ Return None if all non-ascii characters is valid
+ for given encoding.
+ """
+ for i in xrange(128, 256):
+ char = chr(i)
+ try:
+ char.decode(encoding)
+ except UnicodeDecodeError:
+ return char
+ return None
=== modified file 'bzrlib/tests/blackbox/test_commit.py'
--- a/bzrlib/tests/blackbox/test_commit.py 2007-10-03 05:25:50 +0000
+++ b/bzrlib/tests/blackbox/test_commit.py 2007-10-04 05:50:44 +0000
@@ -18,12 +18,19 @@
"""Tests for the commit CLI of bzr."""
import os
+import sys
+import bzrlib
from bzrlib import (
osutils,
ignores,
+ osutils,
)
from bzrlib.bzrdir import BzrDir
+from bzrlib.tests import (
+ probe_bad_non_ascii,
+ TestSkipped,
+ )
from bzrlib.tests.blackbox import ExternalBase
@@ -238,8 +245,16 @@
tree = self.make_branch_and_tree('.')
self.build_tree_contents([('foo.c', 'int main() {}')])
tree.add('foo.c')
- out,err = self.run_bzr_subprocess('commit -m "\xff"', retcode=1,
- env_changes={'LANG': 'C'})
+ # LANG env variable has no effect on Windows
+ # but some characters anyway cannot be represented
+ # in default user encoding
+ char = probe_bad_non_ascii(bzrlib.user_encoding)
+ if char is None:
+ raise TestSkipped('Cannot find suitable non-ascii character'
+ 'for user_encoding (%s)' % bzrlib.user_encoding)
+ out,err = self.run_bzr_subprocess('commit -m "%s"' % char,
+ retcode=1,
+ env_changes={'LANG': 'C'})
self.assertContainsRe(err, r'bzrlib.errors.BzrError: Parameter.*is '
'unsupported by the current encoding.')
=== modified file 'bzrlib/tests/blackbox/test_info.py'
--- a/bzrlib/tests/blackbox/test_info.py 2007-09-21 12:30:48 +0000
+++ b/bzrlib/tests/blackbox/test_info.py 2007-10-04 05:50:44 +0000
@@ -23,6 +23,7 @@
import bzrlib
from bzrlib import (
bzrdir,
+ errors,
osutils,
repository,
urlutils,
@@ -1139,8 +1140,7 @@
# We expect this to fail because of locking errors. (A write-locked
# file cannot be read-locked in the same process).
# This should be removed when the locking errors are fixed.
- args = command_string.split(' ')
- self.run_bzr_error([], 'info', *args)
+ self.run_bzr_error([], 'info ' + command_string)
return
out, err = self.run_bzr('info %s' % command_string)
description = {
=== modified file 'bzrlib/tests/blackbox/test_remove.py'
--- a/bzrlib/tests/blackbox/test_remove.py 2007-08-04 20:36:29 +0000
+++ b/bzrlib/tests/blackbox/test_remove.py 2007-09-06 11:59:59 +0000
@@ -16,7 +16,9 @@
import os
+import sys
+from bzrlib.tests import TestSkipped
from bzrlib.tests.blackbox import ExternalBase
from bzrlib.workingtree import WorkingTree
from bzrlib import osutils
@@ -122,6 +124,8 @@
self.run_bzr_remove_changed_files(['modified:[.\s]*a[.\s]*b/c'], files)
def test_remove_changed_files_from_child_dir(self):
+ if sys.platform == 'win32':
+ raise TestSkipped("Windows unable to remove '.' directory")
tree = self._make_add_and_assert_tree(files)
self.run_bzr("commit -m 'added files'")
self.changeFile(a)
=== modified file 'bzrlib/tests/test_info.py'
--- a/bzrlib/tests/test_info.py 2007-09-14 02:19:41 +0000
+++ b/bzrlib/tests/test_info.py 2007-10-04 05:50:44 +0000
@@ -14,6 +14,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+import sys
from urllib import quote
from bzrlib import (
@@ -248,6 +249,8 @@
)
def test_location_list(self):
+ if sys.platform == 'win32':
+ raise tests.TestSkipped('Windows-unfriendly test')
locs = info.LocationList('/home/foo')
locs.add_url('a', 'file:///home/foo/')
locs.add_url('b', 'file:///home/foo/bar/')
=== modified file 'bzrlib/tests/test_msgeditor.py'
--- a/bzrlib/tests/test_msgeditor.py 2007-08-31 05:32:00 +0000
+++ b/bzrlib/tests/test_msgeditor.py 2007-10-04 05:35:10 +0000
@@ -20,6 +20,7 @@
import os
import sys
+import bzrlib
from bzrlib import (
errors,
msgeditor,
@@ -31,9 +32,14 @@
make_commit_message_template_encoded,
edit_commit_message_encoded
)
-from bzrlib.tests import TestCaseWithTransport, TestSkipped
+from bzrlib.tests import (
+ probe_bad_non_ascii,
+ TestCaseWithTransport,
+ TestSkipped,
+ )
from bzrlib.trace import mutter
+
class MsgEditorTest(TestCaseWithTransport):
def make_uncommitted_tree(self):
@@ -90,18 +96,6 @@
hell\u00d8
""".encode('utf8') in template)
- def setUp(self):
- super(MsgEditorTest, self).setUp()
- self._bzr_editor = os.environ.get('BZR_EDITOR', None)
-
- def tearDown(self):
- if self._bzr_editor is not None:
- os.environ['BZR_EDITOR'] = self._bzr_editor
- else:
- if os.environ.get('BZR_EDITOR', None) is not None:
- del os.environ['BZR_EDITOR']
- super(MsgEditorTest, self).tearDown()
-
def test_run_editor(self):
if sys.platform == "win32":
f = file('fed.bat', 'w')
@@ -162,6 +156,10 @@
self.assertEqual('test message from fed\n',
msgeditor.edit_commit_message(''))
+ mutter('edit_commit_message with ascii string infotext')
+ self.assertEqual('test message from fed\n',
+ msgeditor.edit_commit_message('spam'))
+
mutter('edit_commit_message with unicode infotext')
self.assertEqual('test message from fed\n',
msgeditor.edit_commit_message(u'\u1234'))
@@ -256,7 +254,15 @@
def test_unsupported_encoding_commit_message(self):
old_env = osutils.set_or_unset_env('LANG', 'C')
try:
- self.make_fake_editor(message='\xff')
+ # LANG env variable has no effect on Windows
+ # but some characters anyway cannot be represented
+ # in default user encoding
+ char = probe_bad_non_ascii(bzrlib.user_encoding)
+ if char is None:
+ raise TestSkipped('Cannot find suitable non-ascii character '
+ 'for user_encoding (%s)' % bzrlib.user_encoding)
+
+ self.make_fake_editor(message=char)
working_tree = self.make_uncommitted_tree()
self.assertRaises(errors.BadCommitMessageEncoding,
More information about the bazaar-commits
mailing list