forked from CEN38/plugin_gn_tools
88 lines
2.8 KiB
Python
Executable File
88 lines
2.8 KiB
Python
Executable File
#! python3 # noqa E265
|
|
|
|
"""
|
|
Usage from the repo root folder:
|
|
|
|
.. code-block:: bash
|
|
# for whole tests
|
|
python -m unittest tests.unit.test_plg_metadata
|
|
# for specific test
|
|
python -m unittest tests.unit.test_plg_metadata.TestPluginMetadata.test_version_semver
|
|
"""
|
|
|
|
# standard library
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
# 3rd party
|
|
from packaging.version import parse
|
|
|
|
# project
|
|
from gn_tools import __about__
|
|
|
|
# ############################################################################
|
|
# ########## Classes #############
|
|
# ################################
|
|
|
|
|
|
class TestPluginMetadata(unittest.TestCase):
|
|
|
|
"""Test about module"""
|
|
|
|
def test_metadata_types(self):
|
|
"""Test types."""
|
|
# plugin metadata.txt file
|
|
self.assertIsInstance(__about__.PLG_METADATA_FILE, Path)
|
|
self.assertTrue(__about__.PLG_METADATA_FILE.is_file())
|
|
|
|
# plugin dir
|
|
self.assertIsInstance(__about__.DIR_PLUGIN_ROOT, Path)
|
|
self.assertTrue(__about__.DIR_PLUGIN_ROOT.is_dir())
|
|
|
|
# metadata as dict
|
|
self.assertIsInstance(__about__.__plugin_md__, dict)
|
|
|
|
# general
|
|
self.assertIsInstance(__about__.__author__, str)
|
|
self.assertIsInstance(__about__.__copyright__, str)
|
|
self.assertIsInstance(__about__.__email__, str)
|
|
self.assertIsInstance(__about__.__keywords__, list)
|
|
self.assertIsInstance(__about__.__license__, str)
|
|
self.assertIsInstance(__about__.__plugin_dependencies__, list)
|
|
self.assertIsInstance(__about__.__summary__, str)
|
|
self.assertIsInstance(__about__.__title__, str)
|
|
self.assertIsInstance(__about__.__title_clean__, str)
|
|
self.assertIsInstance(__about__.__version__, str)
|
|
self.assertIsInstance(__about__.__version_info__, tuple)
|
|
|
|
# misc
|
|
self.assertLessEqual(len(__about__.__title_clean__), len(__about__.__title__))
|
|
|
|
# QGIS versions
|
|
self.assertIsInstance(
|
|
__about__.__plugin_md__.get("general").get("qgisminimumversion"), str
|
|
)
|
|
|
|
self.assertIsInstance(
|
|
__about__.__plugin_md__.get("general").get("qgismaximumversion"), str
|
|
)
|
|
|
|
min_version_parsed = parse(
|
|
__about__.__plugin_md__.get("general").get("qgisminimumversion")
|
|
)
|
|
max_version_parsed = parse(
|
|
__about__.__plugin_md__.get("general").get("qgismaximumversion")
|
|
)
|
|
self.assertLessEqual(min_version_parsed, max_version_parsed)
|
|
|
|
def test_version_semver(self):
|
|
"""Test if version comply with semantic versioning."""
|
|
self.assertTrue(parse(__about__.__version__))
|
|
|
|
|
|
# ############################################################################
|
|
# ####### Stand-alone run ########
|
|
# ################################
|
|
if __name__ == "__main__":
|
|
unittest.main()
|