diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-04-09 19:30:19 +0100 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-04-09 19:30:19 +0100 |
commit | 63074d67d3338ecddded1a5915f5b501a58b56a9 (patch) | |
tree | 21cb1eaaee0da00946ece8703e95ac7b2593f13b /morphlib/morph2_tests.py | |
parent | a53bf56bd034b082c816ba58977a2daa0d70c144 (diff) | |
download | morph-63074d67d3338ecddded1a5915f5b501a58b56a9.tar.gz |
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.
Diffstat (limited to 'morphlib/morph2_tests.py')
-rw-r--r-- | morphlib/morph2_tests.py | 80 |
1 files changed, 80 insertions, 0 deletions
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) + |