From b57b1acac09c927d75a92352831900946cea2ee4 Mon Sep 17 00:00:00 2001 From: Ekaterina Sokolova Date: Fri, 5 Jul 2024 12:48:42 +0300 Subject: [PATCH 1/2] Attempt to revive Travis. --- .gitignore | 1 + .travis.yml | 56 +++++----- README.md | 2 +- travis/dep-ubuntu-llvm.sh | 4 - travis/dep-ubuntu-postgres.sh | 4 +- travis/llvm-snapshot.gpg.key | 52 --------- travis/pg-travis-test.sh | 200 +++------------------------------- travis/postgresql.gpg.key | 77 ------------- 8 files changed, 45 insertions(+), 351 deletions(-) delete mode 100755 travis/dep-ubuntu-llvm.sh delete mode 100644 travis/llvm-snapshot.gpg.key delete mode 100644 travis/postgresql.gpg.key diff --git a/.gitignore b/.gitignore index acd374a..4b52f03 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /log/ /results/ /tmp_check/ +*.bc *.so *.o jsquery_gram.c diff --git a/.travis.yml b/.travis.yml index fec84a6..13fefac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,35 +1,33 @@ -os: - - linux - -sudo: required -dist: trusty +dist: jammy language: c -compiler: - - clang - - gcc +env: +- PG_VER=16 +- PG_VER=15 +- PG_VER=14 +- PG_VER=13 +- PG_VER=12 +- PG_VER=11 +- PG_VER=10 +- PG_VER=9.6 +- PG_VER=9.5 +- PG_VER=9.4 -before_install: - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get -y install -qq wget ca-certificates; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then source ./travis/dep-ubuntu-postgres.sh; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then source ./travis/dep-ubuntu-llvm.sh; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get update -qq; fi +jobs: + allow_failures: + - env: PG_VER=12 + - env: PG_VER=11 + - env: PG_VER=10 + - env: PG_VER=9.6 + - env: PG_VER=9.5 + - env: PG_VER=9.4 -env: - global: - - LLVM_VER=4.0 - matrix: - - PG_VER=11 CHECK_TYPE=normal - - PG_VER=11 CHECK_TYPE=static - - PG_VER=10 CHECK_TYPE=normal - - PG_VER=10 CHECK_TYPE=static - - PG_VER=10.5 CHECK_TYPE=valgrind - - PG_VER=9.6 CHECK_TYPE=normal - - PG_VER=9.6 CHECK_TYPE=static - - PG_VER=9.5 CHECK_TYPE=normal - - PG_VER=9.5 CHECK_TYPE=static - - PG_VER=9.4 CHECK_TYPE=normal - - PG_VER=9.4 CHECK_TYPE=static +before_script: + - sudo apt-get -y install -qq wget ca-certificates + - travis/dep-ubuntu-postgres.sh + - sudo apt-get update + - sudo apt-get install -y --no-install-recommends postgresql-client-${PG_VER} postgresql-${PG_VER} postgresql-server-dev-${PG_VER} + - sudo systemctl stop postgresql -script: bash ./travis/pg-travis-test.sh +script: travis/pg-travis-test.sh diff --git a/README.md b/README.md index 96e6274..4a96831 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/postgrespro/jsquery.svg?branch=master)](https://travis-ci.org/postgrespro/jsquery) +[![Build Status](https://app.travis-ci.com/postgrespro/jsquery.svg?branch=master)](https://app.travis-ci.com/postgrespro/jsquery) [![codecov](https://codecov.io/gh/postgrespro/jsquery/branch/master/graph/badge.svg)](https://codecov.io/gh/postgrespro/jsquery) [![GitHub license](https://img.shields.io/badge/license-PostgreSQL-blue.svg)](https://raw.githubusercontent.com/postgrespro/jsquery/master/LICENSE) diff --git a/travis/dep-ubuntu-llvm.sh b/travis/dep-ubuntu-llvm.sh deleted file mode 100755 index e640d5b..0000000 --- a/travis/dep-ubuntu-llvm.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -cat ./travis/llvm-snapshot.gpg.key | sudo apt-key add - -echo "deb http://apt.llvm.org/trusty/ llvm-toolchain-$(lsb_release -cs)-$LLVM_VER main" | sudo tee /etc/apt/sources.list.d/llvm.list diff --git a/travis/dep-ubuntu-postgres.sh b/travis/dep-ubuntu-postgres.sh index 41c7d34..b8e1da0 100755 --- a/travis/dep-ubuntu-postgres.sh +++ b/travis/dep-ubuntu-postgres.sh @@ -1,4 +1,4 @@ #!/bin/sh -cat ./travis/postgresql.gpg.key | sudo apt-key add - -echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main $PG_VER" | sudo tee /etc/apt/sources.list.d/pgdg.list +curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg +echo "deb http://apt-archive.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main $PG_VER" diff --git a/travis/llvm-snapshot.gpg.key b/travis/llvm-snapshot.gpg.key deleted file mode 100644 index aa6b105..0000000 --- a/travis/llvm-snapshot.gpg.key +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.12 (GNU/Linux) - -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 -bXb5c6gCHESH5PXwPU4jQEE7Ib9J6sbk7ZT2Mw== -=j+4q ------END PGP PUBLIC KEY BLOCK----- diff --git a/travis/pg-travis-test.sh b/travis/pg-travis-test.sh index 18a393f..c17c1a9 100755 --- a/travis/pg-travis-test.sh +++ b/travis/pg-travis-test.sh @@ -1,193 +1,21 @@ #!/bin/bash +set -ev -set -eux +export PATH=/usr/lib/postgresql/$PG_VER/bin:$PATH +export PGDATA=/var/lib/postgresql/$PG_VER/test +export COPT=-Werror +export USE_PGXS=1 -echo -en 'travis_fold:start:pg_install\\r' && echo 'PostgreSQL installation' +sudo chmod 1777 /var/lib/postgresql/$PG_VER +sudo chmod 1777 /var/run/postgresql -sudo apt-get update +make clean +make -# bug: http://www.postgresql.org/message-id/20130508192711.GA9243@msgid.df7cb.de -sudo update-alternatives --remove-all postmaster.1.gz +sudo -E env PATH=$PATH make install -# stop all existing instances (because of https://github.com/travis-ci/travis-cookbooks/pull/221) -sudo service postgresql stop -# ... and make sure they don't come back -echo 'exit 0' | sudo tee /etc/init.d/postgresql -sudo chmod a+x /etc/init.d/postgresql +/usr/lib/postgresql/$PG_VER/bin/initdb -# install PostgreSQL -if [ $CHECK_TYPE = "valgrind" ]; then - # install required packages - apt_packages="build-essential libgd-dev valgrind lcov" - sudo apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" -y install -qq $apt_packages - - set -e - - pushd ~ - CUSTOM_PG_BIN=$PWD/pg_bin - CUSTOM_PG_SRC=$PWD/postgresql - - curl "https://ftp.postgresql.org/pub/source/v$PG_VER/postgresql-$PG_VER.tar.bz2" -o postgresql.tar.bz2 - mkdir $CUSTOM_PG_SRC - - tar \ - --extract \ - --file postgresql.tar.bz2 \ - --directory $CUSTOM_PG_SRC \ - --strip-components 1 - - cd $CUSTOM_PG_SRC - - # enable Valgrind support - sed -i.bak "s/\/* #define USE_VALGRIND *\//#define USE_VALGRIND/g" src/include/pg_config_manual.h - - # enable additional options - ./configure \ - CFLAGS='-Og -ggdb3 -fno-omit-frame-pointer' \ - --enable-cassert \ - --enable-coverage \ - --prefix=$CUSTOM_PG_BIN \ - --quiet - - # build & install PG - time make -s -j4 && make -s install - - # override default PostgreSQL instance - export PATH=$CUSTOM_PG_BIN/bin:$PATH - export LD_LIBRARY_PATH=$CUSTOM_PG_BIN/lib - - popd - set +e - prefix=$CUSTOM_PG_BIN -else - apt_packages="postgresql-$PG_VER postgresql-server-dev-$PG_VER postgresql-common build-essential libgd-dev" - sudo apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" -y install -qq $apt_packages - prefix=/usr/lib/postgresql/$PG_VER -fi - -# config path -pg_ctl_path=$prefix/bin/pg_ctl -initdb_path=$prefix/bin/initdb -config_path=$prefix/bin/pg_config - -# exit code -status=0 - -echo -en 'travis_fold:end:pg_install\\r' - -# perform code analysis if necessary -if [ $CHECK_TYPE = "static" ]; then - echo -en 'travis_fold:start:static_analysis\\r' && echo 'Static analysis' - - if [ "$CC" = "clang" ]; then - sudo apt-get -y install -qq clang-$LLVM_VER - - scan-build-$LLVM_VER --status-bugs \ - -disable-checker deadcode.DeadStores \ - make USE_PGXS=1 USE_ASSERT_CHECKING=1 PG_CONFIG=$config_path || status=$? - - elif [ "$CC" = "gcc" ]; then - sudo apt-get -y install -qq cppcheck - - cppcheck --template "{file} ({line}): {severity} ({id}): {message}" \ - --enable=warning,portability,performance \ - --suppress=redundantAssignment \ - --suppress=uselessAssignmentPtrArg \ - --suppress=incorrectStringBooleanError \ - --std=c89 *.c *.h 2> cppcheck.log - - if [ -s cppcheck.log ]; then - cat cppcheck.log - status=1 # error - fi - fi - - # don't forget to "make clean" - make clean USE_PGXS=1 PG_CONFIG=$config_path - echo -en 'travis_fold:end:static_analysis\\r' - exit $status -fi - -echo -en 'travis_fold:start:build_extension\\r' && echo 'Build extension' - -# build extension (using CFLAGS_SL for gcov) -if [ $CHECK_TYPE == "valgrind" ]; then - make USE_PGXS=1 USE_ASSERT_CHECKING=1 PG_CONFIG=$config_path - make install USE_PGXS=1 PG_CONFIG=$config_path -else - make USE_PGXS=1 USE_ASSERT_CHECKING=1 CC=$CC PG_CONFIG=$config_path CFLAGS_SL="$($config_path --cflags_sl) -coverage" - sudo make install USE_PGXS=1 PG_CONFIG=$config_path -fi - -echo -en 'travis_fold:end:build_extension\\r' - -echo -en 'travis_fold:start:run_tests\\r' && echo 'Run tests' - -# enable core dumps and specify their path -ulimit -c unlimited -S -echo '/tmp/%e-%s-%p.core' | sudo tee /proc/sys/kernel/core_pattern - -# set permission to write postgres locks -sudo chown $USER /var/run/postgresql/ - -# create cluster 'test' -CLUSTER_PATH=$(pwd)/test_cluster -$initdb_path -D $CLUSTER_PATH -U $USER -A trust - -# start cluster 'test' -echo "port = 55435" >> $CLUSTER_PATH/postgresql.conf -if [ $CHECK_TYPE = "valgrind" ]; then - PGCTLTIMEOUT=600 \ - valgrind --leak-check=no --gen-suppressions=all \ - --suppressions=$CUSTOM_PG_SRC/src/tools/valgrind.supp --time-stamp=yes \ - --log-file=/tmp/pid-%p.log --trace-children=yes \ - $pg_ctl_path -D $CLUSTER_PATH start -l postgres.log -w -else - $pg_ctl_path -D $CLUSTER_PATH start -l postgres.log -w -fi - -# run regression tests -PGPORT=55435 PGUSER=$USER PG_CONFIG=$config_path make installcheck USE_PGXS=1 || status=$? - -# stop cluster -$pg_ctl_path -D $CLUSTER_PATH stop -l postgres.log -w - -echo -en 'travis_fold:end:run_tests\\r' - -echo -en 'travis_fold:start:output\\r' && echo 'Check output' - -# show diff if it exists -if test -f regression.diffs; then cat regression.diffs; fi - -# show valgrind logs if needed -if [ $CHECK_TYPE = "valgrind" ]; then - for f in ` find /tmp -name pid-*.log ` ; do - if grep -q 'Command: [^ ]*/postgres' $f && grep -q 'ERROR SUMMARY: [1-9]' $f; then - echo "========= Contents of $f" - cat $f - status=1 - fi - done -fi - -# check core dumps if any -for corefile in $(find /tmp/ -name '*.core' 2>/dev/null) ; do - binary=$(gdb -quiet -core $corefile -batch -ex 'info auxv' | grep AT_EXECFN | perl -pe "s/^.*\"(.*)\"\$/\$1/g") - echo dumping $corefile for $binary - gdb --batch --quiet -ex "thread apply all bt full" -ex "quit" $binary $corefile -done - -echo -en 'travis_fold:end:output\\r' - -echo -en 'travis_fold:start:coverage\\r' && echo 'Coverage check' - -#generate *.gcov files -if [ $CC = "clang" ]; then - bash <(curl -s https://codecov.io/bash) -x "llvm-cov gcov" -else - bash <(curl -s https://codecov.io/bash) -fi - -echo -en 'travis_fold:end:coverage\\r' - -exit $status +/usr/lib/postgresql/$PG_VER/bin/pg_ctl -l logfile start +make installcheck +/usr/lib/postgresql/$PG_VER/bin/pg_ctl stop diff --git a/travis/postgresql.gpg.key b/travis/postgresql.gpg.key deleted file mode 100644 index 8480576..0000000 --- a/travis/postgresql.gpg.key +++ /dev/null @@ -1,77 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=DA1T ------END PGP PUBLIC KEY BLOCK----- From c6a07adb886ba01cc6875c7ba26cb58398eef664 Mon Sep 17 00:00:00 2001 From: Ekaterina Sokolova Date: Wed, 23 Oct 2024 15:45:42 +0300 Subject: [PATCH 2/2] Second attempt to revive Travis + update copyright. --- .dockerignore | 10 +++++++ .travis.yml | 32 +++++++++++----------- LICENSE | 2 +- jsonb_gin_ops.c | 2 +- jsquery.h | 2 +- jsquery_constr.c | 2 +- jsquery_extract.c | 2 +- jsquery_gram.y | 2 +- jsquery_io.c | 2 +- jsquery_op.c | 2 +- jsquery_scan.l | 2 +- jsquery_support.c | 2 +- travis/Dockerfile.in | 33 +++++++++++++++++++++++ travis/dep-ubuntu-postgres.sh | 4 --- travis/docker-compose.yml | 3 +++ travis/mk_dockerfile.sh | 16 +++++++++++ travis/pg-travis-test.sh | 21 --------------- travis/run_tests.sh | 50 +++++++++++++++++++++++++++++++++++ 18 files changed, 139 insertions(+), 50 deletions(-) create mode 100644 .dockerignore create mode 100644 travis/Dockerfile.in delete mode 100755 travis/dep-ubuntu-postgres.sh create mode 100644 travis/docker-compose.yml create mode 100755 travis/mk_dockerfile.sh delete mode 100755 travis/pg-travis-test.sh create mode 100644 travis/run_tests.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..c8bc8b2 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +# Don't send some content to the Docker host when building +travis +.git +.travis.yml + +*.gcno +*.gcda +*.gcov +*.so +*.o diff --git a/.travis.yml b/.travis.yml index 13fefac..d779913 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,14 @@ +os: linux + dist: jammy language: c +services: +- docker + env: +- PG_VER=17 - PG_VER=16 - PG_VER=15 - PG_VER=14 @@ -10,24 +16,20 @@ env: - PG_VER=12 - PG_VER=11 - PG_VER=10 -- PG_VER=9.6 -- PG_VER=9.5 -- PG_VER=9.4 +#- PG_VER=9.6 +#- PG_VER=9.5 +#- PG_VER=9.4 jobs: allow_failures: - env: PG_VER=12 - env: PG_VER=11 - env: PG_VER=10 - - env: PG_VER=9.6 - - env: PG_VER=9.5 - - env: PG_VER=9.4 - -before_script: - - sudo apt-get -y install -qq wget ca-certificates - - travis/dep-ubuntu-postgres.sh - - sudo apt-get update - - sudo apt-get install -y --no-install-recommends postgresql-client-${PG_VER} postgresql-${PG_VER} postgresql-server-dev-${PG_VER} - - sudo systemctl stop postgresql - -script: travis/pg-travis-test.sh + +before_install: cp travis/* . + +install: + - ./mk_dockerfile.sh + - docker-compose build + +script: docker-compose run $(bash <(curl -s https://codecov.io/env)) tests diff --git a/LICENSE b/LICENSE index b5411fb..d7d42b9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ JsQuery is released under the PostgreSQL License, a liberal Open Source license, similar to the BSD or MIT licenses. -Copyright (c) 2014-2018, Postgres Professional +Copyright (c) 2014-2024, Postgres Professional Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group Portions Copyright (c) 1994, The Regents of the University of California diff --git a/jsonb_gin_ops.c b/jsonb_gin_ops.c index 9a72c20..04cf110 100644 --- a/jsonb_gin_ops.c +++ b/jsonb_gin_ops.c @@ -4,7 +4,7 @@ * Support GIN over jsonb with jsquery operation * * Copyright (c) 2014, PostgreSQL Global Development Group - * Portions Copyright (c) 2017-2021, Postgres Professional + * Portions Copyright (c) 2017-2024, Postgres Professional * Author: Alexander Korotkov * * IDENTIFICATION diff --git a/jsquery.h b/jsquery.h index 86226eb..0b81016 100644 --- a/jsquery.h +++ b/jsquery.h @@ -4,7 +4,7 @@ * Definitions of jsquery datatype * * Copyright (c) 2014, PostgreSQL Global Development Group - * Portions Copyright (c) 2017-2021, Postgres Professional + * Portions Copyright (c) 2017-2024, Postgres Professional * Author: Teodor Sigaev * * IDENTIFICATION diff --git a/jsquery_constr.c b/jsquery_constr.c index bfd0468..a49e5bb 100644 --- a/jsquery_constr.c +++ b/jsquery_constr.c @@ -4,7 +4,7 @@ * Functions and operations to manipulate jsquery * * Copyright (c) 2014, PostgreSQL Global Development Group - * Portions Copyright (c) 2017-2021, Postgres Professional + * Portions Copyright (c) 2017-2024, Postgres Professional * Author: Teodor Sigaev * * IDENTIFICATION diff --git a/jsquery_extract.c b/jsquery_extract.c index 4517706..8fc7e0a 100644 --- a/jsquery_extract.c +++ b/jsquery_extract.c @@ -4,7 +4,7 @@ * Functions and operations to support jsquery in indexes * * Copyright (c) 2014, PostgreSQL Global Development Group - * Portions Copyright (c) 2017-2021, Postgres Professional + * Portions Copyright (c) 2017-2024, Postgres Professional * Author: Alexander Korotkov * * IDENTIFICATION diff --git a/jsquery_gram.y b/jsquery_gram.y index fd05e7a..a85ec1a 100644 --- a/jsquery_gram.y +++ b/jsquery_gram.y @@ -4,7 +4,7 @@ * Grammar definitions for jsquery datatype * * Copyright (c) 2014, PostgreSQL Global Development Group - * Portions Copyright (c) 2017-2021, Postgres Professional + * Portions Copyright (c) 2017-2024, Postgres Professional * Author: Teodor Sigaev * * IDENTIFICATION diff --git a/jsquery_io.c b/jsquery_io.c index 8a4b9ac..267e046 100644 --- a/jsquery_io.c +++ b/jsquery_io.c @@ -4,7 +4,7 @@ * I/O functions for jsquery datatype * * Copyright (c) 2014, PostgreSQL Global Development Group - * Portions Copyright (c) 2016-2021, Postgres Professional + * Portions Copyright (c) 2016-2024, Postgres Professional * Author: Teodor Sigaev * * IDENTIFICATION diff --git a/jsquery_op.c b/jsquery_op.c index 29cfe3d..aac95ea 100644 --- a/jsquery_op.c +++ b/jsquery_op.c @@ -4,7 +4,7 @@ * Functions and operations over jsquery/jsonb datatypes * * Copyright (c) 2014, PostgreSQL Global Development Group - * Portions Copyright (c) 2017-2021, Postgres Professional + * Portions Copyright (c) 2017-2024, Postgres Professional * Author: Teodor Sigaev * * IDENTIFICATION diff --git a/jsquery_scan.l b/jsquery_scan.l index f145650..dcd852b 100644 --- a/jsquery_scan.l +++ b/jsquery_scan.l @@ -4,7 +4,7 @@ * Lexical parser for jsquery datatype * * Copyright (c) 2014, PostgreSQL Global Development Group - * Portions Copyright (c) 2017-2021, Postgres Professional + * Portions Copyright (c) 2017-2024, Postgres Professional * Author: Teodor Sigaev * * IDENTIFICATION diff --git a/jsquery_support.c b/jsquery_support.c index 747776b..936edd9 100644 --- a/jsquery_support.c +++ b/jsquery_support.c @@ -4,7 +4,7 @@ * Functions and operations to support jsquery * * Copyright (c) 2014, PostgreSQL Global Development Group - * Portions Copyright (c) 2017-2021, Postgres Professional + * Portions Copyright (c) 2017-2024, Postgres Professional * Author: Teodor Sigaev * * IDENTIFICATION diff --git a/travis/Dockerfile.in b/travis/Dockerfile.in new file mode 100644 index 0000000..6662524 --- /dev/null +++ b/travis/Dockerfile.in @@ -0,0 +1,33 @@ +FROM postgres:${PG_VERSION}-alpine + +# Install dependencies +RUN apk add --no-cache \ + linux-headers \ + openssl curl \ + perl perl-ipc-run perl-dev perl-app-cpanminus perl-dbi \ + make musl-dev gcc bison flex coreutils \ + zlib-dev libedit-dev \ + pkgconf icu-dev clang clang15 clang-analyzer; + +# Environment +ENV LANG=C.UTF-8 PGDATA=/pg/data + +# Make directories +RUN mkdir -p ${PGDATA} && \ + mkdir -p /pg/testdir + +COPY run_tests.sh /run.sh +RUN chmod 755 /run.sh + +COPY . /pg/testdir +WORKDIR /pg/testdir + +# Grant privileges +RUN chown postgres:postgres ${PGDATA} && \ + chown -R postgres:postgres /pg/testdir && \ + chown postgres:postgres /usr/local/include/postgresql/server/ && \ + chmod a+rwx /usr/local/lib/postgresql && \ + chmod a+rwx /usr/local/share/postgresql/extension + +USER postgres +ENTRYPOINT LEVEL=${LEVEL} /run.sh diff --git a/travis/dep-ubuntu-postgres.sh b/travis/dep-ubuntu-postgres.sh deleted file mode 100755 index b8e1da0..0000000 --- a/travis/dep-ubuntu-postgres.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg -echo "deb http://apt-archive.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main $PG_VER" diff --git a/travis/docker-compose.yml b/travis/docker-compose.yml new file mode 100644 index 0000000..0544d85 --- /dev/null +++ b/travis/docker-compose.yml @@ -0,0 +1,3 @@ +services: + tests: + build: . diff --git a/travis/mk_dockerfile.sh b/travis/mk_dockerfile.sh new file mode 100755 index 0000000..9108d2c --- /dev/null +++ b/travis/mk_dockerfile.sh @@ -0,0 +1,16 @@ +if [ -z ${PG_VERSION+x} ]; then + echo PG_VERSION is not set! + exit 1 +fi + +if [ -z ${LEVEL+x} ]; then + LEVEL=standard +fi + +echo PG_VERSION=${PG_VERSION} +echo LEVEL=${LEVEL} + +sed \ + -e 's/${PG_VERSION}/'${PG_VERSION}/g \ + -e 's/${LEVEL}/'${LEVEL}/g \ +Dockerfile.in > Dockerfile diff --git a/travis/pg-travis-test.sh b/travis/pg-travis-test.sh deleted file mode 100755 index c17c1a9..0000000 --- a/travis/pg-travis-test.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -set -ev - -export PATH=/usr/lib/postgresql/$PG_VER/bin:$PATH -export PGDATA=/var/lib/postgresql/$PG_VER/test -export COPT=-Werror -export USE_PGXS=1 - -sudo chmod 1777 /var/lib/postgresql/$PG_VER -sudo chmod 1777 /var/run/postgresql - -make clean -make - -sudo -E env PATH=$PATH make install - -/usr/lib/postgresql/$PG_VER/bin/initdb - -/usr/lib/postgresql/$PG_VER/bin/pg_ctl -l logfile start -make installcheck -/usr/lib/postgresql/$PG_VER/bin/pg_ctl stop diff --git a/travis/run_tests.sh b/travis/run_tests.sh new file mode 100644 index 0000000..a796830 --- /dev/null +++ b/travis/run_tests.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +# +# Copyright (c) 2024, Postgres Professional +# +# supported levels: +# * standard +# + +set -ev +status=0 + +# show pg_config just in case +pg_config + +# build and install extension (using PG_CPPFLAGS and SHLIB_LINK for gcov) +make USE_PGXS=1 PG_CPPFLAGS="-coverage" SHLIB_LINK="-coverage" install + +# initialize database +initdb -D $PGDATA + +# set appropriate port +export PGPORT=55435 +echo "port = $PGPORT" >> $PGDATA/postgresql.conf + +# restart cluster 'test' +pg_ctl start -l /tmp/postgres.log -w || status=$? + +# something's wrong, exit now! +if [ $status -ne 0 ]; then cat /tmp/postgres.log; exit 1; fi + +# run regression tests +export PG_REGRESS_DIFF_OPTS="-w -U3" # for alpine's diff (BusyBox) +make USE_PGXS=1 installcheck || status=$? + +# show diff if it exists +if test -f regression.diffs; then cat regression.diffs; fi + +# something's wrong, exit now! +if [ $status -ne 0 ]; then exit 1; fi + +# generate *.gcov files +gcov src/*.c src/*.h + + +set +ev + + +# send coverage stats to Codecov +bash <(curl -s https://codecov.io/bash)