Rename unit testing module to "test"

This commit is contained in:
Ivan Kravets
2022-04-26 15:09:51 +03:00
parent 5895fb9faf
commit 4151f53e14
25 changed files with 78 additions and 80 deletions

2
docs

Submodule docs updated: 4bc27be71c...10fd0d1edb

View File

@ -16,8 +16,8 @@ from __future__ import absolute_import
import os
from platformio.unittest.result import TestSuite
from platformio.unittest.runners.factory import TestRunnerFactory
from platformio.test.result import TestSuite
from platformio.test.runners.factory import TestRunnerFactory
def ConfigureTestTarget(env):

View File

@ -29,7 +29,7 @@ from platformio.commands.device.command import device_monitor as cmd_device_moni
from platformio.commands.run.command import cli as cmd_run
from platformio.package.manager.core import inject_contrib_pysite
from platformio.project.exception import NotPlatformIOProjectError
from platformio.unittest.command import unittest_cmd
from platformio.test.command import test_cmd
@click.group("remote", short_help="Remote Development")
@ -217,7 +217,7 @@ def remote_test(
click.secho("Building project locally", bold=True)
ctx.invoke(
unittest_cmd,
test_cmd,
environment=environment,
ignore=ignore,
project_dir=project_dir,

View File

@ -27,7 +27,7 @@ from platformio.commands.run.helpers import clean_build_dir, handle_legacy_libde
from platformio.commands.run.processor import EnvironmentProcessor
from platformio.project.config import ProjectConfig
from platformio.project.helpers import find_project_dir_above, load_project_ide_data
from platformio.unittest.runners.base import CTX_META_TEST_IS_RUNNING
from platformio.test.runners.base import CTX_META_TEST_IS_RUNNING
# pylint: disable=too-many-arguments,too-many-locals,too-many-branches

View File

@ -15,7 +15,7 @@
from platformio.package.commands.install import install_project_env_dependencies
from platformio.platform.factory import PlatformFactory
from platformio.project.exception import UndefinedEnvPlatformError
from platformio.unittest.runners.base import CTX_META_TEST_RUNNING_NAME
from platformio.test.runners.base import CTX_META_TEST_RUNNING_NAME
# pylint: disable=too-many-instance-attributes

View File

@ -14,4 +14,4 @@
# pylint: disable=unused-import
from platformio.unittest.command import unittest_cmd as cli
from platformio.test.command import test_cmd as cli

View File

@ -26,10 +26,10 @@ from platformio.commands.run.command import cli as cmd_run
from platformio.commands.run.command import print_processing_header
from platformio.compat import IS_WINDOWS, is_bytes
from platformio.debug.exception import DebugInvalidOptionsError
from platformio.unittest.command import get_test_names
from platformio.unittest.result import TestSuite
from platformio.unittest.runners.base import TestRunnerOptions
from platformio.unittest.runners.factory import TestRunnerFactory
from platformio.test.command import get_test_names
from platformio.test.result import TestSuite
from platformio.test.runners.base import TestRunnerOptions
from platformio.test.runners.factory import TestRunnerFactory
class GDBMIConsoleStream(BytesIO): # pylint: disable=too-few-public-methods

View File

@ -26,8 +26,8 @@ from platformio.package.manager.tool import ToolPackageManager
from platformio.package.meta import PackageSpec
from platformio.project.config import ProjectConfig
from platformio.project.savedeps import pkg_to_save_spec, save_project_dependencies
from platformio.unittest.result import TestSuite
from platformio.unittest.runners.factory import TestRunnerFactory
from platformio.test.result import TestSuite
from platformio.test.runners.factory import TestRunnerFactory
@click.command(

View File

@ -20,11 +20,11 @@ import click
from platformio import app, exception, fs, util
from platformio.project.config import ProjectConfig
from platformio.unittest.exception import TestDirNotExistsError
from platformio.unittest.reports.base import TestReportFactory
from platformio.unittest.result import TestStatus, TestSuite, TestSummary
from platformio.unittest.runners.base import TestRunnerOptions
from platformio.unittest.runners.factory import TestRunnerFactory
from platformio.test.exception import TestDirNotExistsError
from platformio.test.reports.base import TestReportFactory
from platformio.test.result import TestResult, TestStatus, TestSuite
from platformio.test.runners.base import TestRunnerOptions
from platformio.test.runners.factory import TestRunnerFactory
@click.command("test", short_help="Unit Testing")
@ -84,7 +84,7 @@ from platformio.unittest.runners.factory import TestRunnerFactory
)
@click.option("--verbose", "-v", is_flag=True)
@click.pass_context
def unittest_cmd( # pylint: disable=too-many-arguments,too-many-locals,redefined-builtin
def test_cmd( # pylint: disable=too-many-arguments,too-many-locals,redefined-builtin
ctx,
environment,
ignore,
@ -116,12 +116,12 @@ def unittest_cmd( # pylint: disable=too-many-arguments,too-many-locals,redefine
if verbose:
click.echo(" (%s)" % ", ".join(test_names))
test_summary = TestSummary(os.path.basename(project_dir))
test_result = TestResult(os.path.basename(project_dir))
default_envs = config.default_envs()
for env_name in config.envs():
for test_name in test_names:
test_suite = TestSuite(env_name, test_name)
test_summary.add_suite(test_suite)
test_result.add_suite(test_suite)
# filter and ignore patterns
patterns = dict(filter=list(filter), ignore=list(ignore))
@ -167,7 +167,7 @@ def unittest_cmd( # pylint: disable=too-many-arguments,too-many-locals,redefine
print_suite_footer(test_suite)
# automatically generate JSON report for PIO IDE
TestReportFactory.new("json", test_summary).generate(
TestReportFactory.new("json", test_result).generate(
os.path.join(
config.get("platformio", "build_dir"), "pio-test-report-latest.json"
)
@ -176,14 +176,14 @@ def unittest_cmd( # pylint: disable=too-many-arguments,too-many-locals,redefine
# Reset custom project config
app.set_session_var("custom_project_conf", None)
stdout_report = TestReportFactory.new("stdout", test_summary)
stdout_report = TestReportFactory.new("stdout", test_result)
stdout_report.generate(verbose=verbose)
if output_format:
custom_report = TestReportFactory.new(output_format, test_summary)
custom_report = TestReportFactory.new(output_format, test_result)
custom_report.generate(output_path=output_path, verbose=True)
if test_summary.is_errored or test_summary.get_status_nums(TestStatus.FAILED):
if test_result.is_errored or test_result.get_status_nums(TestStatus.FAILED):
raise exception.ReturnErrorCode(1)

View File

@ -14,12 +14,12 @@
import importlib
from platformio.unittest.result import TestSummary
from platformio.test.result import TestResult
class TestReportBase:
def __init__(self, test_summary):
self.test_summary = test_summary
def __init__(self, test_result):
self.test_result = test_result
def generate(self, output_path, verbose):
raise NotImplementedError()
@ -27,10 +27,8 @@ class TestReportBase:
class TestReportFactory:
@staticmethod
def new( # pylint: disable=redefined-builtin
format, test_summary
) -> TestReportBase:
assert isinstance(test_summary, TestSummary)
mod = importlib.import_module(f"platformio.unittest.reports.{format}")
def new(format, test_result) -> TestReportBase: # pylint: disable=redefined-builtin
assert isinstance(test_result, TestResult)
mod = importlib.import_module(f"platformio.test.reports.{format}")
report_cls = getattr(mod, "%sTestReport" % format.lower().capitalize())
return report_cls(test_summary)
return report_cls(test_result)

View File

@ -18,8 +18,8 @@ import os
import click
from platformio.unittest.reports.base import TestReportBase
from platformio.unittest.result import TestStatus
from platformio.test.reports.base import TestReportBase
from platformio.test.result import TestStatus
class JsonTestReport(TestReportBase):
@ -29,7 +29,7 @@ class JsonTestReport(TestReportBase):
output_path,
"pio-test-report-%s-%s.json"
% (
self.test_summary.name,
self.test_result.name,
datetime.datetime.now().strftime("%Y%m%d%H%M%S"),
),
)
@ -43,15 +43,15 @@ class JsonTestReport(TestReportBase):
def to_json(self):
result = dict(
version="1.0",
name=self.test_summary.name,
duration=self.test_summary.duration,
testcase_nums=self.test_summary.case_nums,
error_nums=self.test_summary.get_status_nums(TestStatus.ERRORED),
failure_nums=self.test_summary.get_status_nums(TestStatus.FAILED),
skipped_nums=self.test_summary.get_status_nums(TestStatus.SKIPPED),
name=self.test_result.name,
duration=self.test_result.duration,
testcase_nums=self.test_result.case_nums,
error_nums=self.test_result.get_status_nums(TestStatus.ERRORED),
failure_nums=self.test_result.get_status_nums(TestStatus.FAILED),
skipped_nums=self.test_result.get_status_nums(TestStatus.SKIPPED),
test_suites=[],
)
for test_suite in self.test_summary.suites:
for test_suite in self.test_result.suites:
result["test_suites"].append(self.test_suite_to_json(test_suite))
return result

View File

@ -18,8 +18,8 @@ import xml.etree.ElementTree as ET
import click
from platformio.unittest.reports.base import TestReportBase
from platformio.unittest.result import TestStatus
from platformio.test.reports.base import TestReportBase
from platformio.test.result import TestStatus
class JunitTestReport(TestReportBase):
@ -29,7 +29,7 @@ class JunitTestReport(TestReportBase):
output_path,
"pio-test-report-%s-%s-junit.xml"
% (
self.test_summary.name,
self.test_result.name,
datetime.datetime.now().strftime("%Y%m%d%H%M%S"),
),
)
@ -42,12 +42,12 @@ class JunitTestReport(TestReportBase):
def build_xml_tree(self):
root = ET.Element("testsuites")
root.set("name", self.test_summary.name)
root.set("tests", str(self.test_summary.case_nums))
root.set("errors", str(self.test_summary.get_status_nums(TestStatus.ERRORED)))
root.set("failures", str(self.test_summary.get_status_nums(TestStatus.FAILED)))
root.set("time", str(self.test_summary.duration))
for suite in self.test_summary.suites:
root.set("name", self.test_result.name)
root.set("tests", str(self.test_result.case_nums))
root.set("errors", str(self.test_result.get_status_nums(TestStatus.ERRORED)))
root.set("failures", str(self.test_result.get_status_nums(TestStatus.FAILED)))
root.set("time", str(self.test_result.duration))
for suite in self.test_result.suites:
root.append(self.build_testsuite_node(suite))
return ET.ElementTree(root)

View File

@ -16,8 +16,8 @@ import click
from tabulate import tabulate
from platformio import util
from platformio.unittest.reports.base import TestReportBase
from platformio.unittest.result import TestStatus
from platformio.test.reports.base import TestReportBase
from platformio.test.result import TestStatus
class StdoutTestReport(TestReportBase):
@ -25,11 +25,11 @@ class StdoutTestReport(TestReportBase):
click.echo()
tabular_data = []
failed_nums = self.test_summary.get_status_nums(TestStatus.FAILED)
skipped_nums = self.test_summary.get_status_nums(TestStatus.SKIPPED)
is_error = failed_nums > 0 or self.test_summary.is_errored
failed_nums = self.test_result.get_status_nums(TestStatus.FAILED)
skipped_nums = self.test_result.get_status_nums(TestStatus.SKIPPED)
is_error = failed_nums > 0 or self.test_result.is_errored
for test_suite in self.test_summary.suites:
for test_suite in self.test_result.suites:
if not verbose and test_suite.status == TestStatus.SKIPPED:
continue
status_str = test_suite.status.name
@ -62,11 +62,11 @@ class StdoutTestReport(TestReportBase):
util.print_labeled_bar(
"%d test cases: %s%s%d succeeded in %s"
% (
self.test_summary.case_nums,
self.test_result.case_nums,
("%d failed, " % failed_nums) if failed_nums else "",
("%d skipped, " % skipped_nums) if skipped_nums else "",
self.test_summary.get_status_nums(TestStatus.PASSED),
util.humanize_duration_time(self.test_summary.duration),
self.test_result.get_status_nums(TestStatus.PASSED),
util.humanize_duration_time(self.test_result.duration),
),
is_error=is_error,
fg="red" if is_error else "green",

View File

@ -107,7 +107,7 @@ class TestSuite:
self.duration = time.time() - self.timestamp
class TestSummary:
class TestResult:
def __init__(self, name):
self.name = name
self._suites = []

View File

@ -16,10 +16,10 @@ import click
from platformio.exception import ReturnErrorCode
from platformio.platform.factory import PlatformFactory
from platformio.unittest.exception import UnitTestSuiteError
from platformio.unittest.result import TestCase, TestCaseSource, TestStatus
from platformio.unittest.runners.mixins.embedded import TestRunnerEmbeddedMixin
from platformio.unittest.runners.mixins.native import TestRunnerNativeMixin
from platformio.test.exception import UnitTestSuiteError
from platformio.test.result import TestCase, TestCaseSource, TestStatus
from platformio.test.runners.mixins.embedded import TestRunnerEmbeddedMixin
from platformio.test.runners.mixins.native import TestRunnerNativeMixin
CTX_META_TEST_IS_RUNNING = __name__ + ".test_running"
CTX_META_TEST_RUNNING_NAME = __name__ + ".test_running_name"

View File

@ -19,8 +19,8 @@ import re
from platformio.compat import load_python_module
from platformio.exception import UserSideException
from platformio.project.config import ProjectConfig
from platformio.unittest.result import TestSuite
from platformio.unittest.runners.base import TestRunnerBase, TestRunnerOptions
from platformio.test.result import TestSuite
from platformio.test.runners.base import TestRunnerBase, TestRunnerOptions
class TestRunnerFactory(object):
@ -38,7 +38,7 @@ class TestRunnerFactory(object):
test_framework = project_config.get(
f"env:{test_suite.env_name}", "test_framework"
)
module_name = f"platformio.unittest.runners.{test_framework}"
module_name = f"platformio.test.runners.{test_framework}"
runner_cls = None
if test_framework == "custom":
custom_runner_path = os.path.join(

View File

@ -16,7 +16,7 @@ import os
import signal
from platformio import proc
from platformio.unittest.exception import UnitTestError
from platformio.test.exception import UnitTestError
class TestRunnerNativeMixin:

View File

@ -19,8 +19,8 @@ from pathlib import Path
import click
from platformio.unittest.exception import UnitTestSuiteError
from platformio.unittest.runners.base import TestRunnerBase
from platformio.test.exception import UnitTestSuiteError
from platformio.test.runners.base import TestRunnerBase
class UnityTestRunner(TestRunnerBase):

View File

@ -17,7 +17,7 @@ import xml.etree.ElementTree as ET
from pathlib import Path
from platformio import proc
from platformio.unittest.command import unittest_cmd
from platformio.test.command import test_cmd as pio_test_cmd
def test_calculator_example(tmp_path: Path):
@ -143,7 +143,7 @@ int main() {
"""
)
result = clirunner.invoke(
unittest_cmd,
pio_test_cmd,
["-d", str(project_dir), "-e", "native"],
)
validate_cliresult(result)
@ -186,7 +186,7 @@ int main(int argc, char *argv[]) {
"""
)
result = clirunner.invoke(
unittest_cmd,
pio_test_cmd,
["-d", str(project_dir), "-e", "native"],
)
assert result.exit_code != 0
@ -228,7 +228,7 @@ int main() {
"""
)
result = clirunner.invoke(
unittest_cmd,
pio_test_cmd,
["-d", str(project_dir), "-e", "native"],
)
validate_cliresult(result)
@ -279,7 +279,7 @@ int main() {
"""
)
result = clirunner.invoke(
unittest_cmd,
pio_test_cmd,
["-d", str(project_dir), "-e", "native"],
)
validate_cliresult(result)
@ -339,7 +339,7 @@ void unittest_uart_end(){}
"""
)
result = clirunner.invoke(
unittest_cmd,
pio_test_cmd,
[
"-d",
str(project_dir),