2015-07-20 00:09:47 -07:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
set -eu
|
|
|
|
|
|
2024-03-30 19:17:04 +01:00
|
|
|
readonly DEFAULT_TESTS="./src/test/*-test.js ./src/routes/test/*-test.js"
|
2015-07-20 00:09:47 -07:00
|
|
|
|
2021-04-07 16:46:12 +02:00
|
|
|
# clear out any containers if FAST is unset
|
|
|
|
|
if [[ -z ${FAST+x} ]]; then
|
2024-09-20 16:19:03 +02:00
|
|
|
echo "=> Delete mysql server"
|
2021-07-07 18:34:00 +02:00
|
|
|
docker rm -f mysql-server
|
2022-10-14 08:22:04 +02:00
|
|
|
echo "==> To skip this run with: FAST=1 ./run-tests"
|
2021-04-07 16:46:12 +02:00
|
|
|
else
|
|
|
|
|
echo "==> WARNING!! Skipping docker container cleanup, the database might not be pristine!"
|
|
|
|
|
fi
|
2019-04-16 17:22:03 +02:00
|
|
|
|
2016-06-17 09:12:13 -05:00
|
|
|
# create docker network (while the infra code does this, most tests skip infra setup)
|
2022-02-21 12:02:09 -08:00
|
|
|
docker network create --subnet=172.18.0.0/16 --ip-range=172.18.0.0/20 --gateway 172.18.0.1 cloudron --ipv6 --subnet=fd00:c107:d509::/64 || true
|
2019-01-23 16:18:52 +01:00
|
|
|
|
|
|
|
|
# create the same mysql server version to test with
|
|
|
|
|
OUT=`docker inspect mysql-server` || true
|
|
|
|
|
if [[ "${OUT}" = "[]" ]]; then
|
2019-04-18 16:41:10 +02:00
|
|
|
echo "=> Starting mysql-server..."
|
2023-03-20 17:39:21 +01:00
|
|
|
# ulimit nofile is required to make it work on archlinux https://github.com/docker-library/mysql/issues/579#issuecomment-519495808
|
2023-07-11 15:08:20 +05:30
|
|
|
docker run --name mysql-server --ulimit nofile=262144:262144 -e MYSQL_ROOT_PASSWORD=password -d mysql:8.0
|
2019-01-23 16:18:52 +01:00
|
|
|
else
|
2019-04-18 16:41:10 +02:00
|
|
|
echo "=> mysql-server already running. If you want to start fresh, run 'docker rm --force mysql-server'"
|
2019-01-23 16:18:52 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
export MYSQL_IP=`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-server`
|
|
|
|
|
|
2019-04-18 16:41:10 +02:00
|
|
|
echo "=> Waiting for mysql server to be ready..."
|
2019-01-23 16:18:52 +01:00
|
|
|
while ! mysqladmin ping -h"${MYSQL_IP}" --silent; do
|
|
|
|
|
sleep 1
|
|
|
|
|
done
|
|
|
|
|
|
2024-09-20 16:19:03 +02:00
|
|
|
# echo "=> Create iptables blocklist"
|
|
|
|
|
# sudo ipset create cloudron_blocklist hash:net || true
|
2021-04-07 17:30:19 +02:00
|
|
|
|
2019-04-18 16:41:10 +02:00
|
|
|
echo "=> Ensure database"
|
2023-07-11 15:08:20 +05:30
|
|
|
mysql -h"${MYSQL_IP}" -uroot -ppassword -e "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';"
|
2019-01-23 16:18:52 +01:00
|
|
|
mysql -h"${MYSQL_IP}" -uroot -ppassword -e 'CREATE DATABASE IF NOT EXISTS box'
|
|
|
|
|
|
2019-04-18 16:41:10 +02:00
|
|
|
echo "=> Run database migrations"
|
|
|
|
|
BOX_ENV=test DATABASE_URL=mysql://root:password@${MYSQL_IP}/box node_modules/.bin/db-migrate up
|
|
|
|
|
|
|
|
|
|
TESTS=${DEFAULT_TESTS}
|
|
|
|
|
if [[ $# -gt 0 ]]; then
|
|
|
|
|
TESTS="$*"
|
|
|
|
|
fi
|
|
|
|
|
|
2024-09-20 16:19:03 +02:00
|
|
|
echo "=> Run tests"
|
2024-09-22 11:12:49 +02:00
|
|
|
docker run -e BOX_ENV=test -e DATABASE_HOSTNAME=${MYSQL_IP} -v `pwd`:/home/yellowtent/box:ro -v `which node`:/usr/bin/node:ro -v /var/run/docker.sock:/var/run/docker.sock -t cloudron/boxtest node_modules/.bin/mocha --bail --no-timeouts --colors --exit -R spec src/test
|
2024-09-20 16:19:03 +02:00
|
|
|
|