1########### 2Build Tests 3########### 4 5The tests is a TF-M application which verifies TF-M functionality on both SPE and NSPE sides. 6Thus, tests require an extension of SPE side with test code and extra functionality 7for some Non-Secure test cases. To inject that test code into SPE the 8``CONFIG_TFM_TEST_DIR`` option is used. When SPE build system sees this option 9it adds the corresponding folder via ``add_subdirectory(${CONFIG_TFM_TEST_DIR} tf-m-tests)`` 10and includes it to SPE binary. 11Also, test configurations should be passed to SPE build to include building Secure Tests. 12 13To hide these complexities to developers, TF-M implements a wrapper CMake in **tf-m-tests** 14repository [1]_ to build the SPE for testing rather than building it from the TF-M repository. 15 16The recommended tf-m-tests repo commit to verify TF-M can be found at 17``<TF-M source dir>/lib/ext/tf-m-tests/version.txt``. 18It does not support auto-downloading as builds start from it. 19You need to download it manually before building any tests with the following commands: 20 21.. code-block:: bash 22 23 git clone https://git.trustedfirmware.org/TF-M/tf-m-tests.git 24 git checkout <recommended tf-m-tests commit> 25 26Regression Tests 27================ 28For instructions on configuring, building and executing the regression tests 29please refer to the documentation in **tf-m-tests** repository (to be added). 30The regression test application is located under **/tests_reg** folder. 31It is recommended to build both SPE and NSPE from that folder. 32 33The basic commands for building the regression tests will be: 34 35.. code-block:: bash 36 37 cd </tf-m-tests/tests_reg> 38 cmake -S spe -B build_spe -DTFM_PLATFORM=arm/mps2/an521 \ 39 -DCONFIG_TFM_SOURCE_PATH=<TF-M source dir> \ 40 -DTFM_TOOLCHAIN_FILE=<Absolute path to>/toolchain_ARMCLANG.cmake \ 41 -DTEST_S=ON -DTEST_NS=ON 42 cmake --build build_spe -- install 43 44 cmake -S . -B build_test -DCONFIG_SPE_PATH=<Absolute path to>/build_spe/api_ns 45 cmake --build build_test 46 47Instead of enable all the supported Secure (``TEST_S``) and NS (``TEST_NS``) tests, you can also 48enable individual test suites by using ``-DTEST_S_<SUITE>=ON`` or ``-DTEST_NS_<SUITE>=ON``. 49For the available test suites, refer to the ``default_s_test_config.cmake`` and 50``default_ns_test_config.cmake`` files in tf-m-tests repo. 51 52.. Note:: 53 All the test suite config options should be passed to the SPE build command, including NS ones. 54 The SPE building command also accepts all the other config options used to build a single TF-M. 55 All options passing to SPE build does not have to be duplicated in NSPE build, including NS test 56 suite config options. 57 And this also applies to the below `PSA API tests`_. 58 59PSA API tests 60============= 61PSA API tests from https://github.com/ARM-software/psa-arch-tests use the same 62mechanism for SPE extension as the regression tests above utilising ``CONFIG_TFM_TEST_DIR`` option. 63PSA API tests are selected by the TEST_PSA_API variable. Enabling both regression tests and 64PSA API tests simultaneously is **not** supported. 65 66TF-M implements a wrapper CMake for PSA API tests as well. 67The PSA API test codes are located under **/tests_psa_arch** folder. 68 69Here is a brief description of the basic flow: 70Select one of the following test suites to be run. 71 72.. code-block:: bash 73 74 -DTEST_PSA_API=INTERNAL_TRUSTED_STORAGE 75 -DTEST_PSA_API=PROTECTED_STORAGE 76 -DTEST_PSA_API=STORAGE 77 -DTEST_PSA_API=CRYPTO 78 -DTEST_PSA_API=INITIAL_ATTESTATION 79 -DTEST_PSA_API=IPC 80 81Respectively for the corresponding service. For detailed information, 82please refer to **PSA Certified APIs Architecture Test Suite** section [2]_ 83in the documentation of **psa-arch-tests** repository. 84 85For example, to enable the PSA API tests for the Crypto service: 86 87.. code-block:: bash 88 89 cd </tf-m-tests/tests_psa_arch folder> 90 cmake -S spe -B build_spe -DTFM_PLATFORM=arm/mps2/an521 -DCONFIG_TFM_SOURCE_PATH=<TF-M source dir> 91 -DTEST_PSA_API=CRYPTO 92 cmake --build build_spe -- install 93 94 cmake -S . -B build_test -DCONFIG_SPE_PATH=<Absolute path to>/build_spe/api_ns 95 cmake --build build_test 96 97********* 98Reference 99********* 100 101.. [1] `tf-m-tests <https://git.trustedfirmware.org/TF-M/tf-m-tests.git/about/>`__ 102 103.. [2] `PSA Certified APIs Architecture Test Suite <https://github.com/ARM-software/psa-arch-tests/blob/v23.06_API1.5_ADAC_EAC/api-tests/dev_apis/README.md>`__ 104 105-------------- 106 107*Copyright (c) 2017-2024, Arm Limited. All rights reserved.* 108*Copyright (c) 2022, Cypress Semiconductor Corporation. All rights reserved.* 109