[libc] Add documentation for integration tests.
[lldb.git] / libc / docs / integration_test.rst
1 Integration Tests
2 =====================
3 The implementation of libc-project is unique because our public C header files
4 are generated using information from TableGen. Unit tests only exercise the
5 internal C++ implementations and don't ensure the headers were generated by the
6 build system. End to end testing ensures that, after building, the produced
7 library and headers are usable in the C runtime. A simple solution is to have
8 contributors write an integration test for each individual function as a C
9 program; however, this would place a large burden on contributors and duplicates
10 some effort from the unit tests.
11
12 Instead we automate the generation of integration tests by modeling it from our
13 generated headers. These integration tests ensure that public facing symbols are
14 visible, that header files are generated as expected, and that each libc
15 function has the correct function prototype.
16
17 The integration test cmake rules are located in ``test/src/CMakeLists.txt`` and
18 the generated integration test lives in
19 ``llvm/build/projects/libc/test/src/public_integration_test.cpp``