diff --git a/docs b/docs index 4bc27be7..10fd0d1e 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 4bc27be71c1cfe61057c242b979d421648b83828 +Subproject commit 10fd0d1edb11e267a6b72e0a52dc0570d0580f1a diff --git a/platformio/builder/tools/piotest.py b/platformio/builder/tools/piotest.py index 8dfcffd3..b9c2444a 100644 --- a/platformio/builder/tools/piotest.py +++ b/platformio/builder/tools/piotest.py @@ -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): diff --git a/platformio/commands/remote/command.py b/platformio/commands/remote/command.py index 10113c51..1c6bc2aa 100644 --- a/platformio/commands/remote/command.py +++ b/platformio/commands/remote/command.py @@ -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, diff --git a/platformio/commands/run/command.py b/platformio/commands/run/command.py index a6019425..5eef20d6 100644 --- a/platformio/commands/run/command.py +++ b/platformio/commands/run/command.py @@ -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 diff --git a/platformio/commands/run/processor.py b/platformio/commands/run/processor.py index f04c10e1..e927bed1 100644 --- a/platformio/commands/run/processor.py +++ b/platformio/commands/run/processor.py @@ -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 diff --git a/platformio/commands/test.py b/platformio/commands/test.py index 393b8239..df641161 100644 --- a/platformio/commands/test.py +++ b/platformio/commands/test.py @@ -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 diff --git a/platformio/debug/helpers.py b/platformio/debug/helpers.py index 6a125ed5..3797976c 100644 --- a/platformio/debug/helpers.py +++ b/platformio/debug/helpers.py @@ -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 diff --git a/platformio/package/commands/install.py b/platformio/package/commands/install.py index 6c2b4d3b..2833aa11 100644 --- a/platformio/package/commands/install.py +++ b/platformio/package/commands/install.py @@ -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( diff --git a/platformio/unittest/__init__.py b/platformio/test/__init__.py similarity index 100% rename from platformio/unittest/__init__.py rename to platformio/test/__init__.py diff --git a/platformio/unittest/command.py b/platformio/test/command.py similarity index 90% rename from platformio/unittest/command.py rename to platformio/test/command.py index 3ca776fa..32663936 100644 --- a/platformio/unittest/command.py +++ b/platformio/test/command.py @@ -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) diff --git a/platformio/unittest/exception.py b/platformio/test/exception.py similarity index 100% rename from platformio/unittest/exception.py rename to platformio/test/exception.py diff --git a/platformio/unittest/reports/__init__.py b/platformio/test/reports/__init__.py similarity index 100% rename from platformio/unittest/reports/__init__.py rename to platformio/test/reports/__init__.py diff --git a/platformio/unittest/reports/base.py b/platformio/test/reports/base.py similarity index 67% rename from platformio/unittest/reports/base.py rename to platformio/test/reports/base.py index 9503b5fa..78244aef 100644 --- a/platformio/unittest/reports/base.py +++ b/platformio/test/reports/base.py @@ -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) diff --git a/platformio/unittest/reports/json.py b/platformio/test/reports/json.py similarity index 83% rename from platformio/unittest/reports/json.py rename to platformio/test/reports/json.py index 5fef6413..67e6c3a7 100644 --- a/platformio/unittest/reports/json.py +++ b/platformio/test/reports/json.py @@ -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 diff --git a/platformio/unittest/reports/junit.py b/platformio/test/reports/junit.py similarity index 86% rename from platformio/unittest/reports/junit.py rename to platformio/test/reports/junit.py index 6f878d5f..9308aed7 100644 --- a/platformio/unittest/reports/junit.py +++ b/platformio/test/reports/junit.py @@ -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) diff --git a/platformio/unittest/reports/stdout.py b/platformio/test/reports/stdout.py similarity index 79% rename from platformio/unittest/reports/stdout.py rename to platformio/test/reports/stdout.py index 0d1083ac..a361031f 100644 --- a/platformio/unittest/reports/stdout.py +++ b/platformio/test/reports/stdout.py @@ -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", diff --git a/platformio/unittest/result.py b/platformio/test/result.py similarity index 99% rename from platformio/unittest/result.py rename to platformio/test/result.py index d16f2a55..a7976088 100644 --- a/platformio/unittest/result.py +++ b/platformio/test/result.py @@ -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 = [] diff --git a/platformio/unittest/runners/__init__.py b/platformio/test/runners/__init__.py similarity index 100% rename from platformio/unittest/runners/__init__.py rename to platformio/test/runners/__init__.py diff --git a/platformio/unittest/runners/base.py b/platformio/test/runners/base.py similarity index 95% rename from platformio/unittest/runners/base.py rename to platformio/test/runners/base.py index acf671a7..95f8d339 100644 --- a/platformio/unittest/runners/base.py +++ b/platformio/test/runners/base.py @@ -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" diff --git a/platformio/unittest/runners/factory.py b/platformio/test/runners/factory.py similarity index 91% rename from platformio/unittest/runners/factory.py rename to platformio/test/runners/factory.py index 5f540bdc..325b7489 100644 --- a/platformio/unittest/runners/factory.py +++ b/platformio/test/runners/factory.py @@ -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( diff --git a/platformio/unittest/runners/mixins/__init__.py b/platformio/test/runners/mixins/__init__.py similarity index 100% rename from platformio/unittest/runners/mixins/__init__.py rename to platformio/test/runners/mixins/__init__.py diff --git a/platformio/unittest/runners/mixins/embedded.py b/platformio/test/runners/mixins/embedded.py similarity index 100% rename from platformio/unittest/runners/mixins/embedded.py rename to platformio/test/runners/mixins/embedded.py diff --git a/platformio/unittest/runners/mixins/native.py b/platformio/test/runners/mixins/native.py similarity index 96% rename from platformio/unittest/runners/mixins/native.py rename to platformio/test/runners/mixins/native.py index 072aba80..8749f4e8 100644 --- a/platformio/unittest/runners/mixins/native.py +++ b/platformio/test/runners/mixins/native.py @@ -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: diff --git a/platformio/unittest/runners/unity.py b/platformio/test/runners/unity.py similarity index 98% rename from platformio/unittest/runners/unity.py rename to platformio/test/runners/unity.py index fa929bb2..5dda99b7 100644 --- a/platformio/unittest/runners/unity.py +++ b/platformio/test/runners/unity.py @@ -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): diff --git a/tests/commands/test_test.py b/tests/commands/test_test.py index a3dca4eb..acbce50c 100644 --- a/tests/commands/test_test.py +++ b/tests/commands/test_test.py @@ -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),