| Integration Tests |
| ===================== |
| The implementation of libc-project is unique because our public C header files |
| are generated using information from TableGen. Unit tests only exercise the |
| internal C++ implementations and don't ensure the headers were generated by the |
| build system. End to end testing ensures that, after building, the produced |
| library and headers are usable in the C runtime. A simple solution is to have |
| contributors write an integration test for each individual function as a C |
| program; however, this would place a large burden on contributors and duplicates |
| some effort from the unit tests. |
| |
| Instead we automate the generation of integration tests by modeling it from our |
| generated headers. These integration tests ensure that public facing symbols are |
| visible, that header files are generated as expected, and that each libc |
| function has the correct function prototype. |
| |
| The integration test cmake rules are located in ``test/src/CMakeLists.txt`` and |
| the generated integration test lives in |
| ``llvm/build/projects/libc/test/src/public_integration_test.cpp`` |