[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