From d1f8f9d32612f6cf8070a77de35b279faab860e2 Mon Sep 17 00:00:00 2001 From: Mats Kindahl Date: Thu, 27 Jun 2019 18:21:42 +0200 Subject: [PATCH] CMake check for necessary testing tools Adding checks for `pg_isolation_regress` and `pg_regress` and not running the tests if the programs cannot be found either installed in default directories or provided with the `PG_PATH` variable, or the `PG_SOURCE_DIR` variable. --- CMakeLists.txt | 1 + appveyor.yml | 4 +- scripts/docker-build.sh | 2 +- scripts/docker-run-abi-test.sh | 2 +- test/CMakeLists.txt | 142 +++++++++++++++++++-------------- test/expected/metadata.out | 8 +- test/sql/metadata.sql | 8 +- test/test-defs.cmake | 49 ++++++------ tsl/test/CMakeLists.txt | 109 +++++++++++++------------ 9 files changed, 183 insertions(+), 142 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 60754779a..9c49b03c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -280,6 +280,7 @@ endif () option(USE_OPENSSL "Enable use of OpenSSL if available" ON) option(SEND_TELEMETRY_DEFAULT "The default value for whether to send telemetry" ON) +option(REGRESS_CHECKS "PostgreSQL regress checks through installcheck" ON) # Check if PostgreSQL has OpenSSL enabled by inspecting pg_config --configure. # Right now, a Postgres header will redefine an OpenSSL function if Postgres is not installed --with-openssl, diff --git a/appveyor.yml b/appveyor.yml index a7e0af3eb..fadee650f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -95,7 +95,7 @@ build_script: # build timescale - .\bootstrap -DUSE_OPENSSL=0 -DPG_PATH="C:\Program Files\PostgreSQL\10" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CONFIGURATION_TYPES=Debug -DCMAKE_C_FLAGS=/MP + .\bootstrap -DUSE_OPENSSL=0 -DPG_PATH="C:\Program Files\PostgreSQL\10" -DREGRESS_CHECKS=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CONFIGURATION_TYPES=Debug -DCMAKE_C_FLAGS=/MP cmake --build ./build --config Debug @@ -134,7 +134,7 @@ build_script: docker exec -it pgregress /bin/bash -c "git clone --depth 1 https://github.com/timescale/timescaledb.git /timescaledb && cd /timescaledb && git fetch -q origin $commit && git checkout -qf FETCH_HEAD" - docker exec -it pgregress /bin/bash -c "cd /timescaledb && ./bootstrap -DCMAKE_BUILD_TYPE=Debug -DPG_REGRESS=/usr/local/bin/pg_regress -DTEST_PGHOST=docker.for.win.localhost" + docker exec -it pgregress /bin/bash -c "cd /timescaledb && ./bootstrap -DCMAKE_BUILD_TYPE=Debug -DREGRESS_CHECKS=OFF -DPG_REGRESS=/usr/local/bin/pg_regress -DTEST_PGHOST=docker.for.win.localhost" test_script: - ps: >- diff --git a/scripts/docker-build.sh b/scripts/docker-build.sh index 03aadc611..c72078ca0 100755 --- a/scripts/docker-build.sh +++ b/scripts/docker-build.sh @@ -76,7 +76,7 @@ build_timescaledb() run_postgres_build_image ${PG_IMAGE} # Build and install the extension with debug symbols and assertions - docker exec -u root -it ${BUILD_CONTAINER_NAME} /bin/bash -c "cp -a /src/{src,sql,test,scripts,tsl,version.config,CMakeLists.txt,timescaledb.control.in} /build/ && cd build/debug && cmake -DUSE_OPENSSL=${USE_OPENSSL} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} .. && make && make install && echo \"shared_preload_libraries = 'timescaledb'\" >> /usr/local/share/postgresql/postgresql.conf.sample && echo \"timescaledb.telemetry_level=off\" >> /usr/local/share/postgresql/postgresql.conf.sample && cd / && rm -rf /build" + docker exec -u root -it ${BUILD_CONTAINER_NAME} /bin/bash -c "cp -a /src/{src,sql,test,scripts,tsl,version.config,CMakeLists.txt,timescaledb.control.in} /build/ && cd build/debug && cmake -DUSE_OPENSSL=${USE_OPENSSL} -DREGRESS_CHECKS=OFF -DCMAKE_BUILD_TYPE=${BUILD_TYPE} .. && make && make install && echo \"shared_preload_libraries = 'timescaledb'\" >> /usr/local/share/postgresql/postgresql.conf.sample && echo \"timescaledb.telemetry_level=off\" >> /usr/local/share/postgresql/postgresql.conf.sample && cd / && rm -rf /build" docker commit -a $USER -m "TimescaleDB development image" ${BUILD_CONTAINER_NAME} ${TS_IMAGE} } diff --git a/scripts/docker-run-abi-test.sh b/scripts/docker-run-abi-test.sh index 822d111ed..a5090f99e 100755 --- a/scripts/docker-run-abi-test.sh +++ b/scripts/docker-run-abi-test.sh @@ -37,7 +37,7 @@ create_base_container() { docker exec -u root -it $1 /bin/bash -c "apk add --no-cache --virtual .build-deps coreutils dpkg-dev gcc libc-dev make util-linux-dev diffutils cmake bison flex openssl-dev && mkdir -p /build/debug" # Copy the source files to build directory - docker exec -u root -it $1 /bin/bash -c "cp -a /src/{src,sql,scripts,test,tsl,CMakeLists.txt,timescaledb.control.in,version.config} /build/ && cd /build/debug/ && CFLAGS=-Werror cmake .. -DCMAKE_BUILD_TYPE=Debug && make -C /build/debug install && chown -R postgres /build" + docker exec -u root -it $1 /bin/bash -c "cp -a /src/{src,sql,scripts,test,tsl,CMakeLists.txt,timescaledb.control.in,version.config} /build/ && cd /build/debug/ && CFLAGS=-Werror cmake .. -DCMAKE_BUILD_TYPE=Debug -DREGRESS_CHECKS=OFF && make -C /build/debug install && chown -R postgres /build" } create_base_container $CONTAINER_NAME_COMPILE $PG_IMAGE_TAG_COMPILE diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 784bf085b..d529a1f52 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,77 +1,103 @@ +set(PRIMARY_TEST_DIR ${CMAKE_CURRENT_LIST_DIR}) +set(PRIMARY_TEST_DIR ${CMAKE_CURRENT_LIST_DIR} PARENT_SCOPE) +set(_local_install_checks) +set(_install_checks) + # Testing support find_program(PG_REGRESS pg_regress HINTS "${PG_PKGLIBDIR}/pgxs/src/test/regress/") -message(STATUS "Using pg_regress ${PG_REGRESS}") - -find_program(PG_ISOLATION_REGRESS pg_isolation_regress +find_program(PG_ISOLATION_REGRESS + NAMES pg_isolation_regress HINTS - ${BINDIR}/ - ${PG_PKGLIBDIR}/pgxs/src/test/isolation/ + ${BINDIR} + ${PG_PKGLIBDIR}/pgxs/src/test/isolation ${PG_SOURCE_DIR}/src/test/isolation) -message(STATUS "Using pg_isolation_regress ${PG_ISOLATION_REGRESS}") - -set(PRIMARY_TEST_DIR ${CMAKE_CURRENT_LIST_DIR}) -set(PRIMARY_TEST_DIR ${CMAKE_CURRENT_LIST_DIR} PARENT_SCOPE) - include(test-defs.cmake) -# installcheck starts up new temporary instances for testing code -if(NOT APACHE_ONLY) - add_custom_target(installcheck - DEPENDS regresscheck isolationcheck installcheck-t) +if(PG_REGRESS) + message(STATUS "Using pg_regress ${PG_REGRESS}") + + add_custom_target(regresscheck + COMMAND ${CMAKE_COMMAND} -E env + ${PG_REGRESS_ENV} + ${CMAKE_CURRENT_SOURCE_DIR}/pg_regress.sh + ${PG_REGRESS_OPTS_BASE} + ${PG_REGRESS_OPTS_EXTRA} + ${PG_REGRESS_OPTS_INOUT} + ${PG_REGRESS_OPTS_TEMP_INSTANCE} + USES_TERMINAL) + + add_custom_target(regresschecklocal + COMMAND ${CMAKE_COMMAND} -E env + ${PG_REGRESS_ENV} + ${CMAKE_CURRENT_SOURCE_DIR}/pg_regress.sh + ${PG_REGRESS_OPTS_BASE} + ${PG_REGRESS_OPTS_EXTRA} + ${PG_REGRESS_OPTS_INOUT} + ${PG_REGRESS_OPTS_LOCAL_INSTANCE} + USES_TERMINAL) + + list(APPEND _local_install_checks regresschecklocal) + list(APPEND _install_checks regresscheck) +elseif(REGRESS_CHECKS) + message(FATAL_ERROR + "Program 'pg_regress' not found, but regressions checks were required.\n" + "Skip regression checks using -DREGRESS_CHECKS=OFF") else() - add_custom_target(installcheck - DEPENDS regresscheck isolationcheck) + message(STATUS "Skipping isolation regress checks since program 'pg_regress' was not found") endif() -add_custom_target(regresscheck - COMMAND ${CMAKE_COMMAND} -E env - ${PG_REGRESS_ENV} - ${CMAKE_CURRENT_SOURCE_DIR}/pg_regress.sh - ${PG_REGRESS_OPTS_BASE} - ${PG_REGRESS_OPTS_EXTRA} - ${PG_REGRESS_OPTS_INOUT} - ${PG_REGRESS_OPTS_TEMP_INSTANCE} - USES_TERMINAL) +if(PG_ISOLATION_REGRESS) + message(STATUS "Using pg_isolation_regress ${PG_ISOLATION_REGRESS}") -add_custom_target(isolationcheck - COMMAND ${CMAKE_COMMAND} -E env - ${PG_ISOLATION_REGRESS_ENV} - SPECS_DIR=${CMAKE_CURRENT_SOURCE_DIR}/isolation/specs - ${CMAKE_CURRENT_SOURCE_DIR}/pg_isolation_regress.sh - ${PG_REGRESS_OPTS_BASE} - ${PG_ISOLATION_REGRESS_OPTS_EXTRA} - ${PG_ISOLATION_REGRESS_OPTS_INOUT} - ${PG_REGRESS_OPTS_TEMP_INSTANCE} - USES_TERMINAL) + add_custom_target(isolationcheck + COMMAND ${CMAKE_COMMAND} -E env + ${PG_ISOLATION_REGRESS_ENV} + SPECS_DIR=${CMAKE_CURRENT_SOURCE_DIR}/isolation/specs + ${CMAKE_CURRENT_SOURCE_DIR}/pg_isolation_regress.sh + ${PG_REGRESS_OPTS_BASE} + ${PG_ISOLATION_REGRESS_OPTS_EXTRA} + ${PG_ISOLATION_REGRESS_OPTS_INOUT} + ${PG_REGRESS_OPTS_TEMP_INSTANCE} + USES_TERMINAL) + add_custom_target(isolationchecklocal + COMMAND ${CMAKE_COMMAND} -E env + ${PG_ISOLATION_REGRESS_ENV} + SPECS_DIR=${CMAKE_CURRENT_SOURCE_DIR}/isolation/specs + ${CMAKE_CURRENT_SOURCE_DIR}/pg_isolation_regress.sh + ${PG_REGRESS_OPTS_BASE} + ${PG_ISOLATION_REGRESS_OPTS_EXTRA} + ${PG_ISOLATION_REGRESS_OPTS_INOUT} + ${PG_REGRESS_OPTS_LOCAL_INSTANCE} + USES_TERMINAL) + + list(APPEND _local_install_checks isolationchecklocal) + list(APPEND _install_checks isolationcheck) +elseif(REGRESS_CHECKS) + message(FATAL_ERROR + "Program 'pg_isolation_regress' not found, but regressions checks were required.\n" + "Skip regression checks using -DREGRESS_CHECKS=OFF") +else() + message(STATUS "Skipping isolation regress checks since program 'pg_isolation_regress' was not found") +endif() + +# installcheck starts up new temporary instances for testing code +if(NOT APACHE_ONLY) + list(APPEND _install_checks installcheck-t) +endif() + +if(_install_checks) + add_custom_target(installcheck DEPENDS ${_install_checks}) +endif() + # installchecklocal tests against an existing postgres instance -add_custom_target(installchecklocal - DEPENDS regresschecklocal isolationchecklocal) - -add_custom_target(regresschecklocal - COMMAND ${CMAKE_COMMAND} -E env - ${PG_REGRESS_ENV} - ${CMAKE_CURRENT_SOURCE_DIR}/pg_regress.sh - ${PG_REGRESS_OPTS_BASE} - ${PG_REGRESS_OPTS_EXTRA} - ${PG_REGRESS_OPTS_INOUT} - ${PG_REGRESS_OPTS_LOCAL_INSTANCE} - USES_TERMINAL) - -add_custom_target(isolationchecklocal - COMMAND ${CMAKE_COMMAND} -E env - ${PG_ISOLATION_REGRESS_ENV} - SPECS_DIR=${CMAKE_CURRENT_SOURCE_DIR}/isolation/specs - ${CMAKE_CURRENT_SOURCE_DIR}/pg_isolation_regress.sh - ${PG_REGRESS_OPTS_BASE} - ${PG_ISOLATION_REGRESS_OPTS_EXTRA} - ${PG_ISOLATION_REGRESS_OPTS_INOUT} - ${PG_REGRESS_OPTS_LOCAL_INSTANCE} - USES_TERMINAL) +if(_local_install_checks) + add_custom_target(installchecklocal DEPENDS ${_local_install_checks}) +endif() add_subdirectory(sql) add_subdirectory(isolation) diff --git a/test/expected/metadata.out b/test/expected/metadata.out index 037d9d408..331b25456 100644 --- a/test/expected/metadata.out +++ b/test/expected/metadata.out @@ -79,12 +79,12 @@ SELECT _timescaledb_internal.test_install_timestamp() = :'timestamp_1' as timest -- Now make sure that only the exported_uuid is exported on pg_dump \c postgres :ROLE_SUPERUSER -\! pg_dump -h ${TEST_PGHOST} -U super_user -Fc "${TEST_DBNAME}" > dump/instmeta.sql -\! dropdb -h ${TEST_PGHOST} -U super_user "${TEST_DBNAME}" -\! createdb -h ${TEST_PGHOST} -U super_user "${TEST_DBNAME}" +\! ${PG_BINDIR}/pg_dump -h ${TEST_PGHOST} -U super_user -Fc "${TEST_DBNAME}" > dump/instmeta.sql +\! ${PG_BINDIR}/dropdb -h ${TEST_PGHOST} -U super_user "${TEST_DBNAME}" +\! ${PG_BINDIR}/createdb -h ${TEST_PGHOST} -U super_user "${TEST_DBNAME}" ALTER DATABASE :TEST_DBNAME SET timescaledb.restoring='on'; -- Redirect to /dev/null to suppress NOTICE -\! pg_restore -h ${TEST_PGHOST} -U super_user -d "${TEST_DBNAME}" dump/instmeta.sql > /dev/null 2>&1 +\! ${PG_BINDIR}/pg_restore -h ${TEST_PGHOST} -U super_user -d "${TEST_DBNAME}" dump/instmeta.sql > /dev/null 2>&1 ALTER DATABASE :TEST_DBNAME SET timescaledb.restoring='off'; \c :TEST_DBNAME :ROLE_DEFAULT_PERM_USER -- Should have all 3 row, because pg_dump includes the insertion of uuid and timestamp. diff --git a/test/sql/metadata.sql b/test/sql/metadata.sql index e48e4918a..f2e1002f4 100644 --- a/test/sql/metadata.sql +++ b/test/sql/metadata.sql @@ -36,12 +36,12 @@ SELECT _timescaledb_internal.test_install_timestamp() = :'timestamp_1' as timest -- Now make sure that only the exported_uuid is exported on pg_dump \c postgres :ROLE_SUPERUSER -\! pg_dump -h ${TEST_PGHOST} -U super_user -Fc "${TEST_DBNAME}" > dump/instmeta.sql -\! dropdb -h ${TEST_PGHOST} -U super_user "${TEST_DBNAME}" -\! createdb -h ${TEST_PGHOST} -U super_user "${TEST_DBNAME}" +\! ${PG_BINDIR}/pg_dump -h ${TEST_PGHOST} -U super_user -Fc "${TEST_DBNAME}" > dump/instmeta.sql +\! ${PG_BINDIR}/dropdb -h ${TEST_PGHOST} -U super_user "${TEST_DBNAME}" +\! ${PG_BINDIR}/createdb -h ${TEST_PGHOST} -U super_user "${TEST_DBNAME}" ALTER DATABASE :TEST_DBNAME SET timescaledb.restoring='on'; -- Redirect to /dev/null to suppress NOTICE -\! pg_restore -h ${TEST_PGHOST} -U super_user -d "${TEST_DBNAME}" dump/instmeta.sql > /dev/null 2>&1 +\! ${PG_BINDIR}/pg_restore -h ${TEST_PGHOST} -U super_user -d "${TEST_DBNAME}" dump/instmeta.sql > /dev/null 2>&1 ALTER DATABASE :TEST_DBNAME SET timescaledb.restoring='off'; \c :TEST_DBNAME :ROLE_DEFAULT_PERM_USER diff --git a/test/test-defs.cmake b/test/test-defs.cmake index 9e5f84143..142265b45 100644 --- a/test/test-defs.cmake +++ b/test/test-defs.cmake @@ -1,4 +1,3 @@ - set(TEST_ROLE_SUPERUSER super_user) set(TEST_ROLE_DEFAULT_PERM_USER default_perm_user) set(TEST_ROLE_DEFAULT_PERM_USER_2 default_perm_user_2) @@ -54,26 +53,30 @@ set(PG_REGRESS_OPTS_TEMP_INSTANCE_PGTEST set(PG_REGRESS_OPTS_LOCAL_INSTANCE --port=${TEST_PGPORT_LOCAL}) -set(PG_REGRESS_ENV - TEST_PGUSER=${TEST_PGUSER} - TEST_PGHOST=${TEST_PGHOST} - TEST_ROLE_SUPERUSER=${TEST_ROLE_SUPERUSER} - TEST_ROLE_DEFAULT_PERM_USER=${TEST_ROLE_DEFAULT_PERM_USER} - TEST_ROLE_DEFAULT_PERM_USER_2=${TEST_ROLE_DEFAULT_PERM_USER_2} - TEST_DBNAME=${TEST_DBNAME} - TEST_INPUT_DIR=${TEST_INPUT_DIR} - TEST_OUTPUT_DIR=${TEST_OUTPUT_DIR} - TEST_SCHEDULE=${TEST_SCHEDULE} - PG_BINDIR=${PG_BINDIR} - PG_REGRESS=${PG_REGRESS}) +if(PG_REGRESS) + set(PG_REGRESS_ENV + TEST_PGUSER=${TEST_PGUSER} + TEST_PGHOST=${TEST_PGHOST} + TEST_ROLE_SUPERUSER=${TEST_ROLE_SUPERUSER} + TEST_ROLE_DEFAULT_PERM_USER=${TEST_ROLE_DEFAULT_PERM_USER} + TEST_ROLE_DEFAULT_PERM_USER_2=${TEST_ROLE_DEFAULT_PERM_USER_2} + TEST_DBNAME=${TEST_DBNAME} + TEST_INPUT_DIR=${TEST_INPUT_DIR} + TEST_OUTPUT_DIR=${TEST_OUTPUT_DIR} + TEST_SCHEDULE=${TEST_SCHEDULE} + PG_BINDIR=${PG_BINDIR} + PG_REGRESS=${PG_REGRESS}) +endif() -set(PG_ISOLATION_REGRESS_ENV - TEST_PGUSER=${TEST_PGUSER} - TEST_ROLE_SUPERUSER=${TEST_ROLE_SUPERUSER} - TEST_ROLE_DEFAULT_PERM_USER=${TEST_ROLE_DEFAULT_PERM_USER} - TEST_ROLE_DEFAULT_PERM_USER_2=${TEST_ROLE_DEFAULT_PERM_USER_2} - TEST_DBNAME=${TEST_DBNAME} - TEST_INPUT_DIR=${TEST_INPUT_DIR} - TEST_OUTPUT_DIR=${TEST_OUTPUT_DIR} - ISOLATION_TEST_SCHEDULE=${ISOLATION_TEST_SCHEDULE} - PG_ISOLATION_REGRESS=${PG_ISOLATION_REGRESS}) +if(PG_ISOLATION_REGRESS) + set(PG_ISOLATION_REGRESS_ENV + TEST_PGUSER=${TEST_PGUSER} + TEST_ROLE_SUPERUSER=${TEST_ROLE_SUPERUSER} + TEST_ROLE_DEFAULT_PERM_USER=${TEST_ROLE_DEFAULT_PERM_USER} + TEST_ROLE_DEFAULT_PERM_USER_2=${TEST_ROLE_DEFAULT_PERM_USER_2} + TEST_DBNAME=${TEST_DBNAME} + TEST_INPUT_DIR=${TEST_INPUT_DIR} + TEST_OUTPUT_DIR=${TEST_OUTPUT_DIR} + ISOLATION_TEST_SCHEDULE=${ISOLATION_TEST_SCHEDULE} + PG_ISOLATION_REGRESS=${PG_ISOLATION_REGRESS}) +endif() diff --git a/tsl/test/CMakeLists.txt b/tsl/test/CMakeLists.txt index 5b339a313..417d12e4f 100644 --- a/tsl/test/CMakeLists.txt +++ b/tsl/test/CMakeLists.txt @@ -1,58 +1,69 @@ include("${PRIMARY_TEST_DIR}/test-defs.cmake") -add_custom_target(installcheck-t - DEPENDS regresscheck-t isolationcheck-t) - #TODO after we have isolation checks isolationcheck-t) +#TODO after we have isolation checks isolationcheck-t) -add_custom_target(regresscheck-t - COMMAND ${CMAKE_COMMAND} -E env - ${PG_REGRESS_ENV} - EXE_DIR=${CMAKE_CURRENT_SOURCE_DIR} - ${PRIMARY_TEST_DIR}/pg_regress.sh - ${PG_REGRESS_OPTS_BASE} - ${PG_REGRESS_OPTS_EXTRA} - ${PG_REGRESS_OPTS_INOUT} - ${PG_REGRESS_OPTS_TEMP_INSTANCE} - USES_TERMINAL) +set(_local_install_checks) +set(_install_checks) -add_custom_target(isolationcheck-t - COMMAND ${CMAKE_COMMAND} -E env - ${PG_ISOLATION_REGRESS_ENV} - EXE_DIR=${CMAKE_CURRENT_SOURCE_DIR} - SPECS_DIR=${CMAKE_CURRENT_BINARY_DIR}/isolation/specs - ${PRIMARY_TEST_DIR}/pg_isolation_regress.sh - ${PG_REGRESS_OPTS_BASE} - ${PG_ISOLATION_REGRESS_OPTS_EXTRA} - ${PG_ISOLATION_REGRESS_OPTS_INOUT} - ${PG_REGRESS_OPTS_TEMP_INSTANCE} - USES_TERMINAL) +if(PG_REGRESS) + add_custom_target(regresscheck-t + COMMAND ${CMAKE_COMMAND} -E env + ${PG_REGRESS_ENV} + EXE_DIR=${CMAKE_CURRENT_SOURCE_DIR} + ${PRIMARY_TEST_DIR}/pg_regress.sh + ${PG_REGRESS_OPTS_BASE} + ${PG_REGRESS_OPTS_EXTRA} + ${PG_REGRESS_OPTS_INOUT} + ${PG_REGRESS_OPTS_TEMP_INSTANCE} + USES_TERMINAL) + + add_custom_target(regresschecklocal-t + COMMAND ${CMAKE_COMMAND} -E env + ${PG_REGRESS_ENV} + EXE_DIR=${CMAKE_CURRENT_SOURCE_DIR} + ${PRIMARY_TEST_DIR}/pg_regress.sh + ${PG_REGRESS_OPTS_BASE} + ${PG_REGRESS_OPTS_EXTRA} + ${PG_REGRESS_OPTS_INOUT} + ${PG_REGRESS_OPTS_LOCAL_INSTANCE} + USES_TERMINAL) + + list(APPEND _local_install_checks regresschecklocal-t) + list(APPEND _install_checks regresscheck-t) +endif() + +if(PG_ISOLATION_REGRESS) + add_custom_target(isolationcheck-t + COMMAND ${CMAKE_COMMAND} -E env + ${PG_ISOLATION_REGRESS_ENV} + EXE_DIR=${CMAKE_CURRENT_SOURCE_DIR} + SPECS_DIR=${CMAKE_CURRENT_BINARY_DIR}/isolation/specs + ${PRIMARY_TEST_DIR}/pg_isolation_regress.sh + ${PG_REGRESS_OPTS_BASE} + ${PG_ISOLATION_REGRESS_OPTS_EXTRA} + ${PG_ISOLATION_REGRESS_OPTS_INOUT} + ${PG_REGRESS_OPTS_TEMP_INSTANCE} + USES_TERMINAL) + + add_custom_target(isolationchecklocal-t + COMMAND ${CMAKE_COMMAND} -E env + ${PG_ISOLATION_REGRESS_ENV} + EXE_DIR=${CMAKE_CURRENT_SOURCE_DIR} + SPECS_DIR=${CMAKE_CURRENT_BINARY_DIR}/isolation/specs + ${PRIMARY_TEST_DIR}/pg_isolation_regress.sh + ${PG_REGRESS_OPTS_BASE} + ${PG_ISOLATION_REGRESS_OPTS_EXTRA} + ${PG_ISOLATION_REGRESS_OPTS_INOUT} + ${PG_REGRESS_OPTS_LOCAL_INSTANCE} + USES_TERMINAL) + + list(APPEND _local_install_checks isolationchecklocal-t) + list(APPEND _install_checks isolationcheck-t) +endif() # installchecklocal tests against an existing postgres instance -add_custom_target(installchecklocal-t - DEPENDS regresschecklocal isolationchecklocal) - -add_custom_target(regresschecklocal-t - COMMAND ${CMAKE_COMMAND} -E env - ${PG_REGRESS_ENV} - EXE_DIR=${CMAKE_CURRENT_SOURCE_DIR} - ${PRIMARY_TEST_DIR}/pg_regress.sh - ${PG_REGRESS_OPTS_BASE} - ${PG_REGRESS_OPTS_EXTRA} - ${PG_REGRESS_OPTS_INOUT} - ${PG_REGRESS_OPTS_LOCAL_INSTANCE} - USES_TERMINAL) - -add_custom_target(isolationchecklocal-t - COMMAND ${CMAKE_COMMAND} -E env - ${PG_ISOLATION_REGRESS_ENV} - EXE_DIR=${CMAKE_CURRENT_SOURCE_DIR} - SPECS_DIR=${CMAKE_CURRENT_BINARY_DIR}/isolation/specs - ${PRIMARY_TEST_DIR}/pg_isolation_regress.sh - ${PG_REGRESS_OPTS_BASE} - ${PG_ISOLATION_REGRESS_OPTS_EXTRA} - ${PG_ISOLATION_REGRESS_OPTS_INOUT} - ${PG_REGRESS_OPTS_LOCAL_INSTANCE} - USES_TERMINAL) +add_custom_target(installchecklocal-t DEPENDS ${_local_install_checks}) +add_custom_target(installcheck-t DEPENDS ${_install_checks}) add_subdirectory(sql) add_subdirectory(isolation)