#!/usr/bin/env python3 # Copyright (c) 2023 Intel Corporation # # SPDX-License-Identifier: Apache-2.0 ''' This test file contains tests for platform.py module of twister ''' import sys import os import mock import pytest ZEPHYR_BASE = os.getenv("ZEPHYR_BASE") sys.path.insert(0, os.path.join(ZEPHYR_BASE, "scripts/pylib/twister")) from twisterlib.platform import Platform, Simulator TESTDATA_1 = [ ( """\ identifier: dummy empty arch: arc """, { 'name': 'dummy empty', 'arch': 'arc', 'twister': True, 'ram': 128, 'timeout_multiplier': 1.0, 'ignore_tags': [], 'only_tags': [], 'default': False, 'binaries': [], 'flash': 512, 'supported': set(), 'vendor': '', 'tier': -1, 'type': 'na', 'simulators': [], 'supported_toolchains': [], 'env': [], 'env_satisfied': True }, '' ), ( """\ identifier: dummy full arch: riscv twister: true ram: 1024 testing: timeout_multiplier: 2.0 ignore_tags: - tag1 - tag2 only_tags: - tag3 default: true binaries: - dummy.exe - dummy.bin flash: 4096 supported: - ble - netif:openthread - gpio vendor: vendor1 tier: 1 type: unit simulation: - name: nsim exec: nsimdrv toolchain: - zephyr - llvm env: - dummynonexistentvar """, { 'name': 'dummy full', 'arch': 'riscv', 'twister': True, 'ram': 1024, 'timeout_multiplier': 2.0, 'ignore_tags': ['tag1', 'tag2'], 'only_tags': ['tag3'], 'default': True, 'binaries': ['dummy.exe', 'dummy.bin'], 'flash': 4096, 'supported': set(['ble', 'netif', 'openthread', 'gpio']), 'vendor': 'vendor1', 'tier': 1, 'type': 'unit', 'simulators': [Simulator({'name': 'nsim', 'exec': 'nsimdrv'})], 'supported_toolchains': ['zephyr', 'llvm', 'cross-compile'], 'env': ['dummynonexistentvar'], 'env_satisfied': False }, '' ), ] # This test is disabled because the Platform loading was changed significantly. # The test should be updated to reflect the new implementation. @pytest.mark.parametrize( 'platform_text, expected_data, expected_repr', TESTDATA_1, ids=['almost empty specification', 'full specification'] ) def xtest_platform_load(platform_text, expected_data, expected_repr): platform = Platform() with mock.patch('builtins.open', mock.mock_open(read_data=platform_text)): platform.load('dummy.yaml') for k, v in expected_data.items(): if not hasattr(platform, k): assert False, f'No key {k} in platform {platform}' att = getattr(platform, k) if isinstance(v, list) and not isinstance(att, list): assert False, f'Value mismatch in key {k} in platform {platform}' if isinstance(v, list): assert sorted(att) == sorted(v) else: assert att == v assert platform.__repr__() == expected_repr