blob: 0bf1f0ac7ed5e8fcad4f779214975e5188856e94 [file] [log] [blame]
Kevin Peng304e2682023-11-06 14:10:50 +08001###########
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-test)``
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 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.
20
21Regression Tests
22================
23For instructions on configuring, building and executing the regression tests
24please refer to the documentation in **tf-m-tests** repository (to be added).
25The regression test application is located under **/tests_reg** folder.
26It is recommended to build both SPE and NSPE from that folder.
27
28The basic commands for building the regression tests will be:
29
30.. code-block:: bash
31
32 cd </tf-m-tests/tests_reg>
33 cmake -S spe -B build_spe -DTFM_PLATFORM=arm/mps2/an521 -DCONFIG_TFM_SOURCE_PATH=<TF-M source dir>
34 -DTEST_S=ON -DTEST_NS=ON
35 cmake --build build_spe -- install
36
37 cmake -S . -B build_test -DCONFIG_SPE_PATH=<Absolute path to>/build_spe/api_ns
38 cmake --build build_test
39
40Instead of enable all the supported Secure (``TEST_S``) and NS (``TEST_NS`` tests, you can also
41enable individual test suites by using ``-DTEST_S_<SUITE>=ON`` or ``-DTEST_NS_<SUITE>=ON``.
42For the available test suites, refer to the ``default_s_test_config.cmake`` and
43``default_ns_test_config.cmake`` files in tf-m-tests repo.
44
45PSA API tests
46=============
47PSA API tests from https://github.com/ARM-software/psa-arch-tests use the same
48mechanism for SPE extension as the regression tests above utilising ``CONFIG_TFM_TEST_DIR`` option.
49PSA API tests are selected by the TEST_PSA_API variable. Enabling both regression tests and
50PSA API tests simultaneously is **not** supported.
51
52TF-M implements a wrapper CMake for PSA API tests as well.
53The PSA API test codes are located under **/tests_psa_arch** folder.
54
55Here is a brief description of the basic flow:
56There are 5 different TEST_PSA_API test suites to be run.
57
58.. code-block:: bash
59
60 -DTEST_PSA_API=INTERNAL_TRUSTED_STORAGE
61 -DTEST_PSA_API=PROTECTED_STORAGE
62 -DTEST_PSA_API=STORAGE
63 -DTEST_PSA_API=CRYPTO
64 -DTEST_PSA_API=INITIAL_ATTESTATION
65
66Respectively for the corresponding service. For example, to enable the PSA API
67tests for the Crypto service:
68
69.. code-block:: bash
70
71 cd </tf-m-tests/tests_psa_arch folder>
72 cmake -S spe -B build_spe -DTFM_PLATFORM=arm/mps2/an521 -DCONFIG_TFM_SOURCE_PATH=<TF-M source dir>
73 -DTEST_PSA_API=CRYPTO
74 cmake --build build_spe -- install
75
76 cmake -S . -B build_test -DCONFIG_SPE_PATH=<Absolute path to>/build_spe/api_ns
77 cmake --build build_test
78
79--------------
80
81*Copyright (c) 2017-2023, Arm Limited. All rights reserved.*
82*Copyright (c) 2022, Cypress Semiconductor Corporation. All rights reserved.*