diff options
Diffstat (limited to 'morphlib/blobs_tests.py')
-rw-r--r-- | morphlib/blobs_tests.py | 203 |
1 files changed, 0 insertions, 203 deletions
diff --git a/morphlib/blobs_tests.py b/morphlib/blobs_tests.py deleted file mode 100644 index b1062459..00000000 --- a/morphlib/blobs_tests.py +++ /dev/null @@ -1,203 +0,0 @@ -# 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 - -import morphlib - - -class FakeChunkMorph(object): - @property - def kind(self): - return 'chunk' - - -class FakeStratumMorph(object): - @property - def kind(self): - return 'stratum' - - -class BlobsTests(unittest.TestCase): - - def test_create_a_chunk_blob(self): - morph = FakeChunkMorph() - chunk = morphlib.blobs.Blob.create_blob(morph) - self.assertTrue(isinstance(chunk, morphlib.blobs.Chunk)) - self.assertEqual(morph, chunk.morph) - - def test_create_a_stratum_blob(self): - morph = FakeStratumMorph() - stratum = morphlib.blobs.Blob.create_blob(morph) - self.assertTrue(isinstance(stratum, morphlib.blobs.Stratum)) - self.assertEqual(morph, stratum.morph) - - def test_create_a_system_blob(self): - class FakeSystemMorph(object): - @property - def kind(self): - return 'system' - - morph = FakeSystemMorph() - system = morphlib.blobs.Blob.create_blob(morph) - self.assertTrue(isinstance(system, morphlib.blobs.System)) - self.assertEqual(morph, system.morph) - - def test_create_an_invalid_blob(self): - class FakeInvalidMorph(object): - @property - def kind(self): - return 'invalid' - - @property - def filename(self): - return '/foo/bar/baz.morph' - - morph = FakeInvalidMorph() - self.assertRaises(TypeError, morphlib.blobs.Blob.create_blob, morph) - - def test_blob_with_parents(self): - blob1 = morphlib.blobs.Blob(FakeChunkMorph()) - blob2 = morphlib.blobs.Blob(FakeStratumMorph()) - blob3 = morphlib.blobs.Blob(FakeStratumMorph()) - - self.assertEqual(len(blob1.parents), 0) - - blob1.add_parent(blob2) - self.assertTrue(blob2 in blob1.parents) - self.assertTrue(blob3 not in blob1.parents) - self.assertEqual(len(blob1.parents), 1) - - blob1.add_parent(blob3) - self.assertTrue(blob2 in blob1.parents) - self.assertTrue(blob3 in blob1.parents) - self.assertEqual(len(blob1.parents), 2) - - blob1.remove_parent(blob2) - self.assertTrue(blob2 not in blob1.parents) - self.assertTrue(blob3 in blob1.parents) - self.assertEqual(len(blob1.parents), 1) - - blob1.remove_parent(blob3) - self.assertTrue(blob2 not in blob1.parents) - self.assertTrue(blob3 not in blob1.parents) - self.assertEqual(len(blob1.parents), 0) - - def test_blob_add_remove_dependency(self): - blob1 = morphlib.blobs.Blob(None) - blob2 = morphlib.blobs.Blob(None) - - self.assertEqual(len(blob1.dependencies), 0) - self.assertEqual(len(blob2.dependencies), 0) - - blob1.add_dependency(blob2) - - self.assertTrue(blob2 in blob1.dependencies) - self.assertTrue(blob1 in blob2.dependents) - - self.assertTrue(blob1.depends_on(blob2)) - - blob2.add_dependency(blob1) - - self.assertTrue(blob2 in blob1.dependencies) - self.assertTrue(blob1 in blob2.dependents) - self.assertTrue(blob1 in blob2.dependencies) - self.assertTrue(blob2 in blob1.dependents) - - self.assertTrue(blob1.depends_on(blob2)) - self.assertTrue(blob2.depends_on(blob1)) - - blob1.remove_dependency(blob2) - - self.assertTrue(blob2 not in blob1.dependencies) - self.assertTrue(blob1 not in blob2.dependents) - self.assertTrue(blob1 in blob2.dependencies) - self.assertTrue(blob2 in blob1.dependents) - - self.assertFalse(blob1.depends_on(blob2)) - self.assertTrue(blob2.depends_on(blob1)) - - blob2.remove_dependency(blob1) - - self.assertTrue(blob2 not in blob1.dependencies) - self.assertTrue(blob1 not in blob2.dependents) - self.assertTrue(blob1 not in blob2.dependencies) - self.assertTrue(blob2 not in blob1.dependents) - - self.assertFalse(blob1.depends_on(blob2)) - self.assertFalse(blob2.depends_on(blob1)) - - def test_hashing_and_equality_checks(self): - morph = FakeChunkMorph() - blob1 = morphlib.blobs.Blob.create_blob(morph) - blob2 = morphlib.blobs.Blob.create_blob(morph) - blob3 = morphlib.blobs.Blob.create_blob(FakeChunkMorph()) - - self.assertEqual(hash(blob1), hash(blob2)) - self.assertEqual(blob1, blob2) - - self.assertNotEqual(hash(blob1), hash(blob3)) - self.assertNotEqual(blob1, blob3) - - def test_chunks(self): - settings = { 'git-base-url': [] } - loader = morphlib.morphologyloader.MorphologyLoader(settings) - loader._get_morph_text = self.get_morph_text - - class FakeTreeish(object): - def __init__(self): - self.original_repo = 'test-repo' - faketreeish = FakeTreeish() - - faketreeish.original_repo = 'hello' - stratum_morph = loader.load(faketreeish, 'foo.morph') - stratum = morphlib.blobs.Stratum(stratum_morph) - self.assertEquals(len(stratum.chunks), 1) - self.assertTrue('foo' in stratum.chunks) - self.assertEqual(['.'], stratum.chunks['foo']) - - chunk_morph = loader.load(faketreeish, 'bar.morph') - chunk = morphlib.blobs.Chunk(chunk_morph) - self.assertEqual(len(chunk.chunks), 2) - self.assertTrue('include' in chunk.chunks) - self.assertEqual(chunk.chunks['include'], ['include/']) - self.assertTrue('src' in chunk.chunks) - self.assertEqual(chunk.chunks['src'], ['src/']) - - def get_morph_text(self, treeish, filename): - if filename == 'foo.morph': - return (''' - { - "name": "foo", - "kind": "stratum", - "sources": [ - { - "name": "bar", - "repo": "bar", - "ref": "master" - } - ] - }''') - else: - return (''' - { - "name": "bar", - "kind": "chunk", - "chunks": { - "include": [ "include/" ], - "src": [ "src/" ] - } - }''') |