1#!/bin/bash 2 3set -eux 4 5 6echo "::group::Prepare repositories" 7 8os=$(cut -d: -f4 /etc/system-release-cpe) 9major_version=$(cut -d: -f5 /etc/system-release-cpe | grep -o "^[0-9]") 10case ${os} in 11 almalinux|centos) 12 case ${major_version} in 13 7) 14 DNF=yum 15 ;; 16 *) 17 DNF="dnf --enablerepo=powertools" 18 ${DNF} module -y disable postgresql 19 ;; 20 esac 21 22 ${DNF} install -y \ 23 https://download.postgresql.org/pub/repos/yum/reporpms/EL-${major_version}-x86_64/pgdg-redhat-repo-latest.noarch.rpm \ 24 https://packages.groonga.org/${os}/${major_version}/groonga-release-latest.noarch.rpm 25 ;; 26 fedora) 27 DNF="dnf" 28 ;; 29esac 30 31echo "::endgroup::" 32 33 34echo "::group::Install built packages" 35 36repositories_dir=/host/repositories 37${DNF} install -y \ 38 ${repositories_dir}/${os}/${major_version}/x86_64/Packages/*.rpm 39 40echo "::endgroup::" 41 42 43echo "::group::Install packages for test" 44 45case ${os} in 46 almalinux|centos) 47 case ${major_version} in 48 7) 49 ${DNF} install -y centos-release-scl 50 ;; 51 esac 52 postgresql_version=$(rpm -qa | \ 53 grep pgroonga | \ 54 grep -E -o '[0-9.]+' | 55 head -n1) 56 postgresql_package_prefix=$(rpm -qa | \ 57 grep pgroonga | \ 58 grep -E -o '^postgresql[0-9.]+' | \ 59 sed -e 's/\.//g') 60 ${DNF} install -y ${postgresql_package_prefix}-devel 61 pg_config=$(echo /usr/pgsql-*/bin/pg_config) 62 groonga_token_filter_stem_package_name=groonga-token-filter-stem 63 ;; 64 *) 65 ${DNF} install -y \ 66 mecab-ipadic \ 67 postgresql-devel \ 68 postgresql-server-devel 69 pg_config=pg_config 70 groonga_token_filter_stem_package_name=groonga-plugin-token-filters 71 ;; 72esac 73 74${DNF} install -y \ 75 ${groonga_token_filter_stem_package_name} \ 76 bc \ 77 diffutils \ 78 groonga-tokenizer-mecab \ 79 ruby \ 80 sudo 81 82echo "::endgroup::" 83 84 85echo "::group::Prepare test" 86 87data_dir=/tmp/data 88sudo -u postgres -H \ 89 $(${pg_config} --bindir)/initdb \ 90 --encoding=UTF-8 \ 91 --locale=C \ 92 --pgdata=${data_dir} \ 93 --username=root 94sudo -u postgres -H \ 95 $(${pg_config} --bindir)/pg_ctl start \ 96 --pgdata=${data_dir} 97 98cp -a \ 99 /host/sql \ 100 /host/expected \ 101 /tmp/ 102cd /tmp 103case "${os}" in 104 almalinux|centos) 105 if [ "$(echo "${postgresql_version} < 13" | bc)" = 1 ]; then 106 rm sql/full-text-search/text/single/declarative-partitioning.sql 107 fi 108 ;; 109 fedora) 110 # Require Groonga 10.1.0 or later. 111 rm sql/function/highlight-html/one-keyword.sql 112 rm sql/function/match-positions-byte/one-keyword.sql 113 rm sql/function/match-positions-character/one-keyword.sql 114 ;; 115esac 116ruby /host/test/prepare.rb > schedule 117PG_REGRESS_DIFF_OPTS="-u" 118if diff --help | grep -q color; then 119 PG_REGRESS_DIFF_OPTS="${PG_REGRESS_DIFF_OPTS} --color=always" 120fi 121export PG_REGRESS_DIFF_OPTS 122pg_regress=$(dirname $(${pg_config} --pgxs))/../test/regress/pg_regress 123 124echo "::endgroup::" 125 126 127echo "::group::Run test" 128 129set +e 130${pg_regress} \ 131 --launcher=/host/test/short-pgappname \ 132 --load-extension=pgroonga \ 133 --schedule=schedule 134pg_regress_status=$? 135set -e 136 137echo "::endgroup::" 138 139 140if [ ${pg_regress_status} -ne 0 ]; then 141 echo "::group::Diff" 142 cat regression.diffs 143 echo "::endgroup::" 144 exit ${pg_regress_status} 145fi 146 147echo "::group::Postpare" 148 149sudo -u postgres -H \ 150 $(${pg_config} --bindir)/pg_ctl stop \ 151 --pgdata=${data_dir} 152 153echo "::endgroup::" 154