]> Frank Brehm's Git Trees - pixelpark/puppet-tools.git/commitdiff
Adding test/test_27_metadata.py and fixing lib/dpx_puppettools/module_metadata.py
authorFrank Brehm <frank.brehm@pixelpark.com>
Thu, 9 Feb 2023 16:29:44 +0000 (17:29 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Thu, 9 Feb 2023 16:29:44 +0000 (17:29 +0100)
lib/dpx_puppettools/module_metadata.py
test/metadata.pp-mysql.json [new file with mode: 0644]
test/test_27_metadata.py [new file with mode: 0755]

index ba91c2609039a61a59b7d252a809bb3e28378716..3219c4112cdf7226c912e2c9e65c0ae40903e2fe 100644 (file)
@@ -28,7 +28,7 @@ from .errors import PuppetToolsError
 
 from .xlate import XLATOR
 
-__version__ = '0.6.1'
+__version__ = '0.6.2'
 
 LOG = logging.getLogger(__name__)
 
@@ -85,7 +85,7 @@ class ModuleDependency(FbGenericBaseObject):
     # -------------------------------------------------------------------------
     def as_dict(self, short=True):
 
-        ret = super(ModuleDependency, self).as_dict(self, short=short)
+        ret = super(ModuleDependency, self).as_dict(short=short)
 
         ret['name'] = self.name
         ret['requirement'] = self.requirement
@@ -150,9 +150,9 @@ class ModuleOsSupport(FbGenericBaseObject):
         return out
 
     # -------------------------------------------------------------------------
-    def as_dict(self):
+    def as_dict(self, short=True):
 
-        ret = super(ModuleDependency, self).as_dict(self, short=short)
+        ret = super(ModuleOsSupport, self).as_dict(short=short)
 
         ret['name'] = self.name
         ret['releases'] = copy.copy(self.releases)
@@ -255,9 +255,12 @@ class ModuleMetadata(FbBaseObject):
     def author(self):
         """The author of the module."""
         if not self._author:
-            match = self.re_author_from_name.match(self.name)
-            if match:
-                return match.group(1)
+            if self.name:
+                match = self.re_author_from_name.match(self.name)
+                if match:
+                    return match.group(1)
+            else:
+                return None
         return self._author
 
     @author.setter
@@ -379,7 +382,7 @@ class ModuleMetadata(FbBaseObject):
             msg = _("Metadata file {!r} is not a regular file.").format(str(file_path))
             raise MetadataFileError(msg)
 
-        if not os.access(str(file_path), os.R_OK)):
+        if not os.access(str(file_path), os.R_OK):
             msg = _("Metadata file {!r} is readable.").format(str(file_path))
             raise MetadataFileError(msg)
 
diff --git a/test/metadata.pp-mysql.json b/test/metadata.pp-mysql.json
new file mode 100644 (file)
index 0000000..4b07329
--- /dev/null
@@ -0,0 +1,74 @@
+{
+  "name": "pixelpark-pp_mysql",
+  "version": "0.10.4",
+  "author": "Frank Brehm <frank.brehm@pixelpark.com>",
+  "summary": "This is a wrapper module around puppetlabs-mysql and fraenki-galera with standardized default values fitting the Digitas Pixelpark environment.",
+  "license": "LGPL-3.0-or-later",
+  "source": "https://git.pixelpark.com/puppet/pp-mysql.git",
+  "issues_url": "https://jira.powerofone.de/jira/projects/PPPUPPET",
+  "dependencies": [
+    {
+      "name": "fraenki-galera",
+      "version_requirement": ">=2.2.0  <4.0.0"
+    },
+    {
+      "name": "ipcrm-echo",
+      "version_requirement": ">=0.1.7  <2.0.0"
+    },
+    {
+      "name": "pcfens-filebeat",
+      "version_requirement": ">=4.10.0  <6.0.0"
+    },
+    {
+      "name": "puppet-cron",
+      "version_requirement": ">=2.0.0  <4.0.0"
+    },
+    {
+      "name": "puppet-logrotate",
+      "version_requirement": ">=5.0.0  <7.0.0"
+    },
+    {
+      "name": "puppetlabs-mysql",
+      "version_requirement": ">=11.0.0  <13.0.0"
+    },
+    {
+      "name": "puppetlabs-stdlib",
+      "version_requirement": ">=7.0.0 <9.0.0"
+    },
+    {
+      "name": "puppetlabs-yumrepo_core",
+      "version_requirement": ">=1.0.7 <3.0.0"
+    }
+  ],
+  "operatingsystem_support": [
+    {
+      "operatingsystem": "CentOS",
+      "operatingsystemrelease": [
+        "7",
+        "8"
+      ]
+    },
+    {
+      "operatingsystem": "OracleLinux",
+      "operatingsystemrelease": [
+        "7"
+      ]
+    },
+    {
+      "operatingsystem": "SLES",
+      "operatingsystemrelease": [
+        "12",
+        "15"
+      ]
+    }
+  ],
+  "requirements": [
+    {
+      "name": "puppet",
+      "version_requirement": ">= 4.10.0 < 7.0.0"
+    }
+  ],
+  "pdk-version": "2.5.0",
+  "template-url": "pdk-default#2.5.0",
+  "template-ref": "tags/2.5.0-0-g369d483"
+}
diff --git a/test/test_27_metadata.py b/test/test_27_metadata.py
new file mode 100755 (executable)
index 0000000..fd9057b
--- /dev/null
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+'''
+@author: Frank Brehm
+@contact: frank@brehm-online.com
+@copyright: © 2023 Frank Brehm, Digitas Pixelpark GmbH Berlin
+@license: GNU AGPL3
+@summary: test script (and module) for unit tests on module dpx_puppettools.module_metadata
+'''
+
+import os
+import sys
+import logging
+
+from pathlib import Path
+
+try:
+    import unittest2 as unittest
+except ImportError:
+    import unittest
+
+libdir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'lib'))
+sys.path.insert(0, libdir)
+
+from general import DpxPuppetToolsTestcase, get_arg_verbose, init_root_logger
+
+LOG = logging.getLogger('test_metadata')
+
+# =============================================================================
+class TestMetadata(DpxPuppetToolsTestcase):
+
+    # -------------------------------------------------------------------------
+    def setUp(self):
+        self.test_dir = Path(__file__).parent.resolve()
+        self.base_dir = self.test_dir.parent
+        self.test_cfg_dir = self.test_dir / 'test-config'
+        self.test_metadata = self.test_dir / 'metadata.pp-mysql.json'
+        self._appname = 'test_metadata'
+
+    # -------------------------------------------------------------------------
+    def test_import(self):
+
+        LOG.info("Testing import of dpx_puppettools.module_metadata ...")
+        import dpx_puppettools.module_metadata
+        ver = dpx_puppettools.module_metadata.__version__
+        LOG.debug(
+            "Version of dpx_puppettools.module_metadata: " + ver)
+
+    # -------------------------------------------------------------------------
+    def test_init(self):
+
+        LOG.info("Testing init of a ModuleMetadata object ...")
+        from dpx_puppettools.module_metadata import ModuleMetadata
+        from dpx_puppettools import pp
+
+        metadata = ModuleMetadata(
+            appname=self.appname, verbose=self.verbose)
+
+        LOG.debug("ModuleMetadata %%r: {!r}".format(metadata))
+        if self.verbose > 2:
+            LOG.debug("ModuleMetadata %%s:\n{}".format(pp(metadata.as_dict())))
+
+    # -------------------------------------------------------------------------
+    def test_read(self):
+
+        LOG.info("Test reading of a ModuleMetadata file ...")
+
+        from dpx_puppettools.module_metadata import ModuleMetadata
+        from dpx_puppettools import pp
+
+        metadata = ModuleMetadata.from_file(
+            self.test_metadata, appname=self.appname, verbose=self.verbose)
+
+        LOG.debug("ModuleMetadata %%r: {!r}".format(metadata))
+        if self.verbose > 2:
+            LOG.debug("ModuleMetadata %%s:\n{}".format(pp(metadata.as_dict())))
+
+
+# =============================================================================
+if __name__ == '__main__':
+
+    verbose = get_arg_verbose()
+    if verbose is None:
+        verbose = 0
+    init_root_logger(verbose)
+
+    LOG.info("Starting tests ...")
+
+    suite = unittest.TestSuite()
+
+    suite.addTest(TestMetadata('test_import', verbose))
+    suite.addTest(TestMetadata('test_init', verbose))
+    suite.addTest(TestMetadata('test_read', verbose))
+
+    runner = unittest.TextTestRunner(verbosity=verbose)
+
+    result = runner.run(suite)
+
+# =============================================================================
+
+# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4