quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

components-configuration.sh (14986B)


      1 # components-configuration.sh
      2 #
      3 # Copyright The Mbed TLS Contributors
      4 # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
      5 
      6 # This file contains test components that are executed by all.sh
      7 
      8 ################################################################
      9 #### Configuration Testing
     10 ################################################################
     11 
     12 component_test_default_out_of_box () {
     13     msg "build: make, default config (out-of-box)" # ~1min
     14     make
     15     # Disable fancy stuff
     16     unset MBEDTLS_TEST_OUTCOME_FILE
     17 
     18     msg "test: main suites make, default config (out-of-box)" # ~10s
     19     make test
     20 
     21     msg "selftest: make, default config (out-of-box)" # ~10s
     22     programs/test/selftest
     23 
     24     msg "program demos: make, default config (out-of-box)" # ~10s
     25     tests/scripts/run_demos.py
     26 }
     27 
     28 component_test_default_cmake_gcc_asan () {
     29     msg "build: cmake, gcc, ASan" # ~ 1 min 50s
     30     CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
     31     make
     32 
     33     msg "test: main suites (inc. selftests) (ASan build)" # ~ 50s
     34     make test
     35 
     36     msg "program demos (ASan build)" # ~10s
     37     tests/scripts/run_demos.py
     38 
     39     msg "test: selftest (ASan build)" # ~ 10s
     40     programs/test/selftest
     41 
     42     msg "test: metatests (GCC, ASan build)"
     43     tests/scripts/run-metatests.sh any asan poison
     44 
     45     msg "test: ssl-opt.sh (ASan build)" # ~ 1 min
     46     tests/ssl-opt.sh
     47 
     48     msg "test: compat.sh (ASan build)" # ~ 6 min
     49     tests/compat.sh
     50 
     51     msg "test: context-info.sh (ASan build)" # ~ 15 sec
     52     tests/context-info.sh
     53 }
     54 
     55 component_test_default_cmake_gcc_asan_new_bignum () {
     56     msg "build: cmake, gcc, ASan" # ~ 1 min 50s
     57     scripts/config.py set MBEDTLS_ECP_WITH_MPI_UINT
     58     CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
     59     make
     60 
     61     msg "test: main suites (inc. selftests) (ASan build)" # ~ 50s
     62     make test
     63 
     64     msg "test: selftest (ASan build)" # ~ 10s
     65     programs/test/selftest
     66 
     67     msg "test: ssl-opt.sh (ASan build)" # ~ 1 min
     68     tests/ssl-opt.sh
     69 
     70     msg "test: compat.sh (ASan build)" # ~ 6 min
     71     tests/compat.sh
     72 
     73     msg "test: context-info.sh (ASan build)" # ~ 15 sec
     74     tests/context-info.sh
     75 }
     76 
     77 component_test_full_cmake_gcc_asan () {
     78     msg "build: full config, cmake, gcc, ASan"
     79     scripts/config.py full
     80     CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
     81     make
     82 
     83     msg "test: main suites (inc. selftests) (full config, ASan build)"
     84     make test
     85 
     86     msg "test: selftest (full config, ASan build)" # ~ 10s
     87     programs/test/selftest
     88 
     89     msg "test: ssl-opt.sh (full config, ASan build)"
     90     tests/ssl-opt.sh
     91 
     92     # Note: the next two invocations cover all compat.sh test cases.
     93     # We should use the same here and in basic-build-test.sh.
     94     msg "test: compat.sh: default version (full config, ASan build)"
     95     tests/compat.sh -e 'ARIA\|CHACHA'
     96 
     97     msg "test: compat.sh: next: ARIA, Chacha (full config, ASan build)"
     98     env OPENSSL="$OPENSSL_NEXT" tests/compat.sh -e '^$' -f 'ARIA\|CHACHA'
     99 
    100     msg "test: context-info.sh (full config, ASan build)" # ~ 15 sec
    101     tests/context-info.sh
    102 }
    103 
    104 component_test_full_cmake_gcc_asan_new_bignum () {
    105     msg "build: full config, cmake, gcc, ASan"
    106     scripts/config.py full
    107     scripts/config.py set MBEDTLS_ECP_WITH_MPI_UINT
    108     CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
    109     make
    110 
    111     msg "test: main suites (inc. selftests) (full config, new bignum, ASan)"
    112     make test
    113 
    114     msg "test: selftest (full config, new bignum, ASan)" # ~ 10s
    115     programs/test/selftest
    116 
    117     msg "test: ssl-opt.sh (full config, new bignum, ASan)"
    118     tests/ssl-opt.sh
    119 
    120     # Note: the next two invocations cover all compat.sh test cases.
    121     # We should use the same here and in basic-build-test.sh.
    122     msg "test: compat.sh: default version (full config, new bignum, ASan)"
    123     tests/compat.sh -e 'ARIA\|CHACHA'
    124 
    125     msg "test: compat.sh: next: ARIA, Chacha (full config, new bignum, ASan)"
    126     env OPENSSL="$OPENSSL_NEXT" tests/compat.sh -e '^$' -f 'ARIA\|CHACHA'
    127 
    128     msg "test: context-info.sh (full config, new bignum, ASan)" # ~ 15 sec
    129     tests/context-info.sh
    130 }
    131 
    132 component_test_full_cmake_clang () {
    133     msg "build: cmake, full config, clang" # ~ 50s
    134     scripts/config.py full
    135     CC=clang CXX=clang cmake -D CMAKE_BUILD_TYPE:String=Release -D ENABLE_TESTING=On -D TEST_CPP=1 .
    136     make
    137 
    138     msg "test: main suites (full config, clang)" # ~ 5s
    139     make test
    140 
    141     msg "test: cpp_dummy_build (full config, clang)" # ~ 1s
    142     programs/test/cpp_dummy_build
    143 
    144     msg "test: metatests (clang)"
    145     tests/scripts/run-metatests.sh any pthread
    146 
    147     msg "program demos (full config, clang)" # ~10s
    148     tests/scripts/run_demos.py
    149 
    150     msg "test: psa_constant_names (full config, clang)" # ~ 1s
    151     $FRAMEWORK/scripts/test_psa_constant_names.py
    152 
    153     msg "test: ssl-opt.sh default, ECJPAKE, SSL async (full config)" # ~ 1s
    154     tests/ssl-opt.sh -f 'Default\|ECJPAKE\|SSL async private'
    155 }
    156 
    157 component_test_default_no_deprecated () {
    158     # Test that removing the deprecated features from the default
    159     # configuration leaves something consistent.
    160     msg "build: make, default + MBEDTLS_DEPRECATED_REMOVED" # ~ 30s
    161     scripts/config.py set MBEDTLS_DEPRECATED_REMOVED
    162     make CFLAGS='-O -Werror -Wall -Wextra'
    163 
    164     msg "test: make, default + MBEDTLS_DEPRECATED_REMOVED" # ~ 5s
    165     make test
    166 }
    167 
    168 component_test_full_no_deprecated () {
    169     msg "build: make, full_no_deprecated config" # ~ 30s
    170     scripts/config.py full_no_deprecated
    171     make CFLAGS='-O -Werror -Wall -Wextra'
    172 
    173     msg "test: make, full_no_deprecated config" # ~ 5s
    174     make test
    175 
    176     msg "test: ensure that X509 has no direct dependency on BIGNUM_C"
    177     not grep mbedtls_mpi library/libmbedx509.a
    178 
    179     msg "test: ssl-opt.sh authentication, full_no_deprecated config" # ~ 10s
    180     tests/ssl-opt.sh -f 'Default\|Authentication'
    181 }
    182 
    183 component_test_full_no_deprecated_deprecated_warning () {
    184     # Test that there is nothing deprecated in "full_no_deprecated".
    185     # A deprecated feature would trigger a warning (made fatal) from
    186     # MBEDTLS_DEPRECATED_WARNING.
    187     msg "build: make, full_no_deprecated config, MBEDTLS_DEPRECATED_WARNING" # ~ 30s
    188     scripts/config.py full_no_deprecated
    189     scripts/config.py unset MBEDTLS_DEPRECATED_REMOVED
    190     scripts/config.py set MBEDTLS_DEPRECATED_WARNING
    191     make CFLAGS='-O -Werror -Wall -Wextra'
    192 
    193     msg "test: make, full_no_deprecated config, MBEDTLS_DEPRECATED_WARNING" # ~ 5s
    194     make test
    195 }
    196 
    197 component_test_full_deprecated_warning () {
    198     # Test that when MBEDTLS_DEPRECATED_WARNING is enabled, the build passes
    199     # with only certain whitelisted types of warnings.
    200     msg "build: make, full config + MBEDTLS_DEPRECATED_WARNING, expect warnings" # ~ 30s
    201     scripts/config.py full
    202     scripts/config.py set MBEDTLS_DEPRECATED_WARNING
    203     # Expect warnings from '#warning' directives in check_config.h.
    204     # Note that gcc is required to allow the use of -Wno-error=cpp, which allows us to
    205     # display #warning messages without them being treated as errors.
    206     make CC=gcc CFLAGS='-O -Werror -Wall -Wextra -Wno-error=cpp' lib programs
    207 
    208     msg "build: make tests, full config + MBEDTLS_DEPRECATED_WARNING, expect warnings" # ~ 30s
    209     # Set MBEDTLS_TEST_DEPRECATED to enable tests for deprecated features.
    210     # By default those are disabled when MBEDTLS_DEPRECATED_WARNING is set.
    211     # Expect warnings from '#warning' directives in check_config.h and
    212     # from the use of deprecated functions in test suites.
    213     make CC=gcc CFLAGS='-O -Werror -Wall -Wextra -Wno-error=deprecated-declarations -Wno-error=cpp -DMBEDTLS_TEST_DEPRECATED' tests
    214 
    215     msg "test: full config + MBEDTLS_TEST_DEPRECATED" # ~ 30s
    216     make test
    217 
    218     msg "program demos: full config + MBEDTLS_TEST_DEPRECATED" # ~10s
    219     tests/scripts/run_demos.py
    220 }
    221 
    222 component_build_baremetal () {
    223   msg "build: make, baremetal config"
    224   scripts/config.py baremetal
    225   make CFLAGS="-O1 -Werror -I$PWD/framework/tests/include/baremetal-override/"
    226 }
    227 
    228 support_build_baremetal () {
    229     # Older Glibc versions include time.h from other headers such as stdlib.h,
    230     # which makes the no-time.h-in-baremetal check fail. Ubuntu 16.04 has this
    231     # problem, Ubuntu 18.04 is ok.
    232     ! grep -q -F time.h /usr/include/x86_64-linux-gnu/sys/types.h
    233 }
    234 
    235 component_test_no_psa_crypto_full_cmake_asan () {
    236     # full minus MBEDTLS_PSA_CRYPTO_C: run the same set of tests as basic-build-test.sh
    237     msg "build: cmake, full config minus PSA crypto, ASan"
    238     scripts/config.py full
    239     scripts/config.py unset MBEDTLS_PSA_CRYPTO_C
    240     scripts/config.py unset MBEDTLS_PSA_CRYPTO_CLIENT
    241     scripts/config.py unset MBEDTLS_USE_PSA_CRYPTO
    242     scripts/config.py unset MBEDTLS_SSL_PROTO_TLS1_3
    243     scripts/config.py unset MBEDTLS_PSA_ITS_FILE_C
    244     scripts/config.py unset MBEDTLS_PSA_CRYPTO_SE_C
    245     scripts/config.py unset MBEDTLS_PSA_CRYPTO_STORAGE_C
    246     scripts/config.py unset MBEDTLS_LMS_C
    247     scripts/config.py unset MBEDTLS_LMS_PRIVATE
    248     CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
    249     make
    250 
    251     msg "test: main suites (full minus PSA crypto)"
    252     make test
    253 
    254     # Note: ssl-opt.sh has some test cases that depend on
    255     # MBEDTLS_ECP_RESTARTABLE && !MBEDTLS_USE_PSA_CRYPTO
    256     # This is the only component where those tests are not skipped.
    257     msg "test: ssl-opt.sh (full minus PSA crypto)"
    258     tests/ssl-opt.sh
    259 
    260     # Note: the next two invocations cover all compat.sh test cases.
    261     # We should use the same here and in basic-build-test.sh.
    262     msg "test: compat.sh: default version (full minus PSA crypto)"
    263     tests/compat.sh -e 'ARIA\|CHACHA'
    264 
    265     msg "test: compat.sh: next: ARIA, Chacha (full minus PSA crypto)"
    266     env OPENSSL="$OPENSSL_NEXT" tests/compat.sh -e '^$' -f 'ARIA\|CHACHA'
    267 }
    268 
    269 component_build_tfm () {
    270     # Check that the TF-M configuration can build cleanly with various
    271     # warning flags enabled. We don't build or run tests, since the
    272     # TF-M configuration needs a TF-M platform. A tweaked version of
    273     # the configuration that works on mainstream platforms is in
    274     # configs/config-tfm.h, tested via test-ref-configs.pl.
    275     cp configs/config-tfm.h "$CONFIG_H"
    276 
    277     msg "build: TF-M config, clang, armv7-m thumb2"
    278     make lib CC="clang" CFLAGS="--target=arm-linux-gnueabihf -march=armv7-m -mthumb -Os -std=c99 -Werror -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral -Wshadow -Wasm-operand-widths -Wunused -I../framework/tests/include/spe"
    279 
    280     msg "build: TF-M config, gcc native build"
    281     make clean
    282     make lib CC="gcc" CFLAGS="-Os -std=c99 -Werror -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral -Wshadow -Wformat-signedness -Wlogical-op -I../framework/tests/include/spe"
    283 }
    284 
    285 component_test_no_platform () {
    286     # Full configuration build, without platform support, file IO and net sockets.
    287     # This should catch missing mbedtls_printf definitions, and by disabling file
    288     # IO, it should catch missing '#include <stdio.h>'
    289     msg "build: full config except platform/fsio/net, make, gcc, C99" # ~ 30s
    290     scripts/config.py full_no_platform
    291     scripts/config.py unset MBEDTLS_PLATFORM_C
    292     scripts/config.py unset MBEDTLS_NET_C
    293     scripts/config.py unset MBEDTLS_FS_IO
    294     scripts/config.py unset MBEDTLS_PSA_CRYPTO_SE_C
    295     scripts/config.py unset MBEDTLS_PSA_CRYPTO_STORAGE_C
    296     scripts/config.py unset MBEDTLS_PSA_ITS_FILE_C
    297     scripts/config.py unset MBEDTLS_ENTROPY_NV_SEED
    298     # Note, _DEFAULT_SOURCE needs to be defined for platforms using glibc version >2.19,
    299     # to re-enable platform integration features otherwise disabled in C99 builds
    300     make CC=gcc CFLAGS='-Werror -Wall -Wextra -std=c99 -pedantic -Os -D_DEFAULT_SOURCE' lib programs
    301     make CC=gcc CFLAGS='-Werror -Wall -Wextra -Os' test
    302 }
    303 
    304 component_test_memory_buffer_allocator_backtrace () {
    305     msg "build: default config with memory buffer allocator and backtrace enabled"
    306     scripts/config.py set MBEDTLS_MEMORY_BUFFER_ALLOC_C
    307     scripts/config.py set MBEDTLS_PLATFORM_MEMORY
    308     scripts/config.py set MBEDTLS_MEMORY_BACKTRACE
    309     scripts/config.py set MBEDTLS_MEMORY_DEBUG
    310     cmake -DCMAKE_BUILD_TYPE:String=Release .
    311     make
    312 
    313     msg "test: MBEDTLS_MEMORY_BUFFER_ALLOC_C and MBEDTLS_MEMORY_BACKTRACE"
    314     make test
    315 }
    316 
    317 component_test_memory_buffer_allocator () {
    318     msg "build: default config with memory buffer allocator"
    319     scripts/config.py set MBEDTLS_MEMORY_BUFFER_ALLOC_C
    320     scripts/config.py set MBEDTLS_PLATFORM_MEMORY
    321     cmake -DCMAKE_BUILD_TYPE:String=Release .
    322     make
    323 
    324     msg "test: MBEDTLS_MEMORY_BUFFER_ALLOC_C"
    325     make test
    326 
    327     msg "test: ssl-opt.sh, MBEDTLS_MEMORY_BUFFER_ALLOC_C"
    328     # MBEDTLS_MEMORY_BUFFER_ALLOC is slow. Skip tests that tend to time out.
    329     tests/ssl-opt.sh -e '^DTLS proxy'
    330 }
    331 
    332 component_test_malloc_0_null () {
    333     msg "build: malloc(0) returns NULL (ASan+UBSan build)"
    334     scripts/config.py full
    335     make CC=$ASAN_CC CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"$PWD/tests/configs/user-config-malloc-0-null.h\"' $ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS"
    336 
    337     msg "test: malloc(0) returns NULL (ASan+UBSan build)"
    338     make test
    339 
    340     msg "selftest: malloc(0) returns NULL (ASan+UBSan build)"
    341     # Just the calloc selftest. "make test" ran the others as part of the
    342     # test suites.
    343     programs/test/selftest calloc
    344 
    345     msg "test ssl-opt.sh: malloc(0) returns NULL (ASan+UBSan build)"
    346     # Run a subset of the tests. The choice is a balance between coverage
    347     # and time (including time indirectly wasted due to flaky tests).
    348     # The current choice is to skip tests whose description includes
    349     # "proxy", which is an approximation of skipping tests that use the
    350     # UDP proxy, which tend to be slower and flakier.
    351     tests/ssl-opt.sh -e 'proxy'
    352 }
    353 
    354 component_build_mbedtls_config_file () {
    355     msg "build: make with MBEDTLS_CONFIG_FILE" # ~40s
    356     scripts/config.py -w full_config.h full
    357     echo '#error "MBEDTLS_CONFIG_FILE is not working"' >"$CONFIG_H"
    358     make CFLAGS="-I '$PWD' -DMBEDTLS_CONFIG_FILE='\"full_config.h\"'"
    359     # Make sure this feature is enabled. We'll disable it in the next phase.
    360     programs/test/query_compile_time_config MBEDTLS_NIST_KW_C
    361     make clean
    362 
    363     msg "build: make with MBEDTLS_CONFIG_FILE + MBEDTLS_USER_CONFIG_FILE"
    364     # In the user config, disable one feature (for simplicity, pick a feature
    365     # that nothing else depends on).
    366     echo '#undef MBEDTLS_NIST_KW_C' >user_config.h
    367     make CFLAGS="-I '$PWD' -DMBEDTLS_CONFIG_FILE='\"full_config.h\"' -DMBEDTLS_USER_CONFIG_FILE='\"user_config.h\"'"
    368     not programs/test/query_compile_time_config MBEDTLS_NIST_KW_C
    369 
    370     rm -f user_config.h full_config.h
    371 }
    372 
    373 component_test_no_strings () {
    374     msg "build: no strings" # ~10s
    375     scripts/config.py full
    376     # Disable options that activate a large amount of string constants.
    377     scripts/config.py unset MBEDTLS_DEBUG_C
    378     scripts/config.py unset MBEDTLS_ERROR_C
    379     scripts/config.py set MBEDTLS_ERROR_STRERROR_DUMMY
    380     scripts/config.py unset MBEDTLS_VERSION_FEATURES
    381     make CFLAGS='-Werror -Os'
    382 
    383     msg "test: no strings" # ~ 10s
    384     make test
    385 }