1
0
mirror of https://github.com/ARMmbed/mbedtls.git synced 2025-05-10 00:49:04 +08:00

Merge pull request #10062 from ronald-cron-arm/check-generated-files

Companion PR of "Add check generated files and check code style test components"
#201-merge==#201-head thus not updating the TF-PSA-Crypto pointer to #201-merge
#10062-merge==#10062-head and the merge queue is empty thus merging directly, not through the merge queue.
This commit is contained in:
Ronald Cron 2025-03-27 10:24:06 +01:00 committed by GitHub
commit f19a08fb96
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 118 additions and 68 deletions

View File

@ -420,20 +420,22 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
if(GEN_FILES)
add_custom_command(
OUTPUT
${MBEDTLS_FRAMEWORK_DIR}/tests/src/test_keys.h
${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_keys.h
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test
COMMAND
"${MBEDTLS_PYTHON_EXECUTABLE}"
"${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_keys.py"
"--output"
"${MBEDTLS_FRAMEWORK_DIR}/tests/src/test_keys.h"
"${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_keys.h"
DEPENDS
${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_keys.py
)
add_custom_target(mbedtls_test_keys_header
DEPENDS ${MBEDTLS_FRAMEWORK_DIR}/tests/src/test_keys.h)
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_keys.h)
add_dependencies(mbedtls_test mbedtls_test_keys_header)
endif()
target_include_directories(mbedtls_test
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/tests/include
PRIVATE ${MBEDTLS_FRAMEWORK_DIR}/tests/include
PRIVATE tests/include
PRIVATE include
@ -454,20 +456,22 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
if(GEN_FILES)
add_custom_command(
OUTPUT
${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h
${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_certs.h
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test
COMMAND
"${MBEDTLS_PYTHON_EXECUTABLE}"
"${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_cert_macros.py"
"--output"
"${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h"
"${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_certs.h"
DEPENDS
${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_cert_macros.py
)
add_custom_target(mbedtls_test_certs_header
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h)
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_certs.h)
add_dependencies(mbedtls_test_helpers mbedtls_test_certs_header)
endif()
target_include_directories(mbedtls_test_helpers
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/tests/include
PRIVATE ${MBEDTLS_FRAMEWORK_DIR}/tests/include
PRIVATE tests/include
PRIVATE include

@ -1 +1 @@
Subproject commit 2b03d629240c0c23a0bfa5444f005b8d9b6f8ba8
Subproject commit 28dc4cae3f71f5425dd42953c6f2f38d49123bee

View File

@ -11,9 +11,18 @@
use warnings;
use strict;
use Getopt::Long;
use Digest::MD5 'md5_hex';
# Declare variables for options
my $vsx_dir = "visualc/VS2017";
my $list = 0; # Default off
GetOptions(
"directory=s" => \$vsx_dir, # Target directory
"list" => \$list # Only list generated files
) or die "Invalid options\n";
my $vsx_ext = "vcxproj";
my $vsx_app_tpl_file = "scripts/data_files/vs2017-app-template.$vsx_ext";
my $vsx_main_tpl_file = "scripts/data_files/vs2017-main-template.$vsx_ext";
@ -33,6 +42,8 @@ my $crypto_core_source_dir = 'tf-psa-crypto/core';
my $crypto_source_dir = 'tf-psa-crypto/drivers/builtin/src';
my $tls_test_source_dir = 'tests/src';
my $tls_test_header_dir = 'tests/include/test';
my $crypto_test_source_dir = 'tf-psa-crypto/tests/src';
my $crypto_test_header_dir = 'tf-psa-crypto/tests/include/test';
my $test_source_dir = 'framework/tests/src';
my $test_header_dir = 'framework/tests/include/test';
my $test_drivers_header_dir = 'framework/tests/include/test/drivers';
@ -59,6 +70,7 @@ my @include_directories = qw(
tf-psa-crypto/drivers/everest/include/everest/vs2013
tf-psa-crypto/drivers/everest/include/everest/kremlib
tests/include
tf-psa-crypto/tests/include
framework/tests/include
framework/tests/programs
);
@ -122,9 +134,11 @@ sub check_dirs {
&& -d $crypto_source_dir
&& -d $test_source_dir
&& -d $tls_test_source_dir
&& -d $crypto_test_source_dir
&& -d $test_drivers_source_dir
&& -d $test_header_dir
&& -d $tls_test_header_dir
&& -d $crypto_test_header_dir
&& -d $test_drivers_header_dir
&& -d $mbedtls_programs_dir
&& -d $framework_programs_dir
@ -280,7 +294,9 @@ sub main {
# Remove old files to ensure that, for example, project files from deleted
# apps are not kept
if (not $list) {
del_vsx_files();
}
my @app_list = get_app_list();
my @header_dirs = (
@ -289,6 +305,7 @@ sub main {
$psa_header_dir,
$test_header_dir,
$tls_test_header_dir,
$crypto_test_header_dir,
$test_drivers_header_dir,
$tls_source_dir,
$crypto_core_source_dir,
@ -303,6 +320,7 @@ sub main {
$crypto_source_dir,
$test_source_dir,
$tls_test_source_dir,
$crypto_test_source_dir,
$test_drivers_source_dir,
@thirdparty_source_dirs,
);
@ -313,6 +331,14 @@ sub main {
map { s!/!\\!g } @headers;
map { s!/!\\!g } @sources;
if ($list) {
foreach my $app (@app_list) {
$app =~ s/.*\///;
print "$vsx_dir/$app.$vsx_ext\n";
}
print "$vsx_main_file\n";
print "$vsx_sln_file\n";
} else {
gen_app_files( @app_list );
gen_main_file( \@headers, \@sources,
@ -320,6 +346,7 @@ sub main {
$vsx_main_tpl_file, $vsx_main_file );
gen_vsx_solution( @app_list );
}
return 0;
}

View File

@ -7,30 +7,30 @@
@rem the "CC" environment variable must point to a C compiler.
@rem @@@@ library\** @@@@
@rem psa_crypto_driver_wrappers.h needs to be generated prior to
@rem generate_visualc_files.pl being invoked.
python tf-psa-crypto\scripts\generate_driver_wrappers.py || exit /b 1
perl scripts\generate_errors.pl || exit /b 1
perl scripts\generate_query_config.pl || exit /b 1
perl scripts\generate_features.pl || exit /b 1
python framework\scripts\generate_ssl_debug_helpers.py || exit /b 1
@rem @@@@ Build @@@@
perl scripts\generate_visualc_files.pl || exit /b 1
@rem @@@@ programs\** @@@@
cd tf-psa-crypto
python scripts\generate_psa_constants.py || exit /b 1
python framework\scripts\generate_config_tests.py || exit /b 1
cd ..
@rem @@@@ tests\** @@@@
python framework\scripts\generate_bignum_tests.py --directory tf-psa-crypto\tests\suites || exit /b 1
python framework\scripts\generate_config_tests.py tests\suites\test_suite_config.mbedtls_boolean.data || exit /b 1
python framework\scripts\generate_config_tests.py --directory tf-psa-crypto\tests\suites tests\suites\test_suite_config.psa_boolean.data || exit /b 1
python framework\scripts\generate_config_tests.py || exit /b 1
python framework\scripts\generate_ecp_tests.py --directory tf-psa-crypto\tests\suites || exit /b 1
python framework\scripts\generate_psa_tests.py --directory tf-psa-crypto\tests\suites || exit /b 1
python framework\scripts\generate_test_keys.py --output framework\tests\include\test\test_keys.h || exit /b 1
python tf-psa-crypto\framework\scripts\generate_test_keys.py --output tf-psa-crypto\framework\tests\include\test\test_keys.h || exit /b 1
python framework\scripts\generate_test_cert_macros.py --output tests\src\test_certs.h || exit /b 1
python framework\scripts\generate_test_keys.py --output tests\include\test\test_keys.h || exit /b 1
python tf-psa-crypto\framework\scripts\generate_test_keys.py --output tf-psa-crypto\tests\include\test\test_keys.h || exit /b 1
python framework\scripts\generate_test_cert_macros.py --output tests\include\test\test_certs.h || exit /b 1
python framework\scripts\generate_tls_handshake_tests.py || exit /b 1
python framework\scripts\generate_tls13_compat_tests.py || exit /b 1
@rem @@@@ Build @@@@
@rem Call generate_visualc_files.pl last to be sure everything else has been
@rem generated before.
perl scripts\generate_visualc_files.pl || exit /b 1

4
tests/.gitignore vendored
View File

@ -22,6 +22,6 @@
/opt-testcases/tls13-compat.sh
/suites/*.generated.data
/suites/test_suite_config.mbedtls_boolean.data
/src/test_keys.h
/src/test_certs.h
/include/test/test_keys.h
/include/test/test_certs.h
###END_GENERATED_FILES###

View File

@ -19,15 +19,9 @@ execute_process(
WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}/..
OUTPUT_VARIABLE
base_config_generated_data_files_raw)
base_config_generated_data_files)
string(REGEX REPLACE "[^;]*/" ""
base_config_generated_data_files_raw "${base_config_generated_data_files_raw}")
# Can be replace by list(FILTER ...) when CI CMake version is >=3.6
foreach(file ${base_config_generated_data_files_raw})
if(${file} MATCHES "mbedtls")
list(APPEND base_config_generated_data_files ${file})
endif()
endforeach()
base_config_generated_data_files "${base_config_generated_data_files}")
# Derive generated file paths in the build directory. The generated data
# files go into the suites/ subdirectory.
@ -50,7 +44,6 @@ if(GEN_FILES)
${MBEDTLS_PYTHON_EXECUTABLE}
${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_config_tests.py
--directory ${CMAKE_CURRENT_BINARY_DIR}/suites
${config_generated_data_files}
DEPENDS
${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_config_tests.py
# Do not declare the configuration files as dependencies: they
@ -183,6 +176,7 @@ function(add_test_suite suite_name)
# files are automatically included because the library targets declare
# them as PUBLIC.
target_include_directories(test_suite_${data_name}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../framework/tests/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../library

View File

@ -25,16 +25,23 @@ $(error "$(PYTHON) ../framework/scripts/generate_bignum_tests.py --list" failed)
endif
GENERATED_CRYPTO_DATA_FILES += $(GENERATED_BIGNUM_DATA_FILES)
GENERATED_CONFIG_DATA_FILES_RAW := $(patsubst tests/%,%,$(shell \
GENERATED_MBEDTLS_CONFIG_DATA_FILES := $(patsubst tests/%,%,$(shell \
$(PYTHON) ../framework/scripts/generate_config_tests.py --list || \
echo FAILED \
))
ifeq ($(GENERATED_CONFIG_DATA_FILES),FAILED)
ifeq ($(GENERATED_MBEDTLS_CONFIG_DATA_FILES),FAILED)
$(error "$(PYTHON) ../framework/scripts/generate_config_tests.py --list" failed)
endif
GENERATED_MBEDTLS_CONFIG_DATA_FILES := $(foreach file,$(GENERATED_CONFIG_DATA_FILES_RAW),$(if $(findstring mbedtls,$(file)),$(file),))
GENERATED_PSA_CONFIG_DATA_FILES := $(foreach file,$(GENERATED_CONFIG_DATA_FILES_RAW),$(if $(findstring psa,$(file)),$(addprefix ../tf-psa-crypto/tests/,$(file)),))
GENERATED_CONFIG_DATA_FILES := $(GENERATED_MBEDTLS_CONFIG_DATA_FILES)$(GENERATED_PSA_CONFIG_DATA_FILES)
GENERATED_PSA_CONFIG_DATA_FILES := $(addprefix ../tf-psa-crypto/,$(shell \
$(PYTHON) ../tf-psa-crypto/framework/scripts/generate_config_tests.py --list || \
echo FAILED \
))
ifeq ($(GENERATED_PSA_CONFIG_DATA_FILES),FAILED)
$(error "$(PYTHON) ../tf-psa-crypto/framework/scripts/generate_config_tests.py --list" failed)
endif
GENERATED_CONFIG_DATA_FILES := $(GENERATED_MBEDTLS_CONFIG_DATA_FILES) $(GENERATED_PSA_CONFIG_DATA_FILES)
GENERATED_DATA_FILES += $(GENERATED_MBEDTLS_CONFIG_DATA_FILES)
GENERATED_CRYPTO_DATA_FILES += $(GENERATED_PSA_CONFIG_DATA_FILES)
@ -57,9 +64,9 @@ endif
GENERATED_CRYPTO_DATA_FILES += $(GENERATED_PSA_DATA_FILES)
GENERATED_FILES = $(GENERATED_DATA_FILES) $(GENERATED_CRYPTO_DATA_FILES)
GENERATED_FILES += ../framework/tests/include/test/test_keys.h \
../tf-psa-crypto/framework/tests/include/test/test_keys.h \
src/test_certs.h
GENERATED_FILES += include/test/test_keys.h \
../tf-psa-crypto/tests/include/test/test_keys.h \
include/test/test_certs.h
# Generated files needed to (fully) run ssl-opt.sh
.PHONY: ssl-opt
@ -112,8 +119,8 @@ generated_config_test_data: ../framework/scripts/mbedtls_framework/test_case.py
generated_config_test_data: ../framework/scripts/mbedtls_framework/test_data_generation.py
generated_config_test_data:
echo " Gen $(GENERATED_CONFIG_DATA_FILES)"
$(PYTHON) ../framework/scripts/generate_config_tests.py $(GENERATED_MBEDTLS_CONFIG_DATA_FILES)
$(PYTHON) ../framework/scripts/generate_config_tests.py --directory ../tf-psa-crypto/tests/suites $(GENERATED_PSA_CONFIG_DATA_FILES)
$(PYTHON) ../framework/scripts/generate_config_tests.py
cd ../tf-psa-crypto && $(PYTHON) ./framework/scripts/generate_config_tests.py
.SECONDARY: generated_config_test_data
$(GENERATED_ECP_DATA_FILES): $(gen_file_dep) generated_ecp_test_data
@ -177,16 +184,16 @@ all: $(BINARIES) $(CRYPTO_BINARIES)
mbedtls_test: $(MBEDTLS_TEST_OBJS)
src/test_certs.h: ../framework/scripts/generate_test_cert_macros.py \
include/test/test_certs.h: ../framework/scripts/generate_test_cert_macros.py \
$($(PYTHON) ../framework/scripts/generate_test_cert_macros.py --list-dependencies)
echo " Gen $@"
$(PYTHON) ../framework/scripts/generate_test_cert_macros.py --output $@
../framework/tests/include/test/test_keys.h: ../framework/scripts/generate_test_keys.py
include/test/test_keys.h: ../framework/scripts/generate_test_keys.py
echo " Gen $@"
$(PYTHON) ../framework/scripts/generate_test_keys.py --output $@
../tf-psa-crypto/framework/tests/include/test/test_keys.h: ../tf-psa-crypto/framework/scripts/generate_test_keys.py
../tf-psa-crypto/tests/include/test/test_keys.h: ../tf-psa-crypto/framework/scripts/generate_test_keys.py
echo " Gen $@"
$(PYTHON) ../tf-psa-crypto/framework/scripts/generate_test_keys.py --output $@
@ -197,8 +204,8 @@ ifdef RECORD_PSA_STATUS_COVERAGE_LOG
# therefore the wildcard enumeration above doesn't include it.
TEST_OBJS_DEPS += ../framework/tests/include/test/instrument_record_status.h
endif
TEST_OBJS_DEPS += src/test_certs.h ../framework/tests/include/test/test_keys.h \
../tf-psa-crypto/framework/tests/include/test/test_keys.h
TEST_OBJS_DEPS += include/test/test_certs.h include/test/test_keys.h \
../tf-psa-crypto/tests/include/test/test_keys.h
# Rule to compile common test C files in framework
../framework/tests/src/%.o : ../framework/tests/src/%.c $(TEST_OBJS_DEPS)

View File

@ -141,10 +141,10 @@ check()
if [ -d tf-psa-crypto ]; then
cd tf-psa-crypto
check scripts/generate_psa_constants.py ./programs/psa/psa_constant_names_generated.c
check ../framework/scripts/generate_bignum_tests.py $(../framework/scripts/generate_bignum_tests.py --list)
check ../framework/scripts/generate_config_tests.py tests/suites/test_suite_config.psa_boolean.data
check ../framework/scripts/generate_ecp_tests.py $(../framework/scripts/generate_ecp_tests.py --list)
check ../framework/scripts/generate_psa_tests.py $(../framework/scripts/generate_psa_tests.py --list)
check framework/scripts/generate_bignum_tests.py $(framework/scripts/generate_bignum_tests.py --list)
check framework/scripts/generate_config_tests.py $(framework/scripts/generate_config_tests.py --list)
check framework/scripts/generate_ecp_tests.py $(framework/scripts/generate_ecp_tests.py --list)
check framework/scripts/generate_psa_tests.py $(framework/scripts/generate_psa_tests.py --list)
cd ..
# Generated files that are present in the repository even in the development
# branch. (This is intended to be temporary, until the generator scripts are
@ -171,7 +171,7 @@ else
check framework/scripts/generate_psa_wrappers.py tests/include/test/psa_test_wrappers.h tests/src/psa_test_wrappers.c
fi
check framework/scripts/generate_test_keys.py framework/tests/include/test/test_keys.h
check framework/scripts/generate_test_keys.py tests/include/test/test_keys.h
# Additional checks for Mbed TLS only
if in_mbedtls_repo; then
@ -181,7 +181,7 @@ if in_mbedtls_repo; then
check framework/scripts/generate_ssl_debug_helpers.py library/ssl_debug_helpers_generated.c
check framework/scripts/generate_tls_handshake_tests.py tests/opt-testcases/handshake-generated.sh
check framework/scripts/generate_tls13_compat_tests.py tests/opt-testcases/tls13-compat.sh
check framework/scripts/generate_test_cert_macros.py tests/src/test_certs.h
check framework/scripts/generate_test_cert_macros.py tests/include/test/test_certs.h
# generate_visualc_files enumerates source files (library/*.c). It doesn't
# care about their content, but the files must exist. So it must run after
# the step that creates or updates these files.

View File

@ -17,20 +17,38 @@ component_check_recursion () {
}
component_check_generated_files () {
msg "Check: check-generated-files, files generated with make" # 2s
msg "Check make_generated_files.py consistency"
make neat
$FRAMEWORK/scripts/make_generated_files.py
$FRAMEWORK/scripts/make_generated_files.py --check
make neat
msg "Check files generated with make"
MBEDTLS_ROOT_DIR="$PWD"
make generated_files
tests/scripts/check-generated-files.sh
$FRAMEWORK/scripts/make_generated_files.py --check
msg "Check: check-generated-files -u, files present" # 2s
tests/scripts/check-generated-files.sh -u
# Check that the generated files are considered up to date.
tests/scripts/check-generated-files.sh
cd $TF_PSA_CRYPTO_ROOT_DIR
./framework/scripts/make_generated_files.py --check
msg "Check: check-generated-files -u, files absent" # 2s
command make neat
tests/scripts/check-generated-files.sh -u
# Check that the generated files are considered up to date.
tests/scripts/check-generated-files.sh
msg "Check files generated with cmake"
cd "$MBEDTLS_ROOT_DIR"
mkdir "$OUT_OF_SOURCE_DIR"
cd "$OUT_OF_SOURCE_DIR"
cmake -D GEN_FILES=ON "$MBEDTLS_ROOT_DIR"
make
cd "$MBEDTLS_ROOT_DIR"
# Files for MS Visual Studio are not generated with cmake thus copy the
# ones generated with make to pacify make_generated_files.py check.
# Files for MS Visual Studio are rather on their way out thus not adding
# support for them with cmake.
cp -Rf visualc "$OUT_OF_SOURCE_DIR"
$FRAMEWORK/scripts/make_generated_files.py --root "$OUT_OF_SOURCE_DIR" --check
cd $TF_PSA_CRYPTO_ROOT_DIR
./framework/scripts/make_generated_files.py --root "$OUT_OF_SOURCE_DIR/tf-psa-crypto" --check
# This component ends with the generated files present in the source tree.
# This is necessary for subsequent components!

View File

@ -13,7 +13,7 @@
#include "mbedtls/pk.h"
#include "test_certs.h"
#include "test/test_certs.h"
/*
*

@ -1 +1 @@
Subproject commit 5048bced5e1c000c0e3888be8126eb63a2b91937
Subproject commit 43ea7fa25cd8a288c5b75dbb0b4eb47df6ffca8b