[MERGE] The eol functionality now raises an error on an unknown eol setting (fixes bug 358199)
Brian de Alwis
bsd at cs.ubc.ca
Fri Apr 17 23:51:46 BST 2009
On 17-Apr-2009, at 3:04 PM, Jelmer Vernooij wrote:
> Please add imports on top of the file (per HACKING).
I've moved the imports, though I didn't see anything in HACKING.
> Any reason for not using _eol_filter_stack_map[key] here, and catching
> and handling any KeyErrors?
I was just following the original code. I suppose it allows the
possibility of a content-filter being None.
I also fixed up a comment and tweaked the code to use "values" rather
than "settings" to match the eol docs.
Brian.
--
"Amusement to an observing mind is study." - Benjamin Disraeli
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: brian.de.alwis at usask.ca-20090417224924-g7a8nhwqvyqidet1
# target_branch: file:///scratch/dev/bzr.dev/
# testament_sha1: e6b65efecc9cddc6a6ffeace220a9de2a36ecf30
# timestamp: 2009-04-17 16:49:39 -0600
# source_branch: bzr+ssh://bazaar.launchpad.net/%7Ebzr/bzr/trunk/
# base_revision_id: pqm at pqm.ubuntu.com-20090417153307-fmbzf4klhhqbawrh
#
# Begin patch
=== modified file 'bzrlib/filters/eol.py'
--- bzrlib/filters/eol.py 2009-04-09 01:08:14 +0000
+++ bzrlib/filters/eol.py 2009-04-17 22:49:24 +0000
@@ -22,6 +22,7 @@
import re, sys
+from bzrlib.errors import BzrError
# Real Linux/Unix/OSX newline - \n without \r before it
_LINUX_NL_RE = re.compile(r'(?<!\r)\n')
@@ -66,5 +67,8 @@
[ContentFilter(_to_crlf_converter, _to_crlf_converter)],
}
def eol_lookup(key):
- return _eol_filter_stack_map.get(key)
+ filter = _eol_filter_stack_map.get(key)
+ if filter is None:
+ raise BzrError("Unknown eol value '%s'" % key)
+ return filter
register_filter_stack_map('eol', eol_lookup)
=== modified file 'bzrlib/tests/test_eol_filters.py'
--- bzrlib/tests/test_eol_filters.py 2009-04-02 04:12:11 +0000
+++ bzrlib/tests/test_eol_filters.py 2009-04-17 22:49:24 +0000
@@ -22,6 +22,11 @@
_to_lf_converter,
)
from bzrlib.tests import TestCase
+from bzrlib import (
+ errors,
+ rules,
+ )
+from bzrlib.filters import _get_filter_stack_for
# Sample files
@@ -37,3 +42,27 @@
def test_to_crlf(self):
result = _to_crlf_converter([_sample_file1])
self.assertEqual(["hello\r\nworld\r\n"], result)
+
+class TestEolRulesSpecifications(TestCase):
+
+ def test_exact_value(self):
+ """'eol = exact' should have no content filters"""
+ prefs = (('eol','exact'),)
+ self.assertEqual([], _get_filter_stack_for(prefs))
+
+ def test_other_known_values(self):
+ """These known eol values have corresponding filters."""
+ known_values = ('lf', 'crlf', 'native',
+ 'native-with-crlf-in-repo', 'lf-with-crlf-in-repo',
+ 'crlf-with-crlf-in-repo')
+ for value in known_values:
+ prefs = (('eol',value),)
+ self.assertNotEqual([], _get_filter_stack_for(prefs))
+
+ def test_unknown_value(self):
+ """
+ Unknown eol values should raise an error.
+ """
+ prefs = (('eol','unknown-value'),)
+ self.assertRaises(errors.BzrError, _get_filter_stack_for,
prefs)
+
# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWeJufb4AAvBfgERQU
+f//3sB
Hoq////wYAb/d0sdDUgWu3OgA0eh1wkoqfoU/QKeo0eoxlPUAeJGRkaNGgBoJQk0aj00BU/
EajU8
nqg0HlPUBoBpoMgyI0nqRim00QDygAADRoMnqAA01NU9Q9RoADQAAAAAAAHMAmAmRgBGJiYTCYIa
YmmAkiCAEGmgmjIxDUNCYagHqRgRQKvaxto2Zdp7DM/
7azY08aVi9uTGiu8dMpER5XHAUAnRFjtR
zMCbR8XO9olUyBJpZ/
HWJBAmIBqNvdVclflCM6dhYKKKHb9k8ywfQLnue4MC982D9TlabEBb7ZbK
kVgmONhr9RKYaEXXvMni29kVhojCDIDRALhd8WGF+z
+440SsvgIRpZ0XmSqZMAkIq80Rkrk34rAV
31nGUyQnDCUnE9Udb1GjOEdM9nPdw31jUel7inrbhIPf0xdQXeBOfCcZe5xLljqfjQ/
dDB27Xbap
fC21cWiRg+
+KcLKBnskWETqX7StbfhMkUGCgQR7FY5WmpIMWTsDvRpA0deziu5QAwXZ3S8F5A0jH
PFsPNuEjYUESsQPMZ
+JqC4+7YHsGFKzN5Ft4ZjFTn0CbduqBdmTvlIiyA2wdxN3OkSCUJFNIMS3w
96ojJ4k3QDKJMk3x
+RgfW9FzJyAUMWXtbshRcx33X06Tv9ZGnkoHdXKlNVbbA3ukP8efIuT3LAyp
NprtG1skD5YRixqzgY6UWASwCsCNGRaFBgSvC44RQxOpq9RbFMxgyTd1VRuaKOOkKTxGSLRQtypB
QNDXONBMhbRgnIsGMSY4ESkrVZWMOVpRtoaeGQ6nEwtUdCRChJjOqs2GSUF2JMW/
4IxV6sgtgyXE
0SozwMS6QMWXkiAssX1SVGuCW0vJ1JF8TAzmOcOgFJYc85fbY2QZlSsCooNO3biU4sZrVXSNrA12
4ycGpEFX9aALRjQ5QSwwvVcsxUaj6dQ8trca86o0OMtIOq1aiXA+y2ZnS+7LuFhexQXm
+HUrHizg
zZcl1xhJ4NQ0IkTxUUFpdNmZhm/SiJ43zZXqI50q+cdFR9oRP5HpApD4hAM5hJ2cVsoRt
+GiITQ0
mZUrmgmLmeZ2G04Af7Qb7EeCWuVLCtA7uJAt9vNENyA4KdH4JgrIhHUcJuS2AS3e
+6gqoT1LJQQK
dZllhWGoqgLSukrHd+xVjXHXzDr+/rGBT1M2ib9qKkAIHIUsPY3SgVmR2i
+QuE4YU3SSEoIRROTS
TnylGLudxIKqvZmuFYcBgMimS+Jp0GfUpnQgWpr+0NaL+CO1ZOyC/hImQu/
ooT1okym9SCklPzH8
yHxaBxPeZzOdA/
M7PQxa8iiFlYczA2ai6Wj8PLGcVeOLJLNuw1tJmHTC6REy6dW8AelCao7HYKhJ
8U007JwHpiJvZcFZehdBqaq9xr7xhO3dvmA4WFALPr1Uo9Su/
m3YGZC6HI3K6RwORyJnauo1iMv2
OpqX5tqRDvh4NFN6KmEKHThQswsfSNHFlUBklbWF85t/MOzWy6/
NuAoXLwcmffNCOdUFPNcvpmAp
MkmtLBhFakboPpS+4FBm2+IYc60kTJi3LojC2VTE+vCcOWSCZn3w
+UxkHBHogugGcyrNH9VkemOk
NRJAyMcNiPFYEGWyMMOojSDL32B7QRavlrOgzAx6buqYHcOCgrSV/
nSAbJJH1ZBcqWR4LzZYxXap
hm5WF2RvtKOamsgg5F8e8HV0nGUHSJAODVhkR1E0SVHueAvcA5dKM/
9GK6htqCm4BkyoYU04cMeH
M+aucLKkL2YIrglWIo/
z6RrJOpoLGGGYZmsQ4QgqVkNJPqoykcgjB481eCJhZZYEC2SipXS5b2Kf
UtEZcfu5kGXZsyYt2fkHQWK/
8BIWgO87QLDIYbF0uxoL9+X1CHNMKSNWKz7rGs45hVSA8ly3Vz2/
aBuZQxCv2wQU3XeKNK0hoI7/JUUpaEFG24YZDsMwzJkyYIJAk81SfAcjLaw1jKoIeZw/
YWhyFoaU
BZHMIFyAz1laCKjm5LdvbpR0qVRpILUnIILIFiC0IOwyZBBDRmh2zmabDrm2wnYyD5hp61EirWw4
UBUP9gathUQeKpWDIWvTxbSBHQDq
+8ZhylXXKHf4Bei9UM7FLBWZjTBOVkiTFC9cTqvXOkNEfcQP
3jSt/
w6NSXmdhHkgQ46Axs1nerhRakxMtiZBsAthNshG6xSQYG4DjarFafR0baFloIjAc4eN9AH1
BGnp96av8XckU4UJDibn2+A=
More information about the bazaar
mailing list