From f7fcbbcc014686ac597b783a8dcb38b43024b9d6 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Fri, 4 Aug 2023 09:28:29 +0300 Subject: Initialise the repository. --- setup_commands/__init__.py | 3 +++ setup_commands/run_tests.py | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 setup_commands/__init__.py create mode 100644 setup_commands/run_tests.py (limited to 'setup_commands') diff --git a/setup_commands/__init__.py b/setup_commands/__init__.py new file mode 100644 index 0000000..967bb11 --- /dev/null +++ b/setup_commands/__init__.py @@ -0,0 +1,3 @@ +"""Module for custom setup commands.""" + +from .run_tests import RunTests diff --git a/setup_commands/run_tests.py b/setup_commands/run_tests.py new file mode 100644 index 0000000..1bb5dab --- /dev/null +++ b/setup_commands/run_tests.py @@ -0,0 +1,40 @@ +import os +import sys +from distutils.core import Command + +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) -- cgit v1.2.3