get_target_property(sonus_interface_libraries sonus INTERFACE_LINK_LIBRARIES)
if(sonus_interface_libraries AND sonus_interface_libraries MATCHES "miniaudio|OpenSSL|SQLite|raylib")
  message(FATAL_ERROR "sonus::sonus must not expose private audio or unrelated third-party libraries in its public link interface")
endif()

add_executable(sonus_test
  test.cpp
  render_snapshot.cpp
  control.cpp
  transport.cpp
  sequence.cpp
)
find_package(Threads REQUIRED)
target_include_directories(sonus_test PRIVATE
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${PROJECT_SOURCE_DIR}/src
)
target_link_libraries(sonus_test PRIVATE
  sonus::sonus
  Threads::Threads
)
target_compile_features(sonus_test PRIVATE cxx_std_23)
add_test(NAME sonus COMMAND sonus_test)
set_tests_properties(sonus PROPERTIES TIMEOUT 20)
add_custom_target(check
  COMMAND ${CMAKE_CTEST_COMMAND}
    --test-dir ${CMAKE_BINARY_DIR}
    -R ^sonus$
    --output-on-failure
    --timeout 20
  USES_TERMINAL
)
