| <!-- | 
 |      Copyright 2017, Data61, CSIRO (ABN 41 687 119 230) | 
 |  | 
 |      SPDX-License-Identifier: BSD-2-Clause | 
 | --> | 
 |  | 
 | This library is for running tests and generating test output in either | 
 | human readable or xml format. | 
 |  | 
 | SETTING UP LIBSEL4TEST WITH YOUR PROJECT | 
 |  | 
 | Choose the appropriate options for your build. If you are testing as | 
 | a human, you probably want both of those options disabled. If you are | 
 | testing as bamboo, you definitely want both turned on. | 
 |  | 
 | CONFIG_PRINT_XML | 
 |  | 
 | Bamboo requires XML. Humans can choose. | 
 |  | 
 | Stdout will be buffered to avoid corrupting the xml as JUnit output | 
 | requires that stdout be wrapped in an xml element, which is | 
 | what the above option does. Turn that option off (in Kconfig) whilst | 
 | debugging your test suite. This buffering will currently only apply to | 
 | printf. | 
 |  | 
 | USING LIBSEL4TEST | 
 |  | 
 | To use libsel4test: | 
 |  | 
 | 1. Provide a definition for struct env before including <sel4test/test.h>. | 
 | 2. Write tests with the prototype int (*test)(env_t env, void *args). Follow each test with the DEFINE_TEST macro. | 
 | 3. Provide a run_test function int (*run_test)(struct test_case *t) and call sel4test_run_tests. | 
 | 4. That's it. Each test will run in alphabetical order based on the test name. Tests will run forward and backward. | 
 |  | 
 | Example code: | 
 |  | 
 | struct env  { | 
 |     vka_t *vka; | 
 | } | 
 |  | 
 | #include <sel4test/test.h> | 
 |  | 
 | static env_t env; | 
 |  | 
 | env_t sel4test_get_env(void) { | 
 |     return env; | 
 | } | 
 |  | 
 | static int | 
 | a_test(env_t env, void *args) | 
 | { | 
 |     printf("Hello world"); | 
 |     test_check(0 == 0); | 
 | } | 
 | DEFINE_TEST(TEST000, "An example test", a_test) | 
 |  | 
 | int main(void) { | 
 |  | 
 |     /* allocator set up */ | 
 |     env->vka = init_allocator(); | 
 |  | 
 |     /* sel4test_basic_run_test just runs each test and passes in | 
 |        env returned by sel4test_get_env. | 
 |        You can define your own version of this if you need custom | 
 |        setup/teardown | 
 |     */ | 
 |     sel4test_run_tests("my test name", sel4test_basic_run_test); | 
 |  | 
 | } | 
 |  | 
 | CAVEATS | 
 |  | 
 | There is a tool for sanitizing the xml in tools/extract_results.py. | 
 |  | 
 | A NOTE ON ASSERT | 
 |  | 
 | When writing tests with this library you should usually avoid using assert and | 
 | always use 'sel4test_check' etc, which will test the case and report a test failure | 
 | without crashing the build. This permits other tests to keep running. | 
 |  | 
 | Use test_assert_fatal if your tests have reached a state where continuing the | 
 | test run is useless and you do not want to parse any test results from | 
 | the build at all. | 
 |  | 
 | It is good practice for failing tests to not break the build, but sometimes | 
 | it is necessary. |