run-dbtests 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/bash
  2. set -e
  3. # Create the database that will be used by the fixtures, populating it with the
  4. # default data. Also create a test dak directory.
  5. # After that, run all dbtests
  6. # At the end, clean up.
  7. if [[ ! -v DAK_ROOT ]]; then
  8. DAK_ROOT="$(cd $(dirname "$0")/..; pwd)"
  9. fi
  10. export PGDATABASE=test_projectb
  11. if [[ ! -v DAK_INTEGRATION_TEST ]]; then
  12. SYS_CMD="sudo"
  13. KEEP_ENV_OPT="-E"
  14. USER_CMD="sudo -u dak PGDATABASE=${PGDATABASE} DAKBASE=${DAKBASE}"
  15. PYTHON_COVERAGE=
  16. else
  17. SYS_CMD=""
  18. KEEP_ENV_OPT=""
  19. USER_CMD=""
  20. if [ "$RUN_COVERAGE" = "y" ]; then
  21. if [ "${DAK_PYTHON3:-n}" = "y" ]; then
  22. COVERAGE_CMD=python3-coverage
  23. else
  24. COVERAGE_CMD=python-coverage
  25. fi
  26. PYTHON_COVERAGE="${COVERAGE_CMD} run --rcfile ${DAK_ROOT}/.coveragerc --parallel-mode"
  27. else
  28. PYTHON_COVERAGE=
  29. fi
  30. fi
  31. test-setup() {
  32. # Create the database as expected by the tests
  33. export DAKBASE=$(mktemp -d)
  34. export HOME="${DAKBASE}/home"
  35. ${DAK_ROOT}/setup/dak-setup.sh
  36. mkdir "$HOME" || exit $?
  37. }
  38. test-cleanup() {
  39. echo Dropping DB ${PGDATABASE}
  40. $USER_CMD $KEEP_ENV_OPT dropdb ${PGDATABASE}
  41. echo Deleting temporary directory
  42. $SYS_CMD rm -rf -- ${DAKBASE}
  43. }
  44. # Unless --nocleanup is passed, the script will cleanup at the end.
  45. if [[ "$1" != "--nocleanup" ]]; then
  46. trap test-cleanup EXIT
  47. fi
  48. test-setup
  49. $USER_CMD $PYTHON_COVERAGE ${DAK_ROOT}/tests/dbtest_all.py