| # SPDX-License-Identifier: GPL-2.0 |
| |
| import os |
| import string |
| |
| TEMPLATE_DIR = os.path.dirname(os.path.abspath(__file__)) |
| TEST_TEMPLATE_PATH = os.path.join(TEMPLATE_DIR, 'test_template.c') |
| KCONFIG_TEMPLATE_PATH = os.path.join(TEMPLATE_DIR, 'test_template.Kconfig') |
| MAKEFILE_TEMPLATE_PATH = os.path.join(TEMPLATE_DIR, 'test_template.Makefile') |
| |
| def create_skeleton_from_template(template_path, test_prefix, test_object_file): |
| with open(template_path, 'r') as f: |
| return string.Template(f.read()).safe_substitute( |
| test_prefix=test_prefix, |
| caps_test_prefix=test_prefix.upper(), |
| test_object_file=test_object_file) |
| |
| |
| class Skeletons(object): |
| """ |
| Represents the KUnit skeletons for a test, Kconfig entry, and Makefile |
| entry. |
| """ |
| def __init__(self, test_skeleton, kconfig_skeleton, makefile_skeleton): |
| self.test_skeleton = test_skeleton |
| self.kconfig_skeleton = kconfig_skeleton |
| self.makefile_skeleton = makefile_skeleton |
| |
| |
| def create_skeletons(namespace_prefix, test_object_file): |
| test_prefix = namespace_prefix + '_test' |
| return Skeletons( |
| test_skeleton=create_skeleton_from_template( |
| TEST_TEMPLATE_PATH, |
| test_prefix, |
| test_object_file), |
| kconfig_skeleton=create_skeleton_from_template( |
| KCONFIG_TEMPLATE_PATH, |
| test_prefix, |
| test_object_file), |
| makefile_skeleton=create_skeleton_from_template( |
| MAKEFILE_TEMPLATE_PATH, |
| test_prefix, |
| test_object_file) |
| ) |
| |
| def namespace_prefix_from_path(path): |
| file_name = os.path.basename(path) |
| return os.path.splitext(file_name) |
| |
| def create_skeletons_from_path(path, namespace_prefix=None, print_test_only=False): |
| dir_name, file_name = os.path.split(path) |
| file_prefix, _ = os.path.splitext(file_name) |
| test_path = os.path.join(dir_name, file_prefix + '-test.c') |
| test_object_file = file_prefix + '-test.o' |
| if not namespace_prefix: |
| namespace_prefix = file_prefix.replace('-', '_') |
| skeletons = create_skeletons(namespace_prefix, test_object_file) |
| print('### In ' + test_path) |
| print(skeletons.test_skeleton) |
| if print_test_only: |
| return |
| print('### In Kconfig') |
| print(skeletons.kconfig_skeleton) |
| print('### In Makefile') |
| print(skeletons.makefile_skeleton) |
| |