set(H3_POSTGIS_REGRESS_FAST_TESTS
deprecations
postgis
rasters
rasters_aggregation
)
set(H3_POSTGIS_REGRESS_FULL_TESTS
${H3_POSTGIS_REGRESS_FAST_TESTS}
tile_coverage
)
# Cross-extension @extschema:<name>@ placeholders are supported on PG16+.
# Keep the dedicated separate-schema regression there; older versions use
# compatibility SQL generation without cross-extension placeholders.
if(PostgreSQL_VERSION_MAJOR VERSION_GREATER_EQUAL "16")
list(APPEND H3_POSTGIS_REGRESS_FAST_TESTS schemas)
list(APPEND H3_POSTGIS_REGRESS_FULL_TESTS schemas)
endif()
if(PostgreSQL_REGRESS)
if(WIN32)
set(H3_POSTGIS_REGRESS_PATH_SEP ";")
else()
set(H3_POSTGIS_REGRESS_PATH_SEP ":")
endif()
if(CMAKE_CONFIGURATION_TYPES)
set(H3_POSTGIS_REGRESS_TEMP_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/regress-postgresql-$<CONFIG>.conf")
set(H3_POSTGIS_REGRESS_TEMP_CONFIG_DYNAMIC_LIBRARY_PATH
"$<TARGET_FILE_DIR:postgresql_h3_postgis>${H3_POSTGIS_REGRESS_PATH_SEP}$<TARGET_FILE_DIR:postgresql_h3>${H3_POSTGIS_REGRESS_PATH_SEP}$libdir")
else()
set(H3_POSTGIS_REGRESS_TEMP_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/regress-postgresql.conf")
set(H3_POSTGIS_REGRESS_TEMP_CONFIG_DYNAMIC_LIBRARY_PATH
"${CMAKE_BINARY_DIR}/h3_postgis${H3_POSTGIS_REGRESS_PATH_SEP}${CMAKE_BINARY_DIR}/h3${H3_POSTGIS_REGRESS_PATH_SEP}$libdir")
endif()
# Force pg_regress temp clusters to load extensions from the build tree.
set(H3_POSTGIS_REGRESS_TEMP_CONFIG_CONTENT
"dynamic_library_path = '${H3_POSTGIS_REGRESS_TEMP_CONFIG_DYNAMIC_LIBRARY_PATH}'\n")
if(PostgreSQL_VERSION_MAJOR VERSION_GREATER_EQUAL "18")
string(PREPEND H3_POSTGIS_REGRESS_TEMP_CONFIG_CONTENT
"extension_control_path = '${CMAKE_BINARY_DIR}/share${H3_POSTGIS_REGRESS_PATH_SEP}$system'\n")
endif()
if(CMAKE_CONFIGURATION_TYPES)
file(GENERATE OUTPUT "${H3_POSTGIS_REGRESS_TEMP_CONFIG}" CONTENT "${H3_POSTGIS_REGRESS_TEMP_CONFIG_CONTENT}")
else()
file(WRITE "${H3_POSTGIS_REGRESS_TEMP_CONFIG}" "${H3_POSTGIS_REGRESS_TEMP_CONFIG_CONTENT}")
endif()
add_test(
NAME "h3_postgis_regress_fast"
COMMAND ${PostgreSQL_REGRESS}
--temp-instance=${CMAKE_BINARY_DIR}/tmp
--temp-config=${H3_POSTGIS_REGRESS_TEMP_CONFIG}
--bindir=${PostgreSQL_BIN_DIR}
--inputdir=${CMAKE_CURRENT_SOURCE_DIR}
--outputdir=${CMAKE_CURRENT_BINARY_DIR}
--load-extension h3
--load-extension postgis
--load-extension postgis_raster
--load-extension h3_postgis
${H3_POSTGIS_REGRESS_FAST_TESTS}
)
add_test(
NAME "h3_postgis_regress"
COMMAND ${PostgreSQL_REGRESS}
--temp-instance=${CMAKE_BINARY_DIR}/tmp
--temp-config=${H3_POSTGIS_REGRESS_TEMP_CONFIG}
--bindir=${PostgreSQL_BIN_DIR}
--inputdir=${CMAKE_CURRENT_SOURCE_DIR}
--outputdir=${CMAKE_CURRENT_BINARY_DIR}
--load-extension h3
--load-extension postgis
--load-extension postgis_raster
--load-extension h3_postgis
${H3_POSTGIS_REGRESS_FULL_TESTS}
)
if(PostgreSQL_VERSION_MAJOR VERSION_GREATER_EQUAL "18")
set(H3_POSTGIS_EXTUPGRADE_EXTENSION_CONTROL_PATH
"${CMAKE_BINARY_DIR}/share${H3_POSTGIS_REGRESS_PATH_SEP}$system")
else()
set(H3_POSTGIS_EXTUPGRADE_EXTENSION_CONTROL_PATH "")
endif()
endif()
PostgreSQL_add_extupgrade_test(
NAME h3_postgis_validate_extupgrade
EXTNAME h3_postgis
FROM_VERSION 4.0.0
TO_VERSION ${INSTALL_VERSION}
TEMP_ROOT ${CMAKE_CURRENT_BINARY_DIR}/extupgrade-h3_postgis
TEMP_PORT 65442
DYNAMIC_LIBRARY_PATH ${H3_POSTGIS_REGRESS_TEMP_CONFIG_DYNAMIC_LIBRARY_PATH}
EXTENSION_CONTROL_PATH ${H3_POSTGIS_EXTUPGRADE_EXTENSION_CONTROL_PATH}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
WATCH_PATHS
CMakeLists.txt
cmake/AddPostgreSQLExtension.cmake
h3_postgis/CMakeLists.txt
h3_postgis/sql/install
h3_postgis/sql/updates
)