From 63074d67d3338ecddded1a5915f5b501a58b56a9 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Mon, 9 Apr 2012 19:30:19 +0100 Subject: Add a new morphology parser class The old morphlib.morphology.Morphlogy class is entangled by having treeish and requires reading from an open file. This is a bad design for the class: the treeish is unnecessary coupling, and the open file makes is harder than necessary to parse a morphology which we don't have as a file on disk. The new class gets the text of the morphology and does not care about treeishes at all. It also acts more like a dictionary, giving more uniform access to the various items, while reducing the amount of code we have in the class. The old class will remain until all uses of it have been eradicated. --- morphlib/morph2_tests.py | 80 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 morphlib/morph2_tests.py (limited to 'morphlib/morph2_tests.py') diff --git a/morphlib/morph2_tests.py b/morphlib/morph2_tests.py new file mode 100644 index 00000000..65ab89cf --- /dev/null +++ b/morphlib/morph2_tests.py @@ -0,0 +1,80 @@ +# Copyright (C) 2012 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +import unittest + +from morphlib.morph2 import Morphology + + +class MorphologyTests(unittest.TestCase): + + def test_parses_simple_chunk(self): + m = Morphology(''' + { + "name": "foo", + "kind": "chunk", + "build-system": "manual" + } + ''') + + self.assertEqual(m['name'], 'foo') + self.assertEqual(m['kind'], 'chunk') + self.assertEqual(m['build-system'], 'manual') + self.assertEqual(m['configure-commands'], []) + self.assertEqual(m['build-commands'], []) + self.assertEqual(m['test-commands'], []) + self.assertEqual(m['install-commands'], []) + self.assertEqual(m['max-jobs'], None) + + def test_makes_max_jobs_be_an_integer(self): + m = Morphology(''' + { + "name": "foo", + "kind": "chunk", + "max-jobs": "42" + } + ''') + + self.assertEqual(m['max-jobs'], 42) + + def test_sets_stratum_sources_repo_and_morph_from_name(self): + m = Morphology(''' + { + "name": "foo", + "kind": "stratum", + "sources": [ + { + "name": "le-chunk" + } + ] + } + ''') + + self.assertEqual(m['sources'][0]['repo'], 'le-chunk') + self.assertEqual(m['sources'][0]['morph'], 'le-chunk') + self.assertEqual(m['sources'][0]['build-depends'], None) + + def test_parses_system_disk_size(self): + m = Morphology(''' + { + "name": "foo", + "kind": "system", + "disk-size": "1g" + } + ''') + + self.assertEqual(m['disk-size'], 1024**3) + -- cgit v1.2.1