summaryrefslogtreecommitdiff
path: root/zephyr/zmake/tests/test_project.py
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/zmake/tests/test_project.py')
-rw-r--r--zephyr/zmake/tests/test_project.py173
1 files changed, 0 insertions, 173 deletions
diff --git a/zephyr/zmake/tests/test_project.py b/zephyr/zmake/tests/test_project.py
deleted file mode 100644
index 2442ceedf6..0000000000
--- a/zephyr/zmake/tests/test_project.py
+++ /dev/null
@@ -1,173 +0,0 @@
-# Copyright 2021 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import pathlib
-import string
-import tempfile
-
-import hypothesis
-import hypothesis.strategies as st
-import pytest
-
-import zmake.modules
-import zmake.project
-
-board_names = st.text(alphabet=set(string.ascii_lowercase) | {"_"}, min_size=1)
-sets_of_board_names = st.lists(st.lists(board_names, unique=True))
-
-
-class TemporaryProject(tempfile.TemporaryDirectory):
- """A temporary project wrapper.
-
- Args:
- config: The config dictionary to be used with the project.
- """
-
- def __init__(self, config):
- self.config = config
- super().__init__()
-
- def __enter__(self):
- project_path = pathlib.Path(super().__enter__())
- return zmake.project.Project(project_path, config_dict=self.config)
-
-
-@hypothesis.given(sets_of_board_names)
-@hypothesis.settings(deadline=None)
-def test_find_dts_overlays(modules):
- """Test the functionality of find_dts_overlays with multiple
- modules, each with sets of board names."""
-
- # Recursive function to wind up all the temporary directories and
- # call the actual test.
- def setup_modules_and_dispatch(modules, test_fn, module_list=()):
- if modules:
- boards = modules[0]
- 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.parent.mkdir(parents=True, exist_ok=True)
- dts_path.touch()
- setup_modules_and_dispatch(
- modules[1:], test_fn, module_list=module_list + (modpath,)
- )
- else:
- test_fn(module_list)
-
- # The actual test case, once temp modules have been setup.
- def testcase(module_paths):
- # Maps board_name→overlay_files
- 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)
- files = board_file_mapping.get(board, set())
- board_file_mapping[board] = files | {file_name}
-
- for board, expected_dts_files in board_file_mapping.items():
- with TemporaryProject(
- {
- "board": board,
- "output-type": "elf",
- "supported-toolchains": ["llvm"],
- "supported-zephyr-versions": ["v2.6"],
- }
- ) as project:
- config = project.find_dts_overlays(dict(enumerate(module_paths)))
-
- actual_dts_files = set(
- config.cmake_defs.get("DTC_OVERLAY_FILE", "").split(";")
- )
-
- assert actual_dts_files == set(map(str, expected_dts_files))
-
- setup_modules_and_dispatch(modules, testcase)
-
-
-module_lists = st.lists(
- st.one_of(*map(st.just, zmake.modules.known_modules)), unique=True
-)
-
-
-@hypothesis.given(module_lists)
-@hypothesis.settings(deadline=None)
-def test_prune_modules(modules):
- """Test the Project.prune_modules method in the usual case (all
- modules available)."""
- module_paths = {
- name: pathlib.Path("/fake/module/path", name)
- for name in zmake.modules.known_modules
- }
-
- with TemporaryProject(
- {
- "board": "native_posix",
- "output-type": "elf",
- "supported-toolchains": ["coreboot-sdk"],
- "supported-zephyr-versions": ["v2.6"],
- "modules": modules,
- }
- ) as project:
- assert set(project.prune_modules(module_paths)) == set(modules)
-
-
-def test_prune_modules_unavailable():
- """The Project.prune_modules method should raise a KeyError when
- not all modules are available."""
-
- # Missing 'cmsis'
- module_paths = {
- "hal_stm32": pathlib.Path("/mod/halstm"),
- }
-
- with TemporaryProject(
- {
- "board": "native_posix",
- "output-type": "elf",
- "supported-toolchains": ["coreboot-sdk"],
- "supported-zephyr-versions": ["v2.6"],
- "modules": ["hal_stm32", "cmsis"],
- }
- ) as project:
- with pytest.raises(KeyError):
- project.prune_modules(module_paths)
-
-
-def test_find_projects_empty(tmp_path):
- """Test the find_projects method when there are no projects."""
- projects = list(zmake.project.find_projects(tmp_path))
- assert len(projects) == 0
-
-
-YAML_FILE = """
-supported-zephyr-versions:
- - v2.6
-supported-toolchains:
- - coreboot-sdk
-output-type: npcx
-"""
-
-
-def test_find_projects(tmp_path):
- """Test the find_projects method when there are projects."""
- dir = tmp_path.joinpath("one")
- dir.mkdir()
- dir.joinpath("zmake.yaml").write_text("board: one\n" + YAML_FILE)
- tmp_path.joinpath("two").mkdir()
- dir = tmp_path.joinpath("two/a")
- dir.mkdir()
- dir.joinpath("zmake.yaml").write_text("board: twoa\nis-test: true\n" + YAML_FILE)
- dir = tmp_path.joinpath("two/b")
- dir.mkdir()
- dir.joinpath("zmake.yaml").write_text("board: twob\n" + YAML_FILE)
- projects = list(zmake.project.find_projects(tmp_path))
- projects.sort(key=lambda x: x.project_dir)
- assert len(projects) == 3
- assert projects[0].project_dir == tmp_path.joinpath("one")
- assert projects[1].project_dir == tmp_path.joinpath("two/a")
- assert projects[2].project_dir == tmp_path.joinpath("two/b")
- assert not projects[0].config.is_test
- assert projects[1].config.is_test
- assert not projects[2].config.is_test