41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
from logging import getLogger
|
|
from logging import Logger
|
|
|
|
from ..models import Project
|
|
from ..models import Result
|
|
from .._config import Config
|
|
from ._commands import Command
|
|
from ._commands import ExecuteTest
|
|
from ._except import NoTestsFoundError
|
|
from ._execute import execute
|
|
from ._prepare import prepare
|
|
from ._prepare import prepare_dependencies
|
|
|
|
_logger = getLogger("chinook")
|
|
|
|
|
|
def test(
|
|
appcfg: Config,
|
|
project: Project,
|
|
logger: Logger = _logger
|
|
) -> list[Result]:
|
|
if len(project.tests) == 0:
|
|
raise NoTestsFoundError(project)
|
|
|
|
commands: list[Command] = []
|
|
for target in project.tests:
|
|
commands.extend(prepare_dependencies(appcfg, project, target, logger))
|
|
commands.extend(prepare(appcfg, project, target, logger))
|
|
results = execute(commands, "Building")
|
|
|
|
for result in results:
|
|
if not result.success:
|
|
return results
|
|
|
|
commands.clear()
|
|
for target in project.tests:
|
|
testfile = project.destination.bin(target.name)
|
|
commands.append(ExecuteTest(None, None, logger, testfile))
|
|
results.extend(execute(commands, "Testing"))
|
|
return results
|