Enum-only headers don't get generated so don't expect them

This commit is contained in:
2026-06-05 15:59:55 -04:00
parent 9487dd4778
commit f56b6b8989
5 changed files with 344 additions and 26 deletions
+1
View File
@@ -69,6 +69,7 @@ cppbessot_add_db_action_test(cppbessot_db_action_pgsql_migrate_order pgsql_migra
cppbessot_add_db_action_test(cppbessot_db_action_pgsql_stale_abort pgsql_stale_abort.cmake)
cppbessot_add_db_action_test(cppbessot_db_action_backfill_env_no_structural backfill_env_no_structural.cmake)
cppbessot_add_db_action_test(cppbessot_db_gen_migrations_policy migration_policy.cmake)
cppbessot_add_db_action_test(cppbessot_openapi_odb_table_filter openapi_odb_table_filter.cmake)
cppbessot_add_real_pgsql_db_action_test(
cppbessot_db_action_pgsql_createfrom_real
pgsql_createfrom_real.cmake
@@ -0,0 +1,131 @@
include("${CMAKE_CURRENT_LIST_DIR}/../cmake/TestCommon.cmake")
cppbessot_test_require_var(CPPBESSOT_TEST_BINARY_DIR)
cppbessot_test_require_var(CPPBESSOT_TEST_MODULE_SOURCE_DIR)
cppbessot_test_case_dir(_case_dir)
set(_fixture_root "${_case_dir}/openapi-filter")
cppbessot_test_reset_dir("${_fixture_root}")
file(MAKE_DIRECTORY "${_fixture_root}/db/v1.test/openapi")
cppbessot_test_write_file(
"${_fixture_root}/db/v1.test/openapi/openapi.yaml"
"openapi: 3.0.3\n"
"info:\n"
" title: cppbessot-openapi-filter-test\n"
" version: \"1.0.0\"\n"
"paths: {}\n"
"components:\n"
" schemas:\n"
" AgentPasswordHashType:\n"
" type: integer\n"
" format: int32\n"
" enum:\n"
" - 0\n"
" CredentialType:\n"
" type: integer\n"
" format: int32\n"
" enum:\n"
" - 0\n"
" Agents:\n"
" type: object\n"
" x-odbTable: Agents\n"
" properties:\n"
" id:\n"
" type: string\n"
" Roles:\n"
" type: object\n"
" x-odbTable: Roles\n"
" properties:\n"
" id:\n"
" type: string\n")
set(_module_cmake_dir "${CPPBESSOT_TEST_MODULE_SOURCE_DIR}/cmake")
set(PROJECT_SOURCE_DIR "${_fixture_root}")
set(CPPBESSOT_WORKDIR "db")
include("${_module_cmake_dir}/dbGenerationCommon.cmake")
cppbessot_get_openapi_schema_names(_all_schema_names "v1.test")
cppbessot_get_openapi_odb_table_schema_names(_odb_table_schema_names "v1.test")
cppbessot_get_expected_odb_outputs(
_sqlite_odb_sources
_pgsql_odb_sources
"v1.test")
cppbessot_get_expected_odb_model_headers(_odb_model_headers "v1.test")
cppbessot_get_expected_odb_outputs_all(_all_odb_sources "v1.test")
cppbessot_get_expected_odb_generation_artifacts(
_generation_model_headers
_generation_all_odb_sources
"v1.test")
set(_expected_all_schema_names
AgentPasswordHashType
CredentialType
Agents
Roles)
set(_expected_odb_table_schema_names
Agents
Roles)
function(_cppbessot_assert_same_list label actual expected)
list(SORT actual)
list(SORT expected)
if(NOT "${actual}" STREQUAL "${expected}")
message(FATAL_ERROR
"${label} mismatch.\n"
" expected: ${expected}\n"
" actual: ${actual}")
endif()
endfunction()
_cppbessot_assert_same_list(
"all schema names"
"${_all_schema_names}"
"${_expected_all_schema_names}")
_cppbessot_assert_same_list(
"x-odbTable schema names"
"${_odb_table_schema_names}"
"${_expected_odb_table_schema_names}")
_cppbessot_assert_same_list(
"generation artifact model headers"
"${_generation_model_headers}"
"${_odb_model_headers}")
_cppbessot_assert_same_list(
"generation artifact ODB sources"
"${_generation_all_odb_sources}"
"${_all_odb_sources}")
list(LENGTH _sqlite_odb_sources _sqlite_count)
list(LENGTH _pgsql_odb_sources _pgsql_count)
list(LENGTH _odb_model_headers _header_count)
list(LENGTH _all_odb_sources _all_odb_count)
if(NOT _sqlite_count EQUAL 2)
message(FATAL_ERROR
"Expected 2 sqlite ODB sources, got ${_sqlite_count}: ${_sqlite_odb_sources}")
endif()
if(NOT _pgsql_count EQUAL 2)
message(FATAL_ERROR
"Expected 2 postgre ODB sources, got ${_pgsql_count}: ${_pgsql_odb_sources}")
endif()
if(NOT _header_count EQUAL 2)
message(FATAL_ERROR
"Expected 2 ODB model headers, got ${_header_count}: ${_odb_model_headers}")
endif()
if(NOT _all_odb_count EQUAL 4)
message(FATAL_ERROR
"Expected 4 combined ODB sources, got ${_all_odb_count}: ${_all_odb_sources}")
endif()
foreach(_forbidden IN ITEMS
AgentPasswordHashType
CredentialType)
foreach(_backend IN ITEMS sqlite postgre)
set(_forbidden_source
"${_fixture_root}/db/v1.test/generated-odb-source/${_backend}/${_forbidden}-odb.cxx")
list(FIND _all_odb_sources "${_forbidden_source}" _forbidden_index)
if(NOT _forbidden_index EQUAL -1)
message(FATAL_ERROR
"Enum schema `${_forbidden}` must not produce `${_forbidden_source}`.")
endif()
endforeach()
endforeach()
@@ -30,5 +30,39 @@ execute_process(
cppbessot_test_assert_success("${_cfg_result}" "${_cfg_stderr}" "fixture configure")
cppbessot_test_build_target_dry_run("${_build_dir}" "cppBeSsotOpenAiModelGen" _model_result _model_stdout _model_stderr)
cppbessot_test_assert_success("${_model_result}" "${_model_stderr}" "dry-run openai model lib build")
cppbessot_test_build_target_dry_run("${_build_dir}" "cppBeSsotOdbSqlite" _odb_sqlite_result _odb_sqlite_stdout _odb_sqlite_stderr)
cppbessot_test_assert_success("${_odb_sqlite_result}" "${_odb_sqlite_stderr}" "dry-run sqlite ODB lib build")
cppbessot_test_build_target_dry_run("${_build_dir}" "cppBeSsotOdbPgSql" _odb_pgsql_result _odb_pgsql_stdout _odb_pgsql_stderr)
cppbessot_test_assert_success("${_odb_pgsql_result}" "${_odb_pgsql_stderr}" "dry-run postgre ODB lib build")
cppbessot_test_build_target_dry_run("${_build_dir}" "db_gen_migrations" _mig_result _mig_stdout _mig_stderr)
cppbessot_test_assert_success("${_mig_result}" "${_mig_stderr}" "dry-run migration generation build")
# v1.3 includes enum-only schemas that must not become ODB library sources.
set(_v13_build_dir "${CPPBESSOT_TEST_BINARY_DIR}/regression-build-v1.3")
cppbessot_test_reset_dir("${_v13_build_dir}")
execute_process(
COMMAND "${CMAKE_COMMAND}"
-S "${_repo_root}"
-B "${_v13_build_dir}"
-DDB_SCHEMA_DIR_TO_GENERATE=v1.3
-DDB_SCHEMA_DIR_MIGRATION_FROM=v1.2
-DDB_SCHEMA_DIR_MIGRATION_TO=v1.3
-DCPPBESSOT_AUTO_ENABLE=ON
-DCOURESILIENT_USE_LOCAL_CPPBESSOT_ENV=OFF
-DCPPBESSOT_DB_PGSQL_PROD_CONNSTR=
-DCPPBESSOT_DB_PGSQL_DEV_CONNSTR=
-DCPPBESSOT_DB_PGSQL_PRODDEV_CONNSTR=
-DCPPBESSOT_DB_PGSQL_TESTS_CONNSTR=
-DCPPBESSOT_DB_SQLITE_PROD_PATH=
-DCPPBESSOT_DB_SQLITE_DEV_PATH=
-DCPPBESSOT_DB_SQLITE_PRODDEV_PATH=
-DCPPBESSOT_DB_SQLITE_TESTS_PATH=
RESULT_VARIABLE _v13_cfg_result
OUTPUT_VARIABLE _v13_cfg_stdout
ERROR_VARIABLE _v13_cfg_stderr
)
cppbessot_test_assert_success("${_v13_cfg_result}" "${_v13_cfg_stderr}" "v1.3 fixture configure")
cppbessot_test_build_target_dry_run("${_v13_build_dir}" "cppBeSsotOdbSqlite" _v13_sqlite_result _v13_sqlite_stdout _v13_sqlite_stderr)
cppbessot_test_assert_success("${_v13_sqlite_result}" "${_v13_sqlite_stderr}" "v1.3 dry-run sqlite ODB lib build")
cppbessot_test_build_target_dry_run("${_v13_build_dir}" "cppBeSsotOdbPgSql" _v13_pgsql_result _v13_pgsql_stdout _v13_pgsql_stderr)
cppbessot_test_assert_success("${_v13_pgsql_result}" "${_v13_pgsql_stderr}" "v1.3 dry-run postgre ODB lib build")