Files
playground/pda/tests/CMakeLists.txt
T
paulhorn db41258d16 feat: PDA als libpda + pda nach P1204R0
Ersetzt das Geruest (counter/notebook) durch ein echtes Beispiel und teilt
es in zwei eigenstaendige Projekte, wie P1204R0 es fuer Bibliothek plus
Programm verlangt.

libpda: textfile (C, Datei-I/O und Feld-Escaping), calculator
(Recursive-Descent-Parser mit std::expected), contact, editor, explorer.
Exportiert pda::pda ueber install(EXPORT) und ist per find_package(pda)
benutzbar.

pda: Shell ohne Ein-/Ausgabe (execute() gibt Text zurueck, deshalb ohne
Terminal testbar), REPL und Stapelbetrieb in main.cpp.

examples/consumer und tools/check-install.sh pruefen die Export-Kette
Ende-zu-Ende: installieren, dann ein fremdes Projekt dagegen bauen.

docs/CMAKE.md erklaert das Target-Modell, PUBLIC/PRIVATE/INTERFACE,
Generator-Ausdruecke, install/export und Symbolsichtbarkeit an diesem
Projekt.

71 Tests gruen unter Homebrew-clang 22, Apple clang und GCC 16, statisch
und shared, mit und ohne ASan/UBSan.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-30 16:39:35 +02:00

23 lines
844 B
CMake

# ---------------------------------------------------------------------------
# Integrationstests der Anwendung.
#
# Diese testen die Shell als Ganzes: eine Folge von Kommandos, wie ein
# Benutzer sie eintippen wuerde, und das Ergebnis am Ende. Kein Framework,
# Auskunft ueber den Exit-Code.
# ---------------------------------------------------------------------------
function(pda_add_integration_test name)
set(target "integration_${name}")
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${name}/driver.cpp")
message(WARNING "tests/${name}: keine driver.cpp gefunden")
return()
endif()
add_executable(${target} "${name}/driver.cpp")
target_link_libraries(${target} PRIVATE pda_shell pda_warnings)
add_test(NAME "integration.${name}" COMMAND ${target})
endfunction()
pda_add_integration_test(session)