forked from platformio/platformio-core
Rename unit testing module to "test"
This commit is contained in:
2
docs
2
docs
Submodule docs updated: 4bc27be71c...10fd0d1edb
@ -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):
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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(
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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",
|
@ -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 = []
|
@ -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"
|
@ -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(
|
@ -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:
|
@ -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):
|
@ -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),
|
||||
|
Reference in New Issue
Block a user