glove/tests/CMakeLists.txt
0xkite 09d34002a6
Merge PR #25 (guest channel layer) into PR #24 (wallet stack + Apple repairs)
Combine maintainer/wallet-status-and-apple-repairs (18e75af8) with
maintainer/guest-channel-layer (00d7c473) into a single validated
integration branch for Ghost deployment testing.

Merge resolution decisions:

- Apple container runtime (the known conflict zone) auto-merged
  textually and was verified semantically against both parents:
  the maintainer hard-disable survives (lifecycle_operational()
  returns false unconditionally, apple_container_session_runtime.hpp),
  the sampler/finalizer jthread lifecycle seam and the finalizer
  catch-all well-formed terminal state (a96ab1e) are intact, and
  null_terminated=false strict_json_options is preserved. Velinus's
  observation-intent integration lands adapted on the repaired base:
  prepare_observation_service is only reachable from start(), which
  denies before side effects when the lifecycle is disabled, so the
  observation service never constructs on the disabled Apple path.
  The gated test from PR #25 (every control method refuses before
  side effect; record counts unchanged) survives.
- GLOVE_GUEST_OBSERVATION_* env names kept; observation socket/token
  volumes still mount only when observation_service->active().
- guest_channel layer, host-registered schema admission
  (channel_descriptor/channel_host), SO_PEERCRED/LOCAL_PEERCRED, LRU
  replay cache, bounded retry, fail-closed recovery, and
  channel_identifier_grammar.hpp land as-is; session_registry files
  did not conflict with PR #24's side.
- Wallet status files: PR #25's delta did not touch them, so the
  harness-neutral renames (wallet_status_projection_channel) stand
  unchanged.

Validation (umask 0022): dev/asan/tsan presets build clean and
CTest 80/80 each (control_apple_container_session_runtime
env-gated/skipped as expected); clang-format (llvm@22) applied to
changed sources; git diff --check clean. No push.
2026-08-29 16:23:23 -06:00

752 lines
35 KiB
CMake

add_executable(smoke_test smoke_test.cpp)
target_link_libraries(smoke_test PRIVATE glove_kernel)
add_test(NAME smoke COMMAND smoke_test)
add_executable(host_config_test host/config_test.cpp)
target_link_libraries(host_config_test PRIVATE glove_host glove_supervisor)
add_test(NAME host_config COMMAND host_config_test)
add_executable(host_daemon_test host/daemon_test.cpp)
target_link_libraries(host_daemon_test PRIVATE glove_host)
add_test(NAME host_daemon COMMAND host_daemon_test)
add_executable(host_remote_backend_test host/remote_backend_test.cpp)
target_link_libraries(host_remote_backend_test PRIVATE glove_host)
add_test(NAME host_remote_backend COMMAND host_remote_backend_test)
add_executable(host_runtime_policy_test host/runtime_policy_test.cpp)
target_link_libraries(host_runtime_policy_test PRIVATE glove_host glove_supervisor)
add_test(NAME host_runtime_policy COMMAND host_runtime_policy_test)
add_executable(host_operator_experience_test host/operator_experience_test.cpp)
target_link_libraries(host_operator_experience_test PRIVATE glove_host)
add_test(NAME host_operator_experience COMMAND host_operator_experience_test)
add_executable(host_onboarding_plan_test host/onboarding_plan_test.cpp)
target_link_libraries(host_onboarding_plan_test PRIVATE glove_host)
add_test(NAME host_onboarding_plan COMMAND host_onboarding_plan_test)
add_executable(host_onboarding_cli_test host/onboarding_cli_test.cpp)
target_link_libraries(host_onboarding_cli_test PRIVATE glove_host)
add_dependencies(host_onboarding_cli_test glove)
add_test(NAME host_onboarding_cli COMMAND host_onboarding_cli_test)
set_tests_properties(
host_onboarding_cli
PROPERTIES ENVIRONMENT "GLOVE_BIN=$<TARGET_FILE:glove>"
)
add_executable(thread_smoke_test thread_smoke_test.cpp)
target_link_libraries(thread_smoke_test PRIVATE glove_kernel)
add_test(NAME thread_smoke COMMAND thread_smoke_test)
add_executable(mcp_transport_round_trip_test mcp/transport_round_trip_test.cpp)
target_link_libraries(mcp_transport_round_trip_test PRIVATE glove_kernel)
add_test(NAME mcp_transport_round_trip COMMAND mcp_transport_round_trip_test)
add_executable(mcp_codec_test mcp/codec_test.cpp)
target_link_libraries(mcp_codec_test PRIVATE glove_kernel glaze::glaze)
target_include_directories(mcp_codec_test PRIVATE $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>)
add_test(NAME mcp_codec COMMAND mcp_codec_test)
add_executable(mcp_jsonrpc_client_test mcp/jsonrpc_client_test.cpp)
target_link_libraries(mcp_jsonrpc_client_test PRIVATE glove_kernel glaze::glaze)
target_include_directories(mcp_jsonrpc_client_test PRIVATE $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>)
add_test(NAME mcp_jsonrpc_client COMMAND mcp_jsonrpc_client_test)
add_executable(mcp_initialize_test mcp/initialize_test.cpp)
target_link_libraries(mcp_initialize_test PRIVATE glove_kernel)
add_test(NAME mcp_initialize COMMAND mcp_initialize_test)
add_executable(mcp_lazy_init_test mcp/lazy_init_test.cpp)
target_link_libraries(mcp_lazy_init_test PRIVATE glove_kernel glaze::glaze)
target_include_directories(mcp_lazy_init_test PRIVATE $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>)
add_test(NAME mcp_lazy_init COMMAND mcp_lazy_init_test)
add_executable(mcp_protocol_version_test mcp/protocol_version_test.cpp)
target_link_libraries(mcp_protocol_version_test PRIVATE glove_kernel glaze::glaze)
target_include_directories(mcp_protocol_version_test PRIVATE $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>)
add_test(NAME mcp_protocol_version COMMAND mcp_protocol_version_test)
add_executable(policy_engine_test policy/engine_test.cpp)
target_link_libraries(policy_engine_test PRIVATE glove_kernel)
add_test(NAME policy_engine COMMAND policy_engine_test)
add_executable(policy_client_test policy/policy_client_test.cpp)
target_link_libraries(policy_client_test PRIVATE glove_kernel)
add_test(NAME policy_client COMMAND policy_client_test)
add_executable(policy_jsonpath_engine_test policy/jsonpath_engine_test.cpp)
target_link_libraries(policy_jsonpath_engine_test PRIVATE glove_kernel)
add_test(NAME policy_jsonpath_engine COMMAND policy_jsonpath_engine_test)
add_executable(net_egress_proxy_test net/egress_proxy_test.cpp)
target_link_libraries(net_egress_proxy_test PRIVATE glove_kernel)
add_test(NAME net_egress_proxy COMMAND net_egress_proxy_test)
set_tests_properties(net_egress_proxy PROPERTIES TIMEOUT 30)
add_executable(audit_client_test audit/audit_client_test.cpp)
target_link_libraries(audit_client_test PRIVATE glove_kernel)
add_test(NAME audit_client COMMAND audit_client_test)
add_executable(audit_jsonl_sink_test audit/jsonl_sink_test.cpp)
target_link_libraries(audit_jsonl_sink_test PRIVATE glove_kernel)
add_test(NAME audit_jsonl_sink COMMAND audit_jsonl_sink_test)
add_executable(container_profile_test container/profile_test.cpp)
target_link_libraries(container_profile_test PRIVATE glove_kernel)
add_test(NAME container_profile COMMAND container_profile_test)
add_executable(container_resource_monitor_test container/resource_monitor_test.cpp)
target_link_libraries(container_resource_monitor_test PRIVATE glove_container)
target_include_directories(container_resource_monitor_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container>
)
add_test(NAME container_resource_monitor COMMAND container_resource_monitor_test)
set_tests_properties(container_resource_monitor PROPERTIES TIMEOUT 10)
add_executable(container_output_pump_test container/output_pump_test.cpp)
target_link_libraries(container_output_pump_test PRIVATE glove_container)
target_include_directories(container_output_pump_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container>
)
add_test(NAME container_output_pump COMMAND container_output_pump_test)
set_tests_properties(container_output_pump PROPERTIES TIMEOUT 10)
add_executable(container_sha256_test container/sha256_test.cpp)
target_link_libraries(container_sha256_test PRIVATE glove_container)
target_include_directories(container_sha256_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container>
)
add_test(NAME container_sha256 COMMAND container_sha256_test)
add_executable(container_receipt_chain_test container/receipt_chain_test.cpp)
target_link_libraries(container_receipt_chain_test PRIVATE glove_container)
add_test(NAME container_receipt_chain COMMAND container_receipt_chain_test)
add_executable(container_receipt_journal_test container/receipt_journal_test.cpp)
target_link_libraries(container_receipt_journal_test PRIVATE glove_container)
add_test(NAME container_receipt_journal COMMAND container_receipt_journal_test)
add_executable(container_receipt_producer_test container/receipt_producer_test.cpp)
target_link_libraries(container_receipt_producer_test PRIVATE glove_container)
add_test(NAME container_receipt_producer COMMAND container_receipt_producer_test)
add_executable(container_refinement_protocol_test container/refinement_protocol_test.cpp)
target_link_libraries(container_refinement_protocol_test PRIVATE glove_container)
add_test(NAME container_refinement_protocol COMMAND container_refinement_protocol_test)
add_executable(control_receipt_audit_protocol_test control/receipt_audit_protocol_test.cpp)
target_link_libraries(control_receipt_audit_protocol_test PRIVATE glove_control glaze::glaze)
target_include_directories(control_receipt_audit_protocol_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(NAME control_receipt_audit_protocol COMMAND control_receipt_audit_protocol_test)
add_executable(control_remote_protocol_test control/remote_protocol_test.cpp)
target_link_libraries(control_remote_protocol_test PRIVATE glove_control)
add_test(NAME control_remote_protocol COMMAND control_remote_protocol_test)
add_executable(control_wallet_status_bridge_test control/wallet_status_bridge_test.cpp)
target_link_libraries(control_wallet_status_bridge_test PRIVATE glove_control)
add_test(NAME control_wallet_status_bridge COMMAND control_wallet_status_bridge_test)
set_tests_properties(control_wallet_status_bridge PROPERTIES TIMEOUT 10)
add_executable(
control_wallet_status_managed_session_test
control/wallet_status_managed_session_test.cpp
)
target_link_libraries(control_wallet_status_managed_session_test PRIVATE glove_control)
target_include_directories(control_wallet_status_managed_session_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(NAME control_wallet_status_managed_session COMMAND control_wallet_status_managed_session_test)
set_tests_properties(control_wallet_status_managed_session PROPERTIES TIMEOUT 10)
add_executable(
control_wallet_pi_status_adapter_test
control/wallet_pi_status_adapter_test.cpp
)
target_link_libraries(control_wallet_pi_status_adapter_test PRIVATE glove_control)
target_include_directories(control_wallet_pi_status_adapter_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(NAME control_wallet_pi_status_adapter COMMAND control_wallet_pi_status_adapter_test)
set_tests_properties(control_wallet_pi_status_adapter PROPERTIES TIMEOUT 10)
add_executable(control_remote_validation_test control/remote_validation_test.cpp)
target_link_libraries(control_remote_validation_test PRIVATE glove_control)
add_test(NAME control_remote_validation COMMAND control_remote_validation_test)
add_executable(control_remote_exec_test control/remote_exec_test.cpp)
target_compile_definitions(control_remote_exec_test PRIVATE
GLOVE_REMOTE_EXEC_BIN="$<TARGET_FILE:glove-remote-exec>"
)
add_dependencies(control_remote_exec_test glove-remote-exec)
add_test(NAME control_remote_exec COMMAND control_remote_exec_test)
add_executable(
control_remote_validation_executor_test
control/remote_validation_executor_test.cpp
)
target_link_libraries(control_remote_validation_executor_test PRIVATE glove_control)
target_include_directories(control_remote_validation_executor_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(NAME control_remote_validation_executor COMMAND control_remote_validation_executor_test)
set_tests_properties(control_remote_validation_executor PROPERTIES TIMEOUT 15)
add_executable(control_remote_session_runtime_test control/remote_session_runtime_test.cpp)
target_link_libraries(control_remote_session_runtime_test PRIVATE glove_control)
target_include_directories(control_remote_session_runtime_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(NAME control_remote_session_runtime COMMAND control_remote_session_runtime_test)
add_executable(control_session_registry_test control/session_registry_test.cpp)
target_link_libraries(control_session_registry_test PRIVATE glove_control glaze::glaze)
target_include_directories(control_session_registry_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(NAME control_session_registry COMMAND control_session_registry_test)
add_executable(
control_observation_intent_unix_server_test
control/observation_intent_unix_server_test.cpp
)
target_link_libraries(
control_observation_intent_unix_server_test
PRIVATE glove_control glaze::glaze
)
target_include_directories(control_observation_intent_unix_server_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(
NAME control_observation_intent_unix_server
COMMAND control_observation_intent_unix_server_test
)
set_tests_properties(control_observation_intent_unix_server PROPERTIES TIMEOUT 15)
if(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
add_executable(
control_receipt_audit_server_fixture
control/receipt_audit_server_fixture.cpp
)
target_link_libraries(control_receipt_audit_server_fixture PRIVATE glove_control)
add_executable(gloved_lifecycle_test control/gloved_lifecycle_test.cpp)
target_link_libraries(gloved_lifecycle_test PRIVATE glove_control glove_host glaze::glaze)
target_include_directories(gloved_lifecycle_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
target_compile_definitions(gloved_lifecycle_test PRIVATE
GLOVED_BIN="$<TARGET_FILE:gloved>"
)
add_dependencies(gloved_lifecycle_test gloved)
add_test(NAME gloved_lifecycle COMMAND gloved_lifecycle_test)
set_tests_properties(gloved_lifecycle PROPERTIES TIMEOUT 15)
if(GLOVE_ENABLE_SAGE_INTEROP_TEST)
find_program(GLOVE_CARGO_EXECUTABLE NAMES cargo REQUIRED)
set(GLOVE_SAGE_MANIFEST "${CMAKE_SOURCE_DIR}/../sage/Cargo.toml")
if(NOT EXISTS "${GLOVE_SAGE_MANIFEST}")
message(FATAL_ERROR
"GLOVE_ENABLE_SAGE_INTEROP_TEST requires ../sage/Cargo.toml"
)
endif()
add_test(
NAME sage_receipt_audit_interop
COMMAND
"${CMAKE_COMMAND}" -E env
"GLOVE_RECEIPT_SERVER_FIXTURE=$<TARGET_FILE:control_receipt_audit_server_fixture>"
"${GLOVE_CARGO_EXECUTABLE}" test
--manifest-path "${GLOVE_SAGE_MANIFEST}"
-p sage-daemon --lib
sage_client_interoperates_with_the_glove_receipt_server
-- --ignored
)
set_tests_properties(sage_receipt_audit_interop PROPERTIES TIMEOUT 600)
endif()
endif()
add_executable(supervisor_path_alias_test supervisor/path_alias_test.cpp)
target_link_libraries(supervisor_path_alias_test PRIVATE glove_kernel)
add_test(NAME supervisor_path_alias COMMAND supervisor_path_alias_test)
add_executable(supervisor_path_exposure_test supervisor/path_exposure_test.cpp)
target_link_libraries(supervisor_path_exposure_test PRIVATE glove_supervisor)
add_test(NAME supervisor_path_exposure COMMAND supervisor_path_exposure_test)
add_executable(supervisor_path_exposure_journal_test supervisor/path_exposure_journal_test.cpp)
target_link_libraries(supervisor_path_exposure_journal_test PRIVATE glove_supervisor)
add_test(NAME supervisor_path_exposure_journal COMMAND supervisor_path_exposure_journal_test)
add_executable(supervisor_session_plan_test supervisor/session_plan_test.cpp)
target_link_libraries(supervisor_session_plan_test PRIVATE glove_supervisor)
add_test(NAME supervisor_session_plan COMMAND supervisor_session_plan_test)
add_executable(
supervisor_cloudflare_os_policy_test
supervisor/cloudflare_os_policy_test.cpp
)
target_link_libraries(supervisor_cloudflare_os_policy_test PRIVATE glove_supervisor)
target_compile_definitions(supervisor_cloudflare_os_policy_test PRIVATE
CLOUDFLARE_OS_POLICY_FIXTURE="${CMAKE_CURRENT_SOURCE_DIR}/fixtures/cloudflare-os-session-policy.json"
)
add_test(NAME supervisor_cloudflare_os_policy COMMAND supervisor_cloudflare_os_policy_test)
add_executable(
supervisor_refinement_session_plan_test
supervisor/refinement_session_plan_test.cpp
)
target_link_libraries(supervisor_refinement_session_plan_test PRIVATE glove_supervisor)
add_test(
NAME supervisor_refinement_session_plan
COMMAND supervisor_refinement_session_plan_test
)
add_executable(supervisor_library_bundle_test supervisor/library_bundle_test.cpp)
target_link_libraries(supervisor_library_bundle_test PRIVATE glove_supervisor)
add_test(NAME supervisor_library_bundle COMMAND supervisor_library_bundle_test)
add_executable(supervisor_harness_adoption_test supervisor/harness_adoption_test.cpp)
target_link_libraries(supervisor_harness_adoption_test PRIVATE glove_host glove_supervisor)
add_test(NAME supervisor_harness_adoption COMMAND supervisor_harness_adoption_test)
add_executable(supervisor_change_manifest_test supervisor/change_manifest_test.cpp)
target_link_libraries(supervisor_change_manifest_test PRIVATE glove_supervisor)
add_test(NAME supervisor_change_manifest COMMAND supervisor_change_manifest_test)
add_executable(
supervisor_change_apply_authorization_test
supervisor/change_apply_authorization_test.cpp
)
target_link_libraries(supervisor_change_apply_authorization_test PRIVATE glove_supervisor)
add_test(
NAME supervisor_change_apply_authorization
COMMAND supervisor_change_apply_authorization_test
)
add_executable(supervisor_change_apply_journal_test supervisor/change_apply_journal_test.cpp)
target_link_libraries(supervisor_change_apply_journal_test PRIVATE glove_supervisor)
add_test(NAME supervisor_change_apply_journal COMMAND supervisor_change_apply_journal_test)
add_executable(
supervisor_change_apply_trust_policy_test
supervisor/change_apply_trust_policy_test.cpp
)
target_link_libraries(supervisor_change_apply_trust_policy_test PRIVATE glove_supervisor)
add_test(
NAME supervisor_change_apply_trust_policy
COMMAND supervisor_change_apply_trust_policy_test
)
add_executable(supervisor_change_apply_recovery_test supervisor/change_apply_recovery_test.cpp)
target_link_libraries(supervisor_change_apply_recovery_test PRIVATE glove_supervisor)
add_test(NAME supervisor_change_apply_recovery COMMAND supervisor_change_apply_recovery_test)
add_executable(supervisor_change_apply_gate_test supervisor/change_apply_gate_test.cpp)
target_link_libraries(supervisor_change_apply_gate_test PRIVATE glove_supervisor)
add_test(NAME supervisor_change_apply_gate COMMAND supervisor_change_apply_gate_test)
add_executable(supervisor_change_apply_exchange_test supervisor/change_apply_exchange_test.cpp)
target_link_libraries(supervisor_change_apply_exchange_test PRIVATE glove_supervisor)
add_test(NAME supervisor_change_apply_exchange COMMAND supervisor_change_apply_exchange_test)
add_executable(supervisor_change_apply_receipt_test supervisor/change_apply_receipt_test.cpp)
target_link_libraries(supervisor_change_apply_receipt_test PRIVATE glove_supervisor)
add_test(NAME supervisor_change_apply_receipt COMMAND supervisor_change_apply_receipt_test)
add_executable(kernel_registry_test kernel/registry_test.cpp)
target_link_libraries(kernel_registry_test PRIVATE glove_kernel)
add_test(NAME kernel_registry COMMAND kernel_registry_test)
add_executable(kernel_server_test kernel/server_test.cpp)
target_link_libraries(kernel_server_test PRIVATE glove_kernel)
target_include_directories(kernel_server_test PRIVATE $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>)
add_test(NAME kernel_server COMMAND kernel_server_test)
add_executable(kernel_mcp_extension_test kernel/mcp_extension_test.cpp)
target_link_libraries(kernel_mcp_extension_test PRIVATE glove_kernel)
add_test(NAME kernel_mcp_extension COMMAND kernel_mcp_extension_test)
if(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
add_executable(
mcp_stdio_transport_process_tree_test
mcp/stdio_transport_process_tree_test.cpp
)
target_link_libraries(mcp_stdio_transport_process_tree_test PRIVATE glove_kernel)
add_test(NAME mcp_stdio_transport_process_tree COMMAND mcp_stdio_transport_process_tree_test)
set_tests_properties(mcp_stdio_transport_process_tree PROPERTIES TIMEOUT 10)
add_executable(container_spawner_test container/spawner_test.cpp)
target_link_libraries(container_spawner_test PRIVATE glove_kernel)
target_compile_definitions(container_spawner_test PRIVATE
GLOVE_SYNTHETIC_AGENT_BIN="$<TARGET_FILE:glove_synthetic_agent>")
add_dependencies(container_spawner_test glove_synthetic_agent)
add_test(NAME container_spawner COMMAND container_spawner_test)
set_tests_properties(container_spawner PROPERTIES TIMEOUT 30)
add_executable(glove_exec_perimeter_test run/glove_exec_perimeter_test.cpp)
target_link_libraries(glove_exec_perimeter_test PRIVATE glove_kernel)
target_compile_definitions(glove_exec_perimeter_test PRIVATE
GLOVE_BIN="$<TARGET_FILE:glove>")
add_dependencies(glove_exec_perimeter_test glove)
add_test(NAME glove_exec_perimeter COMMAND glove_exec_perimeter_test)
set_tests_properties(glove_exec_perimeter PROPERTIES TIMEOUT 30)
endif()
if(APPLE)
add_executable(
container_linux_pty_session_channel_test
container/linux_pty_session_channel_test.cpp
)
target_link_libraries(container_linux_pty_session_channel_test PRIVATE glove_container)
target_include_directories(container_linux_pty_session_channel_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container/linux>
)
add_test(
NAME container_linux_pty_session_channel
COMMAND container_linux_pty_session_channel_test
)
set_tests_properties(container_linux_pty_session_channel PROPERTIES TIMEOUT 10)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
add_executable(
control_linux_process_identity_test
control/linux_process_identity_test.cpp
)
target_link_libraries(control_linux_process_identity_test PRIVATE glove_control)
target_include_directories(control_linux_process_identity_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(NAME control_linux_process_identity COMMAND control_linux_process_identity_test)
add_executable(
control_receipt_audit_unix_server_test
control/receipt_audit_unix_server_test.cpp
)
target_link_libraries(
control_receipt_audit_unix_server_test
PRIVATE glove_control glaze::glaze
)
target_include_directories(control_receipt_audit_unix_server_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(
NAME control_receipt_audit_unix_server
COMMAND control_receipt_audit_unix_server_test
)
set_tests_properties(control_receipt_audit_unix_server PROPERTIES TIMEOUT 10)
add_executable(
container_linux_launch_binding_test
container/linux_launch_binding_test.cpp
)
target_link_libraries(container_linux_launch_binding_test PRIVATE glove_container)
target_include_directories(container_linux_launch_binding_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container/linux>
)
add_test(NAME container_linux_launch_binding COMMAND container_linux_launch_binding_test)
add_executable(
container_linux_pty_session_channel_test
container/linux_pty_session_channel_test.cpp
)
target_link_libraries(container_linux_pty_session_channel_test PRIVATE glove_container)
target_include_directories(container_linux_pty_session_channel_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container/linux>
)
add_test(
NAME container_linux_pty_session_channel
COMMAND container_linux_pty_session_channel_test
)
set_tests_properties(container_linux_pty_session_channel PROPERTIES TIMEOUT 10)
add_executable(
supervisor_linux_ephemeral_copy_test
supervisor/linux_ephemeral_copy_test.cpp
)
target_link_libraries(supervisor_linux_ephemeral_copy_test PRIVATE glove_supervisor)
add_test(NAME supervisor_linux_ephemeral_copy COMMAND supervisor_linux_ephemeral_copy_test)
set_tests_properties(supervisor_linux_ephemeral_copy PROPERTIES
TIMEOUT 30
SKIP_RETURN_CODE 77
)
add_executable(
supervisor_linux_session_filesystem_test
supervisor/linux_session_filesystem_test.cpp
)
target_link_libraries(supervisor_linux_session_filesystem_test PRIVATE glove_supervisor)
add_test(NAME supervisor_linux_session_filesystem COMMAND supervisor_linux_session_filesystem_test)
set_tests_properties(supervisor_linux_session_filesystem PROPERTIES
TIMEOUT 30
SKIP_RETURN_CODE 77
)
# Deliberately exclude sanitizer runtimes: pids.max counts threads, so the
# pressure shape must not change between ASan, TSan, and release lanes.
add_executable(glove_cgroup_probe_agent container/cgroup_probe_agent.cpp)
target_compile_features(glove_cgroup_probe_agent PRIVATE cxx_std_23)
glove_set_warnings(glove_cgroup_probe_agent)
add_executable(container_linux_cgroup_v2_test container/linux_cgroup_v2_test.cpp)
target_link_libraries(container_linux_cgroup_v2_test PRIVATE glove_container)
target_include_directories(container_linux_cgroup_v2_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container/linux>
)
target_compile_definitions(container_linux_cgroup_v2_test PRIVATE
GLOVE_CGROUP_PROBE_AGENT_BIN="$<TARGET_FILE:glove_cgroup_probe_agent>"
)
add_dependencies(container_linux_cgroup_v2_test glove_cgroup_probe_agent)
add_test(NAME container_linux_cgroup_v2 COMMAND container_linux_cgroup_v2_test)
set_tests_properties(container_linux_cgroup_v2 PROPERTIES
TIMEOUT 30
SKIP_RETURN_CODE 77
)
add_executable(
container_linux_resource_lifecycle_test
container/linux_resource_lifecycle_test.cpp
)
target_link_libraries(container_linux_resource_lifecycle_test PRIVATE glove_container)
target_include_directories(container_linux_resource_lifecycle_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container/linux>
)
target_compile_definitions(container_linux_resource_lifecycle_test PRIVATE
GLOVE_CGROUP_PROBE_AGENT_BIN="$<TARGET_FILE:glove_cgroup_probe_agent>"
)
add_dependencies(container_linux_resource_lifecycle_test glove_cgroup_probe_agent)
add_test(NAME container_linux_resource_lifecycle COMMAND container_linux_resource_lifecycle_test)
set_tests_properties(container_linux_resource_lifecycle PROPERTIES
TIMEOUT 30
SKIP_RETURN_CODE 77
)
add_executable(
container_linux_managed_session_test
container/linux_managed_session_test.cpp
)
target_link_libraries(
container_linux_managed_session_test
PRIVATE glove_container glove_host
)
target_include_directories(container_linux_managed_session_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container/linux>
)
add_test(NAME container_linux_managed_session COMMAND container_linux_managed_session_test)
set_tests_properties(container_linux_managed_session PROPERTIES
TIMEOUT 30
SKIP_RETURN_CODE 77
)
add_test(
NAME container_linux_native_harness_matrix
COMMAND container_linux_managed_session_test --native-harness-matrix
)
set_tests_properties(container_linux_native_harness_matrix PROPERTIES
TIMEOUT 120
SKIP_RETURN_CODE 77
)
add_executable(
control_linux_session_preparation_test
control/linux_session_preparation_test.cpp
)
target_link_libraries(control_linux_session_preparation_test PRIVATE glove_control)
target_include_directories(control_linux_session_preparation_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container/linux>
)
add_test(
NAME control_linux_session_preparation
COMMAND control_linux_session_preparation_test
)
set_tests_properties(control_linux_session_preparation PROPERTIES
TIMEOUT 30
SKIP_RETURN_CODE 77
)
add_executable(
control_linux_session_executor_test
control/linux_session_executor_test.cpp
)
target_link_libraries(
control_linux_session_executor_test
PRIVATE glove_control glaze::glaze
)
target_include_directories(control_linux_session_executor_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/container/linux>
)
add_test(
NAME control_linux_session_executor
COMMAND control_linux_session_executor_test
)
set_tests_properties(control_linux_session_executor PROPERTIES
TIMEOUT 30
SKIP_RETURN_CODE 77
)
# Stage 3 (Linux): `glove exec` clone-child stdio-passthrough contain path.
# Needs the privileged clone3 + pivot_root environment.
add_executable(container_linux_exec_test container/linux_exec_test.cpp)
target_link_libraries(container_linux_exec_test PRIVATE glove_kernel)
add_test(NAME container_linux_exec COMMAND container_linux_exec_test)
set_tests_properties(container_linux_exec PROPERTIES TIMEOUT 30)
endif()
add_executable(reflect_codegen_availability_test reflect/codegen_availability_test.cpp)
target_link_libraries(reflect_codegen_availability_test PRIVATE glove_kernel)
add_test(NAME reflect_codegen_availability COMMAND reflect_codegen_availability_test)
if(APPLE)
add_executable(
control_apple_container_session_runtime_test
control/apple_container_session_runtime_test.cpp
)
target_link_libraries(
control_apple_container_session_runtime_test
PRIVATE glove_control
)
target_include_directories(control_apple_container_session_runtime_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(
NAME control_apple_container_session_runtime
COMMAND control_apple_container_session_runtime_test
)
set_tests_properties(control_apple_container_session_runtime PROPERTIES
TIMEOUT 60
SKIP_RETURN_CODE 77
)
add_executable(
control_apple_container_unavailable_test
control/apple_container_unavailable_test.cpp
)
target_link_libraries(control_apple_container_unavailable_test PRIVATE glove_control)
target_include_directories(control_apple_container_unavailable_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/control>
)
add_test(
NAME control_apple_container_unavailable
COMMAND control_apple_container_unavailable_test
)
set_tests_properties(control_apple_container_unavailable PROPERTIES TIMEOUT 30)
add_executable(mcp_stdio_transport_test mcp/stdio_transport_test.cpp)
target_link_libraries(mcp_stdio_transport_test PRIVATE glove_kernel)
add_test(NAME mcp_stdio_transport COMMAND mcp_stdio_transport_test)
# Stage 1: the spawner contains an arbitrary binary via SBPL (writes outside
# the workspace denied, inside allowed). macOS-only (sandbox-exec).
add_executable(container_macos_sandbox_test container/macos_sandbox_test.cpp)
target_link_libraries(container_macos_sandbox_test PRIVATE glove_kernel)
add_test(NAME container_macos_sandbox COMMAND container_macos_sandbox_test)
set_tests_properties(container_macos_sandbox PROPERTIES TIMEOUT 30)
# Stage 3: `glove exec` stdio-passthrough contain path (HOME→workspace,
# writes outside denied). macOS-only.
add_executable(container_macos_exec_test container/macos_exec_test.cpp)
target_link_libraries(container_macos_exec_test PRIVATE glove_kernel)
add_test(NAME container_macos_exec COMMAND container_macos_exec_test)
set_tests_properties(container_macos_exec PROPERTIES TIMEOUT 30)
# Policy-owned Codex discovery is tested against the locally installed
# harness when present. This is SBPL-only and intentionally not a claim of
# production resource enforcement on macOS.
add_executable(container_macos_codex_discovery_test container/macos_codex_discovery_test.cpp)
target_link_libraries(container_macos_codex_discovery_test PRIVATE glove_kernel glove_supervisor)
add_test(NAME container_macos_codex_discovery COMMAND container_macos_codex_discovery_test)
set_tests_properties(container_macos_codex_discovery PROPERTIES TIMEOUT 30 SKIP_RETURN_CODE 77)
add_executable(glove_exec_audit_test run/glove_exec_audit_test.cpp)
target_link_libraries(glove_exec_audit_test PRIVATE glove_kernel)
target_compile_definitions(glove_exec_audit_test PRIVATE
GLOVE_BIN="$<TARGET_FILE:glove>")
add_dependencies(glove_exec_audit_test glove)
add_test(NAME glove_exec_audit COMMAND glove_exec_audit_test)
set_tests_properties(glove_exec_audit PROPERTIES TIMEOUT 30)
endif()
# F1 regression: upstream pipe fds must be close-on-exec so they cannot leak
# into a later-spawned (contained) process. Cross-platform: needs /bin/sh,
# /bin/cat, and /dev/fd, all present on macOS and Linux.
if(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
add_executable(mcp_stdio_transport_cloexec_test mcp/stdio_transport_cloexec_test.cpp)
target_link_libraries(mcp_stdio_transport_cloexec_test PRIVATE glove_kernel)
add_test(NAME mcp_stdio_transport_cloexec COMMAND mcp_stdio_transport_cloexec_test)
set_tests_properties(mcp_stdio_transport_cloexec PROPERTIES TIMEOUT 30)
# F4 regression: an unbounded newline-less stream must be rejected, not
# buffered until OOM.
add_executable(mcp_stdio_transport_frame_cap_test mcp/stdio_transport_frame_cap_test.cpp)
target_link_libraries(mcp_stdio_transport_frame_cap_test PRIVATE glove_kernel)
add_test(NAME mcp_stdio_transport_frame_cap COMMAND mcp_stdio_transport_frame_cap_test)
set_tests_properties(mcp_stdio_transport_frame_cap PROPERTIES TIMEOUT 30)
endif()
# Real-server smoke against yams; opt-in based on yams being on PATH at
# configure time. Sanitizers may slow the spawn, so the test gets a generous
# 30s timeout.
find_program(GLOVE_YAMS_BIN yams)
if(GLOVE_YAMS_BIN)
add_executable(mcp_yams_smoke_test mcp/yams_smoke_test.cpp)
target_link_libraries(mcp_yams_smoke_test PRIVATE glove_kernel)
target_compile_definitions(mcp_yams_smoke_test PRIVATE
GLOVE_YAMS_BIN="${GLOVE_YAMS_BIN}")
add_test(NAME mcp_yams_smoke COMMAND mcp_yams_smoke_test)
set_tests_properties(mcp_yams_smoke PROPERTIES TIMEOUT 30)
add_executable(mcp_yams_call_test mcp/yams_call_test.cpp)
target_link_libraries(mcp_yams_call_test PRIVATE glove_kernel)
target_compile_definitions(mcp_yams_call_test PRIVATE
GLOVE_YAMS_BIN="${GLOVE_YAMS_BIN}")
add_test(NAME mcp_yams_call COMMAND mcp_yams_call_test)
set_tests_properties(mcp_yams_call PROPERTIES TIMEOUT 30)
add_executable(mcp_yams_annotations_test mcp/yams_annotations_test.cpp)
target_link_libraries(mcp_yams_annotations_test PRIVATE glove_kernel)
target_compile_definitions(mcp_yams_annotations_test PRIVATE
GLOVE_YAMS_BIN="${GLOVE_YAMS_BIN}")
add_test(NAME mcp_yams_annotations COMMAND mcp_yams_annotations_test)
set_tests_properties(mcp_yams_annotations PROPERTIES TIMEOUT 30)
add_executable(glove_run_yams_test run/glove_run_yams_test.cpp)
target_link_libraries(glove_run_yams_test PRIVATE glove_kernel)
target_compile_definitions(glove_run_yams_test PRIVATE
GLOVE_BIN="$<TARGET_FILE:glove>"
GLOVE_SYNTHETIC_AGENT_BIN="$<TARGET_FILE:glove_synthetic_agent>"
GLOVE_YAMS_BIN="${GLOVE_YAMS_BIN}")
add_dependencies(glove_run_yams_test glove glove_synthetic_agent)
add_test(NAME glove_run_yams COMMAND glove_run_yams_test)
set_tests_properties(glove_run_yams PROPERTIES TIMEOUT 30)
add_executable(glove_run_arg_rule_test run/glove_run_arg_rule_test.cpp)
target_link_libraries(glove_run_arg_rule_test PRIVATE glove_kernel)
target_compile_definitions(glove_run_arg_rule_test PRIVATE
GLOVE_BIN="$<TARGET_FILE:glove>"
GLOVE_SYNTHETIC_AGENT_BIN="$<TARGET_FILE:glove_synthetic_agent>"
GLOVE_YAMS_BIN="${GLOVE_YAMS_BIN}")
add_dependencies(glove_run_arg_rule_test glove glove_synthetic_agent)
add_test(NAME glove_run_arg_rule COMMAND glove_run_arg_rule_test)
set_tests_properties(glove_run_arg_rule PROPERTIES TIMEOUT 60)
message(STATUS " yams smoke/call/annotations : enabled (${GLOVE_YAMS_BIN})")
else()
message(STATUS " yams smoke test : disabled (yams not on PATH)")
endif()
# Pinned-supply-chain tool tests (network-free; exercises tools/fetch_workerd.py).
find_package(Python3 COMPONENTS Interpreter)
if(Python3_Interpreter_FOUND)
add_test(NAME workerd_supply_chain
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/test_fetch_workerd.py)
set_tests_properties(workerd_supply_chain PROPERTIES TIMEOUT 120)
message(STATUS " workerd supply-chain test: enabled")
else()
message(STATUS " workerd supply-chain test: disabled (python3 not found)")
endif()