diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-09-13 15:39:07 +0100 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-09-13 15:39:07 +0100 |
commit | 2b82040f847a5595dccb80f8ed537e7d6c5a1e6e (patch) | |
tree | 4945051fca5c55c6e8672ad61f0c499916960121 /morphlib | |
parent | 90821e1e58317ae105bd2ecf43f46f441e292fcd (diff) | |
download | morph-2b82040f847a5595dccb80f8ed537e7d6c5a1e6e.tar.gz |
Fix things so test suite works on Debian squeeze
This requires disabling the feature that retains the original order of
fields in a morphlogy when it gets overwritten. The implementation relies
on features that are not available in Python 2.6. We need to support
Morph on Debian squeeze, for bootstrapping purposes, and therefore need
to have it work with Python 2.6. However, the morphology rewriting is
only relevant for system branching and merging, and that isn't needed
for bootstrapping, so we disable the affected tests on Python 2.6.
Diffstat (limited to 'morphlib')
-rw-r--r-- | morphlib/morph2.py | 27 | ||||
-rw-r--r-- | morphlib/morph2_tests.py | 60 |
2 files changed, 51 insertions, 36 deletions
diff --git a/morphlib/morph2.py b/morphlib/morph2.py index 0eca6fed..45d33d8a 100644 --- a/morphlib/morph2.py +++ b/morphlib/morph2.py @@ -14,7 +14,12 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +import sys +have_python27 = sys.version_info >= (2,7) + import collections +if not hasattr(collections, 'OrderedDict'): # pragma: no cover + collections.OrderedDict = dict import copy import json import re @@ -53,15 +58,19 @@ class Morphology(object): ] } - @staticmethod - def _order_keys(pairs): - result = collections.OrderedDict() - for k,v in pairs: - result[k] = v - return result + if have_python27: # pragma: no cover + @staticmethod + def _order_keys(pairs): + result = collections.OrderedDict() + for k,v in pairs: + result[k] = v + return result def __init__(self, text): - self._dict = json.loads(text, object_pairs_hook=self._order_keys) + if have_python27: # pragma: no cover + self._dict = json.loads(text, object_pairs_hook=self._order_keys) + else: # pragma: no cover + self._dict = json.loads(text) self._set_defaults() self._validate_children() @@ -143,9 +152,9 @@ class Morphology(object): return int(size[:-1]) * 1024 ** 2 elif size.endswith('k'): # pragma: no cover return int(size[:-1]) * 1024 - return int(size) + return int(size) # pragma: no cover - def write_to_file(self, f): + def write_to_file(self, f): # pragma: no cover # Recreate dict without the empty default values, with a few kind # specific hacks to try and edit standard morphologies as # non-destructively as possible diff --git a/morphlib/morph2_tests.py b/morphlib/morph2_tests.py index 142b5949..baa6f724 100644 --- a/morphlib/morph2_tests.py +++ b/morphlib/morph2_tests.py @@ -14,6 +14,9 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +import sys +have_python27 = sys.version_info >= (2,7) + import StringIO import unittest @@ -199,8 +202,9 @@ class MorphologyTests(unittest.TestCase): Morphology, text) - def test_writing_preserves_field_order(self): - text = '''{ + if have_python27: + def test_writing_preserves_field_order(self): + text = '''{ "kind": "system", "disk-size": 1073741824, "description": "Some text", @@ -219,18 +223,19 @@ class MorphologyTests(unittest.TestCase): } ] }''' - morphology = Morphology(text) - output = StringIO.StringIO() - morphology.write_to_file(output) + morphology = Morphology(text) + output = StringIO.StringIO() + morphology.write_to_file(output) - text_lines = text.splitlines() - output_lines = output.getvalue().splitlines() + text_lines = text.splitlines() + output_lines = output.getvalue().splitlines() - # Verify that input and output are equal. - self.assertEqual(text_lines, output_lines) + # Verify that input and output are equal. + self.assertEqual(text_lines, output_lines) - def test_writing_stratum_morphology_preserves_chunk_order(self): - text = '''{ + if have_python27: + def test_writing_stratum_morphology_preserves_chunk_order(self): + text = '''{ "kind": "stratum", "chunks": [ { @@ -247,29 +252,30 @@ class MorphologyTests(unittest.TestCase): } ] }''' - morphology = Morphology(text) - output = StringIO.StringIO() - morphology.write_to_file(output) + morphology = Morphology(text) + output = StringIO.StringIO() + morphology.write_to_file(output) - text_lines = text.splitlines() - output_lines = output.getvalue().splitlines() + text_lines = text.splitlines() + output_lines = output.getvalue().splitlines() - # Verify that input and output are equal. - self.assertEqual(text_lines, output_lines) + # Verify that input and output are equal. + self.assertEqual(text_lines, output_lines) - def test_writing_preserves_disk_size(self): - text = '''{ + if have_python27: + def test_writing_preserves_disk_size(self): + text = '''{ "kind": "system", "disk-size": "1g", "arch": "x86_64", "system-kind": "syslinux-disk" }''' - morphology = Morphology(text) - output = StringIO.StringIO() - morphology.write_to_file(output) + morphology = Morphology(text) + output = StringIO.StringIO() + morphology.write_to_file(output) - text_lines = text.splitlines() - output_lines = output.getvalue().splitlines() + text_lines = text.splitlines() + output_lines = output.getvalue().splitlines() - # Verify that in- and output are the same. - self.assertEqual(text_lines, output_lines) + # Verify that in- and output are the same. + self.assertEqual(text_lines, output_lines) |