mirror of
https://github.com/latentPrion/cppbessot.git
synced 2026-06-23 15:18:37 +00:00
36 lines
1.8 KiB
CMake
36 lines
1.8 KiB
CMake
include("${CMAKE_CURRENT_LIST_DIR}/../cmake/TestCommon.cmake")
|
|
|
|
cppbessot_test_require_real_pgsql_support()
|
|
cppbessot_test_require_var(CPPBESSOT_DB_PGSQL_PRODDEV_CONNSTR)
|
|
cppbessot_test_case_dir(_case_dir)
|
|
cppbessot_test_pgsql_isolated_connstr(_proddev_connstr "${CPPBESSOT_DB_PGSQL_PRODDEV_CONNSTR}" "proddev")
|
|
|
|
cppbessot_test_pgsql_reset_database("${_proddev_connstr}")
|
|
cppbessot_test_pgsql_exec(
|
|
"${_proddev_connstr}"
|
|
"CREATE TABLE sample(id TEXT PRIMARY KEY); INSERT INTO sample(id) VALUES ('stale-row');")
|
|
|
|
cppbessot_test_cache_string_setting(_proddev_setting "CPPBESSOT_DB_PGSQL_PRODDEV_CONNSTR" "${_proddev_connstr}")
|
|
cppbessot_test_write_project(
|
|
"${_case_dir}"
|
|
"set(DB_TARGET \"proddev\" CACHE STRING \"\")\n"
|
|
"set(DB_MIGRATE_WITH \"v1.0-v1.1\" CACHE STRING \"\")\n"
|
|
"set(DB_MIGRATE_PRODDEV_USE_STALE ON CACHE BOOL \"\")\n"
|
|
"${_proddev_setting}")
|
|
cppbessot_test_add_schema("${_case_dir}" "v1.1")
|
|
cppbessot_test_add_sql_file("${_case_dir}/db/migrations/v1.0-v1.1/postgre/01-migrate.sql"
|
|
"ALTER TABLE sample ADD COLUMN note TEXT;\n"
|
|
"UPDATE sample SET note = 'stale' WHERE id = 'stale-row';\n")
|
|
|
|
cppbessot_test_configure_project("${_case_dir}" "${_case_dir}/build" _cfg_result _cfg_stdout _cfg_stderr)
|
|
cppbessot_test_assert_success("${_cfg_result}" "${_cfg_stderr}" "fixture configure")
|
|
cppbessot_test_build_target("${_case_dir}/build" "db_migrate" _build_result _build_stdout _build_stderr)
|
|
cppbessot_test_assert_success("${_build_result}" "${_build_stderr}" "db_migrate pgsql proddev stale real")
|
|
|
|
cppbessot_test_pgsql_query_scalar(_note "${_proddev_connstr}" "SELECT note FROM sample WHERE id='stale-row';")
|
|
if(NOT "${_note}" STREQUAL "stale")
|
|
message(FATAL_ERROR "Expected PostgreSQL stale proddev migration to update note column, got `${_note}`.")
|
|
endif()
|
|
|
|
cppbessot_test_pgsql_drop_database("${_proddev_connstr}")
|