1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
#! /bin/sh
set -ex
init_postgresql() {
case "$MATRIX_OS" in
ubuntu-*)
sudo systemctl start postgresql.service
;;
macos-*)
rm -rf /usr/local/var/postgres
pg_ctl initdb --pgdata /usr/local/var/postgres
pg_ctl -w start --pgdata /usr/local/var/postgres --log /usr/local/var/postgres/postgresql.log || {
echo "Exited with $?"
cat /usr/local/var/postgres/postgresql.log
exit 1
}
createuser -s postgres
;;
esac
{
case "$MATRIX_OS" in
ubuntu-*)
sudo -u postgres psql -e
;;
macos-*)
psql -U postgres -e
;;
esac
} <<_EOS_
CREATE USER tracuser NOSUPERUSER NOCREATEDB CREATEROLE PASSWORD 'password';
CREATE DATABASE trac OWNER tracuser;
_EOS_
}
init_mysql() {
case "$MATRIX_OS" in
ubuntu-*)
sudo systemctl start mysql.service
{
echo '[client]'
echo 'host = localhost'
echo 'user = root'
echo 'password = root'
} >~/.my.cnf
;;
macos-*)
brew install mysql
mysql.server start
{
echo '[client]'
echo 'host = localhost'
echo 'user = root'
} >~/.my.cnf
;;
esac
mysql -v <<_EOS_
CREATE DATABASE trac DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER tracuser@'%' IDENTIFIED BY 'password';
GRANT ALL ON trac.* TO tracuser@'%';
FLUSH PRIVILEGES;
_EOS_
}
run_tests() {
case "$MATRIX_TRACDB" in
postgresql)
init_postgresql
;;
mysql)
init_mysql
;;
esac
(
case "$MATRIX_OS" in
macos-*)
LDFLAGS='-L/usr/local/opt/openssl/lib'
export LDFLAGS
;;
esac
pip install -r .github/requirements.txt
)
pip list --format=freeze
case "$MATRIX_TRACDB" in
sqlite)
tracdb_uri='sqlite:test.db'
;;
postgresql)
echo "PostgreSQL: $(PGPASSWORD=password psql -h 127.0.0.1 -U tracuser trac -t -c 'SELECT version()')"
tracdb_uri='postgres://tracuser:password@localhost/trac?schema=tractest'
;;
mysql)
echo "MySQL: $(mysql -sN -e 'SELECT version()')"
tracdb_uri='mysql://tracuser:password@localhost/trac?charset=utf8mb4'
;;
*)
tracdb_uri=
;;
esac
{
echo ".uri = $tracdb_uri"
echo 'pythonopts = -Wdefault'
} >Makefile.cfg
make Trac.egg-info compile
rc=0
make unit-test || rc=$?
if [ "$MATRIX_TESTS" = functional ]; then
make functional-test testopts=-v || rc=$?
fi
return $rc
}
case "$MATRIX_OS" in
ubuntu-*)
sudo apt-get update -qq
sudo apt-get install -qq -y subversion
;;
macos-*)
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK
brew update || :
brew install subversion
;;
esac
venvdir="$HOME/venv"
python -m venv "$venvdir"
python="$venvdir/bin/python"
. "$venvdir/bin/activate"
"$python" -m pip install --upgrade pip setuptools
run_tests
|