#!/bin/bash ## # Copyright (c) 2005-2007 Apple Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ## set -e set -u random="--random=$(date "+%s")"; no_colour=""; until_fail=""; coverage=""; py_version () { local python="$1"; shift echo "$("${python}" -c "from distutils.sysconfig import get_python_version; print get_python_version()")"; } try_python () { local python="$1"; shift if [ -z "${python}" ]; then return 1; fi; if ! type "${python}" > /dev/null 2>&1; then return 1; fi; local py_version="$(py_version "${python}")"; if [ "${py_version/./}" -lt "24" ]; then return 1; fi; return 0; } for v in "" "2.6" "2.5"; do for p in \ "${PYTHON:=}" \ "python${v}" \ "/usr/local/bin/python${v}" \ "/usr/local/python/bin/python${v}" \ "/usr/local/python${v}/bin/python${v}" \ "/opt/bin/python${v}" \ "/opt/python/bin/python${v}" \ "/opt/python${v}/bin/python${v}" \ "/Library/Frameworks/Python.framework/Versions/${v}/bin/python" \ "/opt/local/bin/python${v}" \ "/sw/bin/python${v}" \ ; do if try_python "${p}"; then python="${p}"; break; fi; done; if [ -n "${python:-}" ]; then break; fi; done; if [ -z "${python:-}" ]; then echo "No suitable python found."; exit 1; else echo "Using ${python} as Python"; fi; usage () { program="$(basename "$0")"; if [ "${1--}" != "-" ]; then echo "$@"; echo; fi; echo "Usage: ${program} [options]"; echo "Options:"; echo " -h Print this help and exit"; echo " -n Do not use color"; echo " -o Do not run tests in random order."; echo " -r Use specified seed to determine order."; echo " -u Run until the tests fail."; echo " -c Generate coverage reports."; if [ "${1-}" == "-" ]; then return 0; fi; exit 64; } while getopts "nhoucr:" option; do case "${option}" in '?') usage; ;; 'h') usage -; exit 0; ;; 'o') random=""; ;; 'r') random="--random=$OPTARG"; ;; 'n') no_colour="--reporter=bwverbose"; ;; 'u') until_fail="--until-failure"; ;; 'c') coverage="--coverage"; ;; esac; done; shift $((${OPTIND} - 1)); wd="$(cd "$(dirname "$0")" && pwd -L)"; twisted="$(cd "${wd}/.." && pwd -L)/Twisted"; export PYTHONPATH="$("${wd}/run" -p)"; if [ $# -gt 0 ]; then test_modules="$@"; else test_modules="calendarserver twistedcaldav twext twisted"; fi; cd "${wd}" && "${python}" "${twisted}/bin/trial" ${random} ${until_fail} ${no_colour} ${coverage} ${test_modules};