diff options
Diffstat (limited to 'morphlib/morphology_tests.py')
-rw-r--r-- | morphlib/morphology_tests.py | 328 |
1 files changed, 12 insertions, 316 deletions
diff --git a/morphlib/morphology_tests.py b/morphlib/morphology_tests.py index 2982bb27..243fd89f 100644 --- a/morphlib/morphology_tests.py +++ b/morphlib/morphology_tests.py @@ -30,199 +30,8 @@ class MockFile(StringIO.StringIO): class MorphologyTests(unittest.TestCase): - def assertRaisesSchemaError(self, morph_dict): - f = MockFile(json.dumps(morph_dict)) - self.assertRaises(morphlib.morphology.SchemaError, - morphlib.morphology.Morphology, f) - - def test_raises_exception_for_empty_file(self): - self.assertRaises(ValueError, - morphlib.morphology.Morphology, - MockFile()) - - def test_raises_exception_for_file_without_kind_field(self): - self.assertRaisesSchemaError({}) - - def test_raises_exception_for_chunk_with_unknown_keys_only(self): - self.assertRaisesSchemaError({ 'x': 'y' }) - - def test_raises_exception_if_name_only(self): - self.assertRaisesSchemaError({ 'name': 'hello' }) - - def test_raises_exception_if_name_is_empty(self): - self.assertRaisesSchemaError({ 'name': '', 'kind': 'chunk', - 'sources': { 'repo': 'x', 'ref': 'y' }}) - - def test_raises_exception_if_kind_only(self): - self.assertRaisesSchemaError({ 'kind': 'chunk' }) - - def test_raises_exception_for_kind_that_has_unknown_kind(self): - self.assertRaisesSchemaError({ 'name': 'hello', 'kind': 'x' }) - - def test_raises_exception_for_chunk_with_nondict_source(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': [], - }) - - def test_raises_exception_for_chunk_with_empty_source(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': {}, - }) - - def test_raises_exception_for_chunk_without_repo_in_source(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'x': 'y' - }, - }) - - def test_raises_exception_for_chunk_with_empty_repo_in_source(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': '', - 'ref': 'master' - }, - }) - - def test_raises_exception_for_chunk_without_ref_in_source(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - }, - }) - - def test_raises_exception_for_chunk_with_empty_ref_in_source(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': '' - }, - }) - - def test_raises_exception_for_chunk_with_unknown_keys_in_source(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': 'master', - 'x': 'y' - }, - }) - - def test_raises_exception_for_chunk_with_unknown_keys(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': 'master' - }, - 'x': 'y' - }) - - def test_raises_exception_for_nonlist_configure_commands(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': 'master' - }, - 'configure-commands': 0, - }) - - def test_raises_exception_for_list_of_nonstring_configure_commands(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': 'master' - }, - 'configure-commands': [0], - }) - - def test_raises_exception_for_nonlist_build_commands(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': 'master' - }, - 'build-commands': 0, - }) - - def test_raises_exception_for_list_of_nonstring_build_commands(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': 'master' - }, - 'build-commands': [0], - }) - - def test_raises_exception_for_nonlist_test_commands(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': 'master' - }, - 'test-commands': 0, - }) - - def test_raises_exception_for_list_of_nonstring_test_commands(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': 'master' - }, - 'build-commands': [0], - }) - - def test_raises_exception_for_nonlist_install_commands(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': 'master' - }, - 'install-commands': 0, - }) - - def test_raises_exception_for_list_of_nonstring_install_commands(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'chunk', - 'source': { - 'repo': 'foo', - 'ref': 'master' - }, - 'install-commands': [0], - }) - def test_accepts_valid_chunk_morphology(self): - chunk = morphlib.morphology.Morphology( + morph = morphlib.morphology.Morphology( MockFile(''' { "name": "hello", @@ -232,130 +41,13 @@ class MorphologyTests(unittest.TestCase): "test-commands": ["make check"], "install-commands": ["make install"] }''')) - self.assertEqual(chunk.kind, 'chunk') - self.assertEqual(chunk.filename, 'mockfile') - - def test_raises_exception_for_stratum_without_sources(self): - self.assertRaisesSchemaError({ 'name': 'hello', 'kind': 'stratum' }) - - def test_raises_exception_for_stratum_with_nondict_sources(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': [], - }) - - def test_raises_exception_for_stratum_with_empty_sources(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': {}, - }) - - def test_raises_exception_for_stratum_with_bad_children_in_sources(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': { - 'foo': 0, - }, - }) - - def test_raises_exception_for_stratum_without_repo_in_sources(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': { - 'foo': { - 'ref': 'master' - } - }, - }) - - def test_raises_exception_for_stratum_with_empty_repo_in_sources(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': { - 'foo': { - 'repo': '', - 'ref': 'master' - } - }, - }) - - def test_raises_exception_for_stratum_with_nonstring_repo_in_sources(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': { - 'foo': { - 'repo': 0, - 'ref': 'master' - } - }, - }) - - def test_raises_exception_for_stratum_without_ref_in_sources(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': { - 'foo': { - 'repo': 'foo', - } - }, - }) - - def test_raises_exception_for_stratum_with_empty_ref_in_sources(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': { - 'foo': { - 'repo': 'foo', - 'ref': '' - } - }, - }) - - def test_raises_exception_for_stratum_with_nonstring_ref_in_sources(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': { - 'foo': { - 'repo': 'foo', - 'ref': 0 - } - }, - }) - - def test_raises_exception_for_stratum_with_unknown_keys_in_sources(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': { - 'foo': { - 'repo': 'foo', - 'ref': 'master', - 'x': 'y' - } - }, - }) - - def test_raises_exception_for_stratum_with_unknown_keys(self): - self.assertRaisesSchemaError({ - 'name': 'hello', - 'kind': 'stratum', - 'sources': { - 'foo': { - 'repo': 'foo', - 'ref': 'master' - } - }, - 'x': 'y' - }) + self.assertEqual(morph.name, 'hello') + self.assertEqual(morph.kind, 'chunk') + self.assertEqual(morph.filename, 'mockfile') + self.assertEqual(morph.configure_commands, ['./configure']) + self.assertEqual(morph.build_commands, ['make']) + self.assertEqual(morph.test_commands, ['make check']) + self.assertEqual(morph.install_commands, ['make install']) def test_accepts_valid_stratum_morphology(self): morph = morphlib.morphology.Morphology( @@ -373,6 +65,10 @@ class MorphologyTests(unittest.TestCase): }''')) self.assertEqual(morph.kind, 'stratum') self.assertEqual(morph.filename, 'mockfile') + self.assertEqual(morph.sources, + { + 'foo': { 'repo': 'foo/', 'ref': 'ref' }, + }) def test_accepts_valid_system_morphology(self): morph = morphlib.morphology.Morphology( |