#!/usr/local/bin/python
##############################################################################
#
# Copyright (c) 2004 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Test script to run the unit and functional tests in a Zope installation.

$Id$
"""
import sys, os, warnings

here = os.path.dirname(os.path.realpath(__file__))
here = os.path.dirname(here)

if sys.platform in ("win32",):
    lib = os.path.join(here, "Lib", "site-packages")
else:
    lib = os.path.join(here, "lib", "python")
sys.path.insert(0, lib) # put at beginning to avoid one in site_packages

from zope.testing import testrunner

defaults = ['--tests-pattern', '^f?tests$',
            '--test-path', lib]

# Get rid of twisted.conch.ssh warning
warnings.filterwarnings(
    'ignore', 'PyCrypto', RuntimeWarning, 'twisted[.]conch[.]ssh')

result = testrunner.run(defaults)

# Note, the logging system has bugs, fixed in Python 2.5 that cause spurious
# errors on exit.  We'll execute a fairly voilent suicide to try to avoid
# these.  Given that this is just a test runner, this should be OK.

# Avoid spurious error during exit. Some thing is trying to log
# something after the files used by the logger have been closed.
import logging
logging.disable(999999999)

# Because we're about to use os._exit, we flush output so we don't miss any.
sys.stdout.flush()
sys.stderr.flush()

os._exit(result)
