#!/bin/zsh # vim: set shiftwidth=4 softtabstop=4: # # This script will create a database, install some modules and run tests on it # # Arguments: # # - db host if any (will use socket if nothing is provided) # - db user # - other arguments are forwarded as is to the setup command. # # Required: # # - access to pg database # # Version 2.12 here=$(dirname $0) project_home=$(cd $here && cd .. && echo $PWD) dbname=$(basename $project_home)_test # this is the same value as conf/dev/odoo.conf if [[ -e "${project_home}/conf/dev/odoo.conf" ]]; then dbowner=$(python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/conf/dev/odoo.conf') ; print c.get('options', 'db_user')") else dbowner=odoo fi modules_to_install=$(python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print ','.join(c.get('odoo_scripts', 'module_list', '').split())") # color stuff autoload colors if [[ "$terminfo[colors]" -gt 7 ]]; then colors fi for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do eval $COLOR='$fg_no_bold[${(L)COLOR}]' eval BOLD_$COLOR='$fg_bold[${(L)COLOR}]' done eval RESET='$reset_color' # argument handling if [[ $# -gt 0 ]]; then echo ${YELLOW}INFO ${RESET} - Using database host $1 PG_HOST=-h$1 ODOO_HOST=--db_host=$1 shift if [[ $# -gt 0 ]]; then echo ${YELLOW}INFO ${RESET} - Using database user $1 PG_USER=-U$1 ODOO_USER=--db_user=$1 dbowner=$1 shift else PG_USER="" ODOO_USER="" fi else PG_HOST="" ODOO_HOST="" PG_USER="" ODOO_USER="" fi # This should be a parameter if it was simple to parse INSTALL_ARGUMENTS="--log-level=${INSTALL_LOG_LEVEL:-warn}" echo ${YELLOW}INFO ${RESET} - Drop any existing database "$dbname" dropdb $PG_HOST $PG_USER --if-exists $dbname --no-password echo ${YELLOW}INFO ${RESET} - Create database "$dbname" with owner $dbowner createdb $PG_HOST $PG_USER -O $dbowner $dbname --no-password || { echo ${RED}FATAL${RESET} - Cannot create test database ; exit 1; } unaccent=$(python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/conf/dev/odoo.conf') ; print c.get('options', 'unaccent', False)") if [[ "$unaccent" == "True" ]]; then psql $PG_HOST $PG_USER $dbname -c "CREATE EXTENSION unaccent;" fi echo ${YELLOW}INFO ${RESET} - Modules to install: $modules_to_install echo ${YELLOW}INFO ${RESET} - Install those modules $here/start $INSTALL_ARGUMENTS -i $modules_to_install -d $dbname --max-cron=0 --stop-after-init $* $ODOO_HOST $ODOO_USER || { echo ${RED}FATAL${RESET} - Cannot install modules ; exit 1; } echo ${YELLOW}INFO ${RESET} - Run tests on $dbname $here/run_tests $dbname $ODOO_HOST $ODOO_USER $*