diff options
Diffstat (limited to 'zephyr/zmake/tests')
-rw-r--r-- | zephyr/zmake/tests/conftest.py | 8 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_build_config.py | 44 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_generate_readme.py | 7 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_modules.py | 11 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_multiproc_executor.py | 2 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_multiproc_logging.py | 22 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_packers.py | 13 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_project.py | 21 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_reexec.py | 5 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_toolchains.py | 19 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_util.py | 9 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_version.py | 41 | ||||
-rw-r--r-- | zephyr/zmake/tests/test_zmake.py | 49 |
13 files changed, 137 insertions, 114 deletions
diff --git a/zephyr/zmake/tests/conftest.py b/zephyr/zmake/tests/conftest.py index 38e34bef56..dfea10457c 100644 --- a/zephyr/zmake/tests/conftest.py +++ b/zephyr/zmake/tests/conftest.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -7,14 +7,14 @@ import os import pathlib -import hypothesis -import pytest - +import hypothesis # pylint:disable=import-error +import pytest # pylint:disable=import-error import zmake.zmake as zm hypothesis.settings.register_profile( "cq", suppress_health_check=hypothesis.HealthCheck.all() ) +hypothesis.settings.load_profile("cq") # pylint: disable=redefined-outer-name,unused-argument diff --git a/zephyr/zmake/tests/test_build_config.py b/zephyr/zmake/tests/test_build_config.py index 76cc0a2028..d8355da768 100644 --- a/zephyr/zmake/tests/test_build_config.py +++ b/zephyr/zmake/tests/test_build_config.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -10,10 +10,9 @@ import pathlib import string import tempfile -import hypothesis -import hypothesis.strategies as st -import pytest - +import hypothesis # pylint:disable=import-error +import hypothesis.strategies as st # pylint:disable=import-error +import pytest # pylint:disable=import-error import zmake.jobserver import zmake.util as util from zmake.build_config import BuildConfig @@ -36,17 +35,13 @@ config_dicts_at_least_one_entry = st.dictionaries( build_configs = st.builds( BuildConfig, - environ_defs=config_dicts, cmake_defs=config_dicts, kconfig_defs=config_dicts, kconfig_files=st.lists(paths), ) -build_configs_no_kconfig = st.builds( - BuildConfig, environ_defs=config_dicts, cmake_defs=config_dicts -) +build_configs_no_kconfig = st.builds(BuildConfig, cmake_defs=config_dicts) build_configs_with_at_least_one_kconfig = st.builds( BuildConfig, - environ_defs=config_dicts, cmake_defs=config_dicts, kconfig_defs=config_dicts_at_least_one_entry, ) @@ -70,19 +65,16 @@ def test_merge(coins, combined): return left, right # Split the original config into two - env1, env2 = split(combined.environ_defs.items()) cmake1, cmake2 = split(combined.cmake_defs.items()) kconf1, kconf2 = split(combined.kconfig_defs.items()) files1, files2 = split(combined.kconfig_files) config1 = BuildConfig( - environ_defs=dict(env1), cmake_defs=dict(cmake1), kconfig_defs=dict(kconf1), kconfig_files=files1, ) config2 = BuildConfig( - environ_defs=dict(env2), cmake_defs=dict(cmake2), kconfig_defs=dict(kconf2), kconfig_files=files2, @@ -92,7 +84,6 @@ def test_merge(coins, combined): merged = config1 | config2 # Assert that the merged split configs is the original config - assert merged.environ_defs == combined.environ_defs assert merged.cmake_defs == combined.cmake_defs assert merged.kconfig_defs == combined.kconfig_defs assert set(merged.kconfig_files) == set(combined.kconfig_files) @@ -158,12 +149,13 @@ def test_popen_cmake_no_kconfig(conf: BuildConfig, project_dir, build_dir): _, cmake_defs = parse_cmake_args(job_client.captured_argv) assert cmake_defs == conf.cmake_defs - assert job_client.captured_env == conf.environ_defs @hypothesis.given(build_configs_with_at_least_one_kconfig, paths, paths) @hypothesis.settings(deadline=60000) -def test_popen_cmake_kconfig_but_no_file(conf: BuildConfig, project_dir, build_dir): +def test_popen_cmake_kconfig_but_no_file( + conf: BuildConfig, project_dir, build_dir +): """Test that running popen_cmake with Kconfig definitions to write out, but no path to do so, should raise an error. """ @@ -184,7 +176,10 @@ def test_popen_cmake_kconfig(conf: BuildConfig, project_dir, build_dir): try: conf.popen_cmake( - job_client, project_dir, build_dir, kconfig_path=pathlib.Path(temp_path) + job_client, + project_dir, + build_dir, + kconfig_path=pathlib.Path(temp_path), ) _, cmake_defs = parse_cmake_args(job_client.captured_argv) @@ -199,7 +194,6 @@ def test_popen_cmake_kconfig(conf: BuildConfig, project_dir, build_dir): kconfig_files = set() assert cmake_defs == conf.cmake_defs - assert job_client.captured_env == conf.environ_defs assert kconfig_files == expected_kconfig_files kconfig_defs = util.read_kconfig_file(temp_path) @@ -215,7 +209,9 @@ def fake_kconfig_files(tmp_path): paths = [tmp_path / f"{letter}.conf" for letter in "ABCD"] for path, cfg_name in zip(paths, ("ONE", "TWO", "THREE", "FOUR")): - path.write_text(f"# Fake kconfig file for testing.\nCONFIG_{cfg_name}=y\n") + path.write_text( + f"# Fake kconfig file for testing.\nCONFIG_{cfg_name}=y\n" + ) return paths @@ -225,10 +221,6 @@ def test_build_config_json_stability(fake_kconfig_files): build configs. """ config_a = BuildConfig( - environ_defs={ - "A": "B", - "B": "C", - }, cmake_defs={ "Z": "Y", "X": "W", @@ -242,10 +234,6 @@ def test_build_config_json_stability(fake_kconfig_files): # Dict ordering is intentionally reversed in b. config_b = BuildConfig( - environ_defs={ - "B": "C", - "A": "B", - }, cmake_defs={ "X": "W", "Z": "Y", @@ -265,7 +253,7 @@ def test_build_config_json_inequality(): representation. """ config_a = BuildConfig(cmake_defs={"A": "B"}) - config_b = BuildConfig(environ_defs={"A": "B"}) + config_b = BuildConfig(kconfig_defs={"CONFIG_A": "y"}) assert config_a.as_json() != config_b.as_json() diff --git a/zephyr/zmake/tests/test_generate_readme.py b/zephyr/zmake/tests/test_generate_readme.py index cb4bcf6cc1..e7873f1980 100644 --- a/zephyr/zmake/tests/test_generate_readme.py +++ b/zephyr/zmake/tests/test_generate_readme.py @@ -1,4 +1,4 @@ -# Copyright 2022 The Chromium OS Authors. All rights reserved. +# Copyright 2022 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -6,8 +6,7 @@ Tests for the generate_readme.py file. """ -import pytest - +import pytest # pylint:disable=import-error import zmake.generate_readme as gen_readme @@ -34,7 +33,7 @@ def test_generate_readme_diff( expected_contents, actual_contents, return_code, -): # pylint: disable=too-many-arguments +): """Verify that the diff function can detect different text.""" def generate_readme(): diff --git a/zephyr/zmake/tests/test_modules.py b/zephyr/zmake/tests/test_modules.py index 600544d2e7..dc4c170535 100644 --- a/zephyr/zmake/tests/test_modules.py +++ b/zephyr/zmake/tests/test_modules.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -7,9 +7,8 @@ import pathlib import tempfile -import hypothesis -import hypothesis.strategies as st - +import hypothesis # pylint:disable=import-error +import hypothesis.strategies as st # pylint:disable=import-error import zmake.modules module_lists = st.lists( @@ -37,4 +36,6 @@ def test_locate_in_directory(modules): expected_modules[module] = module_dir - assert zmake.modules.locate_from_directory(modules_dir) == expected_modules + assert ( + zmake.modules.locate_from_directory(modules_dir) == expected_modules + ) diff --git a/zephyr/zmake/tests/test_multiproc_executor.py b/zephyr/zmake/tests/test_multiproc_executor.py index c905ef03ec..ff443e2f4b 100644 --- a/zephyr/zmake/tests/test_multiproc_executor.py +++ b/zephyr/zmake/tests/test_multiproc_executor.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. diff --git a/zephyr/zmake/tests/test_multiproc_logging.py b/zephyr/zmake/tests/test_multiproc_logging.py index 2694b6451e..88d029675b 100644 --- a/zephyr/zmake/tests/test_multiproc_logging.py +++ b/zephyr/zmake/tests/test_multiproc_logging.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -20,7 +20,9 @@ def test_read_output_from_pipe(): file_desc = io.TextIOWrapper(os.fdopen(pipe[0], "rb"), encoding="utf-8") logger = mock.Mock(spec=logging.Logger) logger.log.side_effect = lambda log_lvl, line: semaphore.release() - zmake.multiproc.LogWriter.log_output(logger, logging.DEBUG, file_desc, job_id="") + zmake.multiproc.LogWriter.log_output( + logger, logging.DEBUG, file_desc, job_id="" + ) os.write(pipe[1], "Hello\n".encode("utf-8")) semaphore.acquire() logger.log.assert_called_with(logging.DEBUG, "Hello") @@ -77,8 +79,12 @@ def test_read_output_from_second_pipe(): logger = mock.Mock(spec=logging.Logger) logger.log.side_effect = lambda log_lvl, fmt, id, line: semaphore.release() - zmake.multiproc.LogWriter.log_output(logger, logging.DEBUG, fds[0], job_id="0") - zmake.multiproc.LogWriter.log_output(logger, logging.ERROR, fds[1], job_id="1") + zmake.multiproc.LogWriter.log_output( + logger, logging.DEBUG, fds[0], job_id="0" + ) + zmake.multiproc.LogWriter.log_output( + logger, logging.ERROR, fds[1], job_id="1" + ) os.write(pipes[1][1], "Hello\n".encode("utf-8")) semaphore.acquire() @@ -102,8 +108,12 @@ def test_read_output_after_another_pipe_closed(): logger = mock.Mock(spec=logging.Logger) logger.log.side_effect = lambda log_lvl, fmt, id, line: semaphore.release() - zmake.multiproc.LogWriter.log_output(logger, logging.DEBUG, fds[0], job_id="0") - zmake.multiproc.LogWriter.log_output(logger, logging.ERROR, fds[1], job_id="1") + zmake.multiproc.LogWriter.log_output( + logger, logging.DEBUG, fds[0], job_id="0" + ) + zmake.multiproc.LogWriter.log_output( + logger, logging.ERROR, fds[1], job_id="1" + ) fds[0].close() os.write(pipes[1][1], "Hello\n".encode("utf-8")) diff --git a/zephyr/zmake/tests/test_packers.py b/zephyr/zmake/tests/test_packers.py index 43b63a908f..23bdb2bf6b 100644 --- a/zephyr/zmake/tests/test_packers.py +++ b/zephyr/zmake/tests/test_packers.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -7,10 +7,9 @@ import pathlib import tempfile -import hypothesis -import hypothesis.strategies as st -import pytest - +import hypothesis # pylint:disable=import-error +import hypothesis.strategies as st # pylint:disable=import-error +import pytest # pylint:disable=import-error import zmake.output_packers as packers # Strategies for use with hypothesis @@ -54,7 +53,7 @@ def test_file_size_in_bounds(data): """Test with file size limited.""" packer = FakePacker(100) with tempfile.TemporaryDirectory() as temp_dir_name: - file = pathlib.Path(temp_dir_name) / "zephyr.bin" + file = pathlib.Path(temp_dir_name) / "ec.bin" with open(file, "wb") as outfile: outfile.write(data) assert packer.check_packed_file_size(file=file, dir_map={}) == file @@ -66,7 +65,7 @@ def test_file_size_out_of_bounds(data): """Test with file size limited, and file exceeds limit.""" packer = FakePacker(100) with tempfile.TemporaryDirectory() as temp_dir_name: - file = pathlib.Path(temp_dir_name) / "zephyr.bin" + file = pathlib.Path(temp_dir_name) / "ec.bin" with open(file, "wb") as outfile: outfile.write(data) with pytest.raises(RuntimeError): diff --git a/zephyr/zmake/tests/test_project.py b/zephyr/zmake/tests/test_project.py index b5facbc331..3225de1d75 100644 --- a/zephyr/zmake/tests/test_project.py +++ b/zephyr/zmake/tests/test_project.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -8,10 +8,9 @@ import pathlib import string import tempfile -import hypothesis -import hypothesis.strategies as st -import pytest - +import hypothesis # pylint:disable=import-error +import hypothesis.strategies as st # pylint:disable=import-error +import pytest # pylint:disable=import-error import zmake.modules import zmake.output_packers import zmake.project @@ -34,7 +33,9 @@ def test_find_dts_overlays(modules): with tempfile.TemporaryDirectory() as modpath: modpath = pathlib.Path(modpath) for board in boards: - dts_path = zmake.project.module_dts_overlay_name(modpath, board) + dts_path = zmake.project.module_dts_overlay_name( + modpath, board + ) dts_path.parent.mkdir(parents=True, exist_ok=True) dts_path.touch() setup_modules_and_dispatch( @@ -49,7 +50,9 @@ def test_find_dts_overlays(modules): board_file_mapping = {} for modpath, board_list in zip(module_paths, modules): for board in board_list: - file_name = zmake.project.module_dts_overlay_name(modpath, board) + file_name = zmake.project.module_dts_overlay_name( + modpath, board + ) files = board_file_mapping.get(board, set()) board_file_mapping[board] = files | {file_name} @@ -258,4 +261,6 @@ def test_kconfig_files(tmp_path, actual_files, config_files, expected_files): assert len(builds) == 1 _, config = builds[0] - assert sorted(f.name for f in config.kconfig_files) == sorted(expected_files) + assert sorted(f.name for f in config.kconfig_files) == sorted( + expected_files + ) diff --git a/zephyr/zmake/tests/test_reexec.py b/zephyr/zmake/tests/test_reexec.py index 5d7905cd8f..63aa76cb70 100644 --- a/zephyr/zmake/tests/test_reexec.py +++ b/zephyr/zmake/tests/test_reexec.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Test the zmake re-exec functionality.""" @@ -7,8 +7,7 @@ import os import sys import unittest.mock as mock -import pytest - +import pytest # pylint:disable=import-error import zmake.__main__ as main diff --git a/zephyr/zmake/tests/test_toolchains.py b/zephyr/zmake/tests/test_toolchains.py index 910a5faa78..ca40f482af 100644 --- a/zephyr/zmake/tests/test_toolchains.py +++ b/zephyr/zmake/tests/test_toolchains.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -7,8 +7,7 @@ import os import pathlib -import pytest - +import pytest # pylint:disable=import-error import zmake.output_packers import zmake.project as project import zmake.toolchains as toolchains @@ -138,9 +137,6 @@ def test_zephyr(fake_project: project.Project, zephyr_exists, no_environ): "ZEPHYR_TOOLCHAIN_VARIANT": "zephyr", "ZEPHYR_SDK_INSTALL_DIR": str(pathlib.Path("/opt/zephyr-sdk")), } - assert config.environ_defs == { - "ZEPHYR_SDK_INSTALL_DIR": str(pathlib.Path("/opt/zephyr-sdk")), - } def test_zephyr_from_env(mockfs, monkeypatch, fake_project): @@ -159,9 +155,6 @@ def test_zephyr_from_env(mockfs, monkeypatch, fake_project): "ZEPHYR_TOOLCHAIN_VARIANT": "zephyr", "ZEPHYR_SDK_INSTALL_DIR": str(zephyr_sdk_path), } - assert config.environ_defs == { - "ZEPHYR_SDK_INSTALL_DIR": str(zephyr_sdk_path), - } def test_host_toolchain(fake_project, host_toolchain_exists): @@ -197,9 +190,13 @@ def test_no_toolchains(fake_project: project.Project, mockfs, no_environ): fake_project.get_toolchain(module_paths) -def test_override_without_sdk(fake_project: project.Project, mockfs, no_environ): +def test_override_without_sdk( + fake_project: project.Project, mockfs, no_environ +): """Check for error override is set to zephyr, but it can't be found.""" chain = fake_project.get_toolchain(module_paths, override="zephyr") - with pytest.raises(RuntimeError, match=r"No installed Zephyr SDK was found"): + with pytest.raises( + RuntimeError, match=r"No installed Zephyr SDK was found" + ): chain.get_build_config() diff --git a/zephyr/zmake/tests/test_util.py b/zephyr/zmake/tests/test_util.py index 1ec0076162..c5efa2d18e 100644 --- a/zephyr/zmake/tests/test_util.py +++ b/zephyr/zmake/tests/test_util.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -7,10 +7,9 @@ import pathlib import tempfile -import hypothesis -import hypothesis.strategies as st -import pytest - +import hypothesis # pylint:disable=import-error +import hypothesis.strategies as st # pylint:disable=import-error +import pytest # pylint:disable=import-error import zmake.util as util # Strategies for use with hypothesis diff --git a/zephyr/zmake/tests/test_version.py b/zephyr/zmake/tests/test_version.py index 9e00473752..d6202c0d85 100644 --- a/zephyr/zmake/tests/test_version.py +++ b/zephyr/zmake/tests/test_version.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -8,8 +8,7 @@ import datetime import subprocess import unittest.mock as mock -import pytest - +import pytest # pylint: disable=import-error import zmake.output_packers import zmake.project import zmake.version as version @@ -40,7 +39,9 @@ def _git_commit(repo, message="message!"): "GIT_COMMITTER_EMAIL": "bitdiddle@example.org", "GIT_COMMITTER_DATE": "Tue, 30 Aug 2005 10:50:30 -0700", } - subprocess.run(["git", "-C", repo, "commit", "-m", message], check=True, env=env) + subprocess.run( + ["git", "-C", repo, "commit", "-m", message], check=True, env=env + ) def _setup_example_repos(tmp_path): @@ -95,7 +96,9 @@ def test_version_string(tmp_path): """Test a that version string is as expected.""" project, zephyr_base, modules = _setup_example_repos(tmp_path) assert ( - version.get_version_string(project, zephyr_base, modules) + version.get_version_string( + project.config.project_name, zephyr_base, modules + ) == "prj_v2.6.4-ec:b5991f,os:377d26,mod1:02fd7a" ) @@ -104,7 +107,9 @@ def test_version_string_static(tmp_path): """Test a that version string with no git hashes.""" project, zephyr_base, modules = _setup_example_repos(tmp_path) assert ( - version.get_version_string(project, zephyr_base, modules, static=True) + version.get_version_string( + project.config.project_name, zephyr_base, modules, static=True + ) == "prj_v2.6.0-STATIC" ) @@ -128,7 +133,7 @@ def fake_date(): HEADER_VERSION_STR = "trogdor_v2.6.1004-cmsis:0dead0,hal_stm32:0beef0,os:ad00da" EXPECTED_HEADER = ( - "/* This file is automatically generated by zmake */\n" + "/* This file is automatically generated by zmake_tests */\n" '#define VERSION "trogdor_v2.6.1004-cmsis:0dead0,hal_stm32:0beef0,os:ad00da"\n' '#define CROS_EC_VERSION32 "trogdor_v2.6.1004-cmsis:0dead0,"\n' '#define BUILDER "toukmond@pokey"\n' @@ -137,7 +142,7 @@ EXPECTED_HEADER = ( ) HEADER_VERSION_STR_STATIC = "trogdor_v2.6.0-STATIC" EXPECTED_HEADER_STATIC = ( - "/* This file is automatically generated by zmake */\n" + "/* This file is automatically generated by zmake_tests */\n" '#define VERSION "trogdor_v2.6.0-STATIC"\n' '#define CROS_EC_VERSION32 "trogdor_v2.6.0-STATIC"\n' '#define BUILDER "reproducible@build"\n' @@ -150,7 +155,7 @@ def test_header_gen(fake_user_hostname, fake_date, tmp_path): """Test generating the version header.""" # Test the simple case (static=False, no existing header). output_file = tmp_path / "ec_version.h" - version.write_version_header(HEADER_VERSION_STR, output_file) + version.write_version_header(HEADER_VERSION_STR, output_file, "zmake_tests") assert output_file.read_text() == EXPECTED_HEADER @@ -158,7 +163,9 @@ def test_header_gen_reproducible_build(tmp_path): """Test that reproducible builds produce the right header.""" # With static=True this time. output_file = tmp_path / "ec_version.h" - version.write_version_header(HEADER_VERSION_STR_STATIC, output_file, static=True) + version.write_version_header( + HEADER_VERSION_STR_STATIC, output_file, "zmake_tests", static=True + ) assert output_file.read_text() == EXPECTED_HEADER_STATIC @@ -168,27 +175,31 @@ def test_header_gen_exists_not_changed(fake_user_hostname, fake_date, tmp_path): output_file = tmp_path / "ec_version.h" # First time, write and record mtime. - version.write_version_header(HEADER_VERSION_STR, output_file) + version.write_version_header(HEADER_VERSION_STR, output_file, "zmake_tests") expected_mtime = output_file.stat().st_mtime # Do another write (contents should be unchanged). - version.write_version_header(HEADER_VERSION_STR, output_file) + version.write_version_header(HEADER_VERSION_STR, output_file, "zmake_tests") # Assert we didn't write again. assert output_file.stat().st_mtime == expected_mtime -def test_header_gen_exists_needs_changes(fake_user_hostname, fake_date, tmp_path): +def test_header_gen_exists_needs_changes( + fake_user_hostname, fake_date, tmp_path +): """Test that the version file is changed, when needed.""" # Test we overwrite when it exists already and changes are needed. output_file = tmp_path / "ec_version.h" # First time, write and save contents. - version.write_version_header(HEADER_VERSION_STR, output_file) + version.write_version_header(HEADER_VERSION_STR, output_file, "zmake_tests") original_contents = output_file.read_text() # Do another write (contents should be changed). - version.write_version_header(HEADER_VERSION_STR_STATIC, output_file, static=True) + version.write_version_header( + HEADER_VERSION_STR_STATIC, output_file, "zmake_tests", static=True + ) # Assert we overwrote. assert output_file.read_text() != original_contents diff --git a/zephyr/zmake/tests/test_zmake.py b/zephyr/zmake/tests/test_zmake.py index 4ca1d7f077..370e8d1bfa 100644 --- a/zephyr/zmake/tests/test_zmake.py +++ b/zephyr/zmake/tests/test_zmake.py @@ -1,4 +1,4 @@ -# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Copyright 2021 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -10,15 +10,14 @@ import pathlib import re import unittest.mock -import pytest -from testfixtures import LogCapture - +import pytest # pylint:disable=import-error import zmake.build_config import zmake.jobserver import zmake.multiproc as multiproc import zmake.output_packers import zmake.project import zmake.toolchains +from testfixtures import LogCapture # pylint:disable=import-error OUR_PATH = os.path.dirname(os.path.realpath(__file__)) @@ -75,8 +74,7 @@ class FakeJobserver(zmake.jobserver.GNUMakeJobServer): fnames: Dict of regexp to filename. If the regexp matches the command, then the filename will be returned as the output. """ - super().__init__() - self.jobserver = zmake.jobserver.GNUMakeJobServer(jobs=2) + super().__init__(jobs=2) self.fnames = fnames def get_job(self): @@ -88,14 +86,21 @@ class FakeJobserver(zmake.jobserver.GNUMakeJobServer): """Ignores the provided command and just runs 'cat' instead""" for pattern, filename in self.fnames.items(): # Convert to a list of strings - cmd = [isinstance(c, pathlib.PosixPath) and c.as_posix() or c for c in cmd] + cmd = [ + isinstance(c, pathlib.PosixPath) and c.as_posix() or c + for c in cmd + ] if pattern.match(" ".join(cmd)): new_cmd = ["cat", filename] break else: raise Exception('No pattern matched "%s"' % " ".join(cmd)) - kwargs.pop("env", None) - return self.jobserver.popen(new_cmd, *args, **kwargs) + kwargs["env"] = {} + return super().popen(new_cmd, *args, **kwargs) + + def env(self): + """Runs test commands with an empty environment for simpler logs.""" + return {} def get_test_filepath(suffix): @@ -168,7 +173,9 @@ class TestFilters: expected = { "Configuring fakeproject:rw.", "Configuring fakeproject:ro.", - "Building fakeproject in {}/ec/build/zephyr/fakeproject.".format(tmp_path), + "Building fakeproject in {}/ec/build/zephyr/fakeproject.".format( + tmp_path + ), "Building fakeproject:ro: /usr/bin/ninja -C {}-ro".format( tmp_path / "ec/build/zephyr/fakeproject/build" ), @@ -179,7 +186,9 @@ class TestFilters: for suffix in ["ro", "rw"]: with open(get_test_filepath("%s_INFO" % suffix)) as file: for line in file: - expected.add("[fakeproject:{}]{}".format(suffix, line.strip())) + expected.add( + "[fakeproject:{}]{}".format(suffix, line.strip()) + ) # This produces an easy-to-read diff if there is a difference assert expected == set(recs) @@ -192,20 +201,24 @@ class TestFilters: expected = { "Configuring fakeproject:rw.", "Configuring fakeproject:ro.", - "Building fakeproject in {}/ec/build/zephyr/fakeproject.".format(tmp_path), + "Building fakeproject in {}/ec/build/zephyr/fakeproject.".format( + tmp_path + ), "Building fakeproject:ro: /usr/bin/ninja -C {}-ro".format( tmp_path / "ec/build/zephyr/fakeproject/build" ), "Building fakeproject:rw: /usr/bin/ninja -C {}-rw".format( tmp_path / "ec/build/zephyr/fakeproject/build" ), - "Running cat {}/files/sample_ro.txt".format(OUR_PATH), - "Running cat {}/files/sample_rw.txt".format(OUR_PATH), + "Running `env -i cat {}/files/sample_ro.txt`".format(OUR_PATH), + "Running `env -i cat {}/files/sample_rw.txt`".format(OUR_PATH), } for suffix in ["ro", "rw"]: with open(get_test_filepath(suffix)) as file: for line in file: - expected.add("[fakeproject:{}]{}".format(suffix, line.strip())) + expected.add( + "[fakeproject:{}]{}".format(suffix, line.strip()) + ) # This produces an easy-to-read diff if there is a difference assert expected == set(recs) @@ -219,7 +232,9 @@ class TestFilters: ) dt_errs = [rec for rec in recs if "adc" in rec] - assert "devicetree error: 'adc' is marked as required" in list(dt_errs)[0] + assert ( + "devicetree error: 'adc' is marked as required" in list(dt_errs)[0] + ) @pytest.mark.parametrize( @@ -265,7 +280,7 @@ class TestFilters: ) def test_list_projects( project_names, fmt, search_dir, expected_output, capsys, zmake_from_dir -): # pylint: disable=too-many-arguments +): """Test listing projects with default directory.""" fake_projects = { name: zmake.project.Project( |