67 lines
2.1 KiB
Python
Executable file
67 lines
2.1 KiB
Python
Executable file
# 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)
|
|
|