[python-debian/master] deb822: Correctly handle deletion of keys that only exist in a pre-parsed dictionary
John Wright
jsw at debian.org
Wed Jan 7 23:18:32 UTC 2009
---
debian/changelog | 7 +++++++
debian_bundle/deb822.py | 7 ++++++-
tests/test_deb822.py | 8 +++++---
3 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index e235ce8..ebf3a7b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+python-debian (0.1.13) UNRELEASED; urgency=low
+
+ * deb822: Correctly handle deletion of keys that only exist in a pre-parsed
+ dictionary
+
+ -- John Wright <jsw at debian.org> Wed, 07 Jan 2009 16:11:31 -0700
+
python-debian (0.1.12) unstable; urgency=low
[ Filippo Giunchedi ]
diff --git a/debian_bundle/deb822.py b/debian_bundle/deb822.py
index a202ac1..cfd470f 100644
--- a/debian_bundle/deb822.py
+++ b/debian_bundle/deb822.py
@@ -146,8 +146,13 @@ class Deb822Dict(object, UserDict.DictMixin):
def __delitem__(self, key):
key = _strI(key)
- del self.__dict[key]
self.__keys.remove(key)
+ try:
+ del self.__dict[key]
+ except KeyError:
+ # If we got this far, the key was in self.__keys, so it must have
+ # only been in the self.__parsed dict.
+ pass
def has_key(self, key):
key = _strI(key)
diff --git a/tests/test_deb822.py b/tests/test_deb822.py
index 8280338..10e98c5 100755
--- a/tests/test_deb822.py
+++ b/tests/test_deb822.py
@@ -472,14 +472,16 @@ class TestDeb822(unittest.TestCase):
def test__delitem__(self):
parsed = deb822.Deb822(UNPARSED_PACKAGE.splitlines())
+ deriv = deb822.Deb822(_parsed=parsed)
dict_ = PARSED_PACKAGE.copy()
for key in ('Package', 'MD5sum', 'Description'):
- del parsed[key]
del dict_[key]
+ for d in (parsed, deriv):
+ del d[key]
+ d.keys() # ensure this does not raise error
+ self.assertWellParsed(d, dict_)
- parsed.keys() # ensure this does not raise error
- self.assertWellParsed(parsed, dict_)
def test_policy_compliant_whitespace(self):
string = (
--
1.5.6.5
More information about the pkg-python-debian-commits
mailing list