summaryrefslogtreecommitdiff
path: root/tests/test_manifest.py
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2017-10-22 19:23:09 +0200
committerMichał Górny <mgorny@gentoo.org>2017-10-22 19:23:09 +0200
commit40be55d5109474920c230834618d1b20631f9dc3 (patch)
treec3b65c2299d971890935c13bed777f0d7a2d51dd /tests/test_manifest.py
parent938a4a191da51f394907fccfd8a439ec5d61a9e2 (diff)
downloadgemato-40be55d5109474920c230834618d1b20631f9dc3.tar.gz
Initial code for Manifest parsing
Diffstat (limited to 'tests/test_manifest.py')
-rw-r--r--tests/test_manifest.py222
1 files changed, 222 insertions, 0 deletions
diff --git a/tests/test_manifest.py b/tests/test_manifest.py
new file mode 100644
index 0000000..ef95e22
--- /dev/null
+++ b/tests/test_manifest.py
@@ -0,0 +1,222 @@
+# gemato: Manifest file support tests
+# vim:fileencoding=utf-8
+# (c) 2017 Michał Górny
+# Licensed under the terms of 2-clause BSD license
+
+import datetime
+import io
+import unittest
+
+import gemato.manifest
+
+
+TEST_MANIFEST = '''
+TIMESTAMP 2017-10-22T18:06:41Z
+MANIFEST eclass/Manifest 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
+IGNORE local
+DATA myebuild-0.ebuild 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
+MISC metadata.xml 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
+OPTIONAL ChangeLog
+DIST mydistfile.tar.gz 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
+'''
+
+TEST_DEPRECATED_MANIFEST = '''
+EBUILD myebuild-0.ebuild 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
+MISC metadata.xml 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
+AUX test.patch 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
+DIST mydistfile.tar.gz 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
+'''
+
+
+class ManifestTest(unittest.TestCase):
+ """
+ Basic tests for Manifest processing.
+ """
+
+ def test_load(self):
+ m = gemato.manifest.ManifestFile()
+ m.load(io.StringIO(TEST_MANIFEST))
+
+ def test_load_deprecated(self):
+ m = gemato.manifest.ManifestFile()
+ m.load(io.StringIO(TEST_DEPRECATED_MANIFEST))
+
+
+class ManifestEntryTest(unittest.TestCase):
+ """
+ Basic tests for Manifest entries.
+ """
+
+ file_vals = ('test', '0', 'MD5', 'd41d8cd98f00b204e9800998ecf8427e',
+ 'SHA1', 'da39a3ee5e6b4b0d3255bfef95601890afd80709')
+ exp_cksums = {
+ 'MD5': 'd41d8cd98f00b204e9800998ecf8427e',
+ 'SHA1': 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
+ }
+
+ def test_TIMESTAMP(self):
+ self.assertEqual(gemato.manifest.ManifestEntryTIMESTAMP.from_list(('2010-01-01T11:12:13Z',)).ts,
+ datetime.datetime(2010, 1, 1, 11, 12, 13))
+
+ def test_MANIFEST(self):
+ m = gemato.manifest.ManifestEntryMANIFEST.from_list(self.file_vals)
+ self.assertEqual(m.path, 'test')
+ self.assertEqual(m.size, 0)
+ self.assertDictEqual(m.checksums, self.exp_cksums)
+
+ def test_IGNORE(self):
+ self.assertEqual(gemato.manifest.ManifestEntryIGNORE.from_list(('test',)).path,
+ 'test')
+
+ def test_DATA(self):
+ m = gemato.manifest.ManifestEntryDATA.from_list(self.file_vals)
+ self.assertEqual(m.path, 'test')
+ self.assertEqual(m.size, 0)
+ self.assertDictEqual(m.checksums, self.exp_cksums)
+
+ def test_MISC(self):
+ m = gemato.manifest.ManifestEntryMISC.from_list(self.file_vals)
+ self.assertEqual(m.path, 'test')
+ self.assertEqual(m.size, 0)
+ self.assertDictEqual(m.checksums, self.exp_cksums)
+
+ def test_OPTIONAL(self):
+ self.assertEqual(gemato.manifest.ManifestEntryOPTIONAL.from_list(('test',)).path,
+ 'test')
+
+ def test_DIST(self):
+ m = gemato.manifest.ManifestEntryDIST.from_list(self.file_vals)
+ self.assertEqual(m.path, 'test')
+ self.assertEqual(m.size, 0)
+ self.assertDictEqual(m.checksums, self.exp_cksums)
+
+ def test_EBUILD(self):
+ m = gemato.manifest.ManifestEntryEBUILD.from_list(self.file_vals)
+ self.assertEqual(m.path, 'test')
+ self.assertEqual(m.size, 0)
+ self.assertDictEqual(m.checksums, self.exp_cksums)
+
+ def test_AUX(self):
+ m = gemato.manifest.ManifestEntryAUX.from_list(self.file_vals)
+ self.assertEqual(m.aux_path, 'test')
+ self.assertEqual(m.path, 'files/test')
+ self.assertEqual(m.size, 0)
+ self.assertDictEqual(m.checksums, self.exp_cksums)
+
+ def test_timestamp_invalid(self):
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryTIMESTAMP.from_list, ('',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryTIMESTAMP.from_list, ('2017-10-22T18:06:41+02:00',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryTIMESTAMP.from_list, ('2017-10-22T18:06:41',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryTIMESTAMP.from_list, ('2017-10-22 18:06:41Z',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryTIMESTAMP.from_list, ('20171022T180641Z',))
+
+ def test_path_invalid(self):
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMANIFEST.from_list, ('', '0'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMANIFEST.from_list, ('/foo', '0'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryIGNORE.from_list, ('',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryIGNORE.from_list, ('/foo',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryOPTIONAL.from_list, ('',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryOPTIONAL.from_list, ('/foo',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDATA.from_list, ('',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDATA.from_list, ('/foo',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMISC.from_list, ('',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMISC.from_list, ('/foo',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDIST.from_list, ('',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDIST.from_list, ('/foo',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDIST.from_list, ('foo/bar.gz',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryEBUILD.from_list, ('',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryEBUILD.from_list, ('/foo',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryAUX.from_list, ('',))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryAUX.from_list, ('/foo',))
+
+ def test_size_invalid(self):
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMANIFEST.from_list, ('foo', 'asdf'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMANIFEST.from_list, ('foo', '5ds'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMANIFEST.from_list, ('foo', '-5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDATA.from_list, ('foo', 'asdf'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDATA.from_list, ('foo', '5ds'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDATA.from_list, ('foo', '-5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMISC.from_list, ('foo', 'asdf'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMISC.from_list, ('foo', '5ds'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMISC.from_list, ('foo', '-5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDIST.from_list, ('foo', 'asdf'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDIST.from_list, ('foo', '5ds'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDIST.from_list, ('foo', '-5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryEBUILD.from_list, ('foo', 'asdf'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryEBUILD.from_list, ('foo', '5ds'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryEBUILD.from_list, ('foo', '-5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryAUX.from_list, ('foo', 'asdf'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryAUX.from_list, ('foo', '5ds'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryAUX.from_list, ('foo', '-5'))
+
+ def test_checksum_short(self):
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMANIFEST.from_list, ('foo', '0', 'md5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMANIFEST.from_list,
+ ('foo', '0', 'md5', 'd41d8cd98f00b204e9800998ecf8427e', 'sha1'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDATA.from_list, ('foo', '0', 'md5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDATA.from_list,
+ ('foo', '0', 'md5', 'd41d8cd98f00b204e9800998ecf8427e', 'sha1'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMISC.from_list, ('foo', '0', 'md5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryMISC.from_list,
+ ('foo', '0', 'md5', 'd41d8cd98f00b204e9800998ecf8427e', 'sha1'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDIST.from_list, ('foo', '0', 'md5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryDIST.from_list,
+ ('foo', '0', 'md5', 'd41d8cd98f00b204e9800998ecf8427e', 'sha1'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryEBUILD.from_list, ('foo', '0', 'md5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryEBUILD.from_list,
+ ('foo', '0', 'md5', 'd41d8cd98f00b204e9800998ecf8427e', 'sha1'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryAUX.from_list, ('foo', '0', 'md5'))
+ self.assertRaises(gemato.manifest.ManifestSyntaxError,
+ gemato.manifest.ManifestEntryAUX.from_list,
+ ('foo', '0', 'md5', 'd41d8cd98f00b204e9800998ecf8427e', 'sha1'))