aboutsummaryrefslogtreecommitdiff
"""Run tests"""
import os
from distutils.core import Command  # pylint: disable=W0402

class RunTests(Command):
    """
    A custom command to run tests.
    """
    description = "Run the tests"
    test_types = (
        "all", "unit", "integration", "performance")
    user_options = [
        ("type=", None,
         f"""Specify the type of tests to run.
         Valid types are {tuple(test_types)}.
         Default is `all`.""")]

    def __init__(self, dist):
        """Initialise the command."""
        super().__init__(dist)
        self.command = "pytest"

    def initialize_options(self):
        """Initialise the default values of all the options."""
        self.type = "all"

    def finalize_options(self):
        """Set final value of all the options once they are processed."""
        if self.type not in RunTests.test_types:
            raise Exception(f"""
            Invalid test type (self.type) requested!
            Valid types are
            {tuple(RunTests.test_types)}""")

        if self.type != "all":
            self.command = f"pytest -m {self.type}_test"
    def run(self):
        """Run the chosen tests"""
        print(f"Running {self.type} tests")
        os.system(self.command)