summaryrefslogtreecommitdiff
path: root/morphlib/artifact_tests.py
diff options
context:
space:
mode:
authorJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-04-11 16:58:28 +0100
committerJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-04-11 17:06:48 +0100
commitd7a7fc31242ba4ff88252bb0d6eca62ca327f8f0 (patch)
tree46268a3041dc2af15b9e53a5be9cd3105472686f /morphlib/artifact_tests.py
parentffc01a3572a8f74d2d6664e6e4d4d9c514a14b97 (diff)
downloadmorph-d7a7fc31242ba4ff88252bb0d6eca62ca327f8f0.tar.gz
Add Artifact and LocalArtifactCache classes.
An Artifact represents a thing that morph has built. An example would be eglibc-runtime which morph may have built from the eglibc chunk morphology. Another example would be a ready-to-use system image. The LocalArtifactCache allows to store build artifacts in a local directory. Users of this class can ask it whether it has a certain artifact. They can also optain an I/O handle to read the artifact data from. In addition to just abstracting the way artifacts are stored, LocalArtifactCache also allows to store and retrieve metadata for (a) artifacts and (b) sources (the latter requires a cache key to be provided to the LocalArtifactCache).
Diffstat (limited to 'morphlib/artifact_tests.py')
-rw-r--r--morphlib/artifact_tests.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/morphlib/artifact_tests.py b/morphlib/artifact_tests.py
new file mode 100644
index 00000000..49f8e17f
--- /dev/null
+++ b/morphlib/artifact_tests.py
@@ -0,0 +1,57 @@
+# 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 ArtifactTests(unittest.TestCase):
+
+ def setUp(self):
+ morph = morphlib.morph2.Morphology(
+ '''
+ {
+ "chunk": "chunk",
+ "kind": "chunk",
+ "artifacts": {
+ "chunk-runtime": [
+ "usr/bin",
+ "usr/sbin",
+ "usr/lib",
+ "usr/libexec"
+ ],
+ "chunk-devel": [
+ "usr/include"
+ ]
+ }
+ }
+ ''')
+ self.source = morphlib.source.Source(
+ 'repo', 'ref', 'sha1', morph, 'chunk.morph')
+ self.cache_key = 'cachekey'
+ self.artifact_name = 'chunk-runtime'
+ self.artifact = morphlib.artifact.Artifact(
+ self.source, self.artifact_name, self.cache_key)
+
+ def test_constructor_sets_source(self):
+ self.assertEqual(self.artifact.source, self.source)
+
+ def test_constructor_sets_name(self):
+ self.assertEqual(self.artifact.name, self.artifact_name)
+
+ def test_constructor_sets_cache_key(self):
+ self.assertEqual(self.artifact.cache_key, self.cache_key)