|  | .. _libc_uefi_testing: | 
|  |  | 
|  | ========================== | 
|  | Testing the UEFI C library | 
|  | ========================== | 
|  |  | 
|  | .. contents:: Table of Contents | 
|  | :depth: 4 | 
|  | :local: | 
|  |  | 
|  | Testing infrastructure | 
|  | ====================== | 
|  |  | 
|  | The LLVM C library supports different kinds of :ref:`tests <build_and_test>` | 
|  | depending on the build configuration. The UEFI target is considered a full build | 
|  | and therefore provides all of its own utilities to build and run the generated | 
|  | tests. Currently UEFI supports two kinds of tests. | 
|  |  | 
|  | #. **Hermetic tests** - These are unit tests built with a test suite similar to | 
|  | Google's ``gtest`` infrastructure. These use the same infrastructure as unit | 
|  | tests except that the entire environment is self-hosted. | 
|  |  | 
|  | #. **Integration tests** - These are lightweight tests that simply call a | 
|  | ``main`` function and checks if it returns non-zero. | 
|  |  | 
|  | The UEFI target uses the same testing infrastructure as the other supported | 
|  | ``libc`` targets. We do this by treating UEFI as a standard hosted environment | 
|  | capable of launching a ``main`` function. This only requires us to run the | 
|  | tests in a UEFI environment. |