From dc3b21cc1a029966064353484a06564943e1dacd Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Fri, 8 Jan 2016 12:08:28 +0000 Subject: [PATCH] debian.py: Implement stable order of fields in debian/tests/control Move the field ordering control from the Package class to a new superclass of Package and TestsControl. --- debian/changelog | 6 ++ debian/lib/python/debian_linux/debian.py | 85 +++++++++++------------- 2 files changed, 45 insertions(+), 46 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0142459ff..1ec6c9f3a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +linux (4.3.3-6) UNRELEASED; urgency=medium + + * debian.py: Implement stable order of fields in debian/tests/control + + -- Ben Hutchings Fri, 08 Jan 2016 12:08:13 +0000 + linux (4.3.3-5) unstable; urgency=medium * [armhf] udeb: Fix duplication and circular dependency between core-modules diff --git a/debian/lib/python/debian_linux/debian.py b/debian/lib/python/debian_linux/debian.py index b9164630c..a9bc1d87a 100644 --- a/debian/lib/python/debian_linux/debian.py +++ b/debian/lib/python/debian_linux/debian.py @@ -396,7 +396,35 @@ class PackageRelationEntry(object): self.restrictions = [] -class Package(dict): +class _ControlFileDict(dict): + def __setitem__(self, key, value): + try: + cls = self._fields[key] + if not isinstance(value, cls): + value = cls(value) + except KeyError: + pass + super(_ControlFileDict, self).__setitem__(key, value) + + def keys(self): + keys = set(super(_ControlFileDict, self).keys()) + for i in self._fields.keys(): + if i in self: + keys.remove(i) + yield i + for i in keys: + yield i + + def items(self): + for i in self.keys(): + yield (i, self[i]) + + def values(self): + for i in self.keys(): + yield self[i] + + +class Package(_ControlFileDict): _fields = collections.OrderedDict(( ('Package', str), ('Source', str), @@ -419,49 +447,14 @@ class Package(dict): ('Description', PackageDescription), )) - def __setitem__(self, key, value): - try: - cls = self._fields[key] - if not isinstance(value, cls): - value = cls(value) - except KeyError: - pass - super(Package, self).__setitem__(key, value) - def keys(self): - keys = set(super(Package, self).keys()) - for i in self._fields.keys(): - if i in self: - keys.remove(i) - yield i - for i in keys: - yield i - - def items(self): - for i in self.keys(): - yield (i, self[i]) - - def values(self): - for i in self.keys(): - yield self[i] - - -class TestsControl(dict): - _fields = { - 'Tests': str, - 'Test-Command': str, - 'Restrictions': str, - 'Features': str, - 'Depends': PackageRelation, - 'Tests-Directory': str, - 'Classes': str, - } - - def __setitem__(self, key, value): - try: - cls = self._fields[key] - if not isinstance(value, cls): - value = cls(value) - except KeyError: - pass - super(TestsControl, self).__setitem__(key, value) +class TestsControl(_ControlFileDict): + _fields = collections.OrderedDict(( + ('Tests', str), + ('Test-Command', str), + ('Restrictions', str), + ('Features', str), + ('Depends', PackageRelation), + ('Tests-Directory', str), + ('Classes', str), + ))