Switch ipa-run-tests to pytest

https://fedorahosted.org/freeipa/ticket/4610

Reviewed-By: Tomas Babej <tbabej@redhat.com>
This commit is contained in:
Petr Viktorin
2014-10-13 14:34:53 +02:00
committed by Tomas Babej
parent 48de128571
commit eaad0a9ced

View File

@@ -20,62 +20,26 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
"""Nose wrapper for running an installed (not in-tree) IPA test suite """Pytest wrapper for running an installed (not in-tree) IPA test suite
Any command-line arguments are passed directly to Nose. Any command-line arguments are passed directly to py.test.
Note that any relative paths given will be based on the ipatests module's path The current directory is changed to the locaition of the ipatests package,
so any relative paths given will be based on the ipatests module's path
""" """
import sys
import os import os
from os import path import sys
import logging
import nose import pytest
from ipapython.ipa_log_manager import log_mgr
import ipatests import ipatests
from ipatests.beakerlib_plugin import BeakerLibPlugin
from ipatests.order_plugin import OrderTests
cmd = [
sys.argv[0],
'--with-doctest',
'--doctest-tests',
'--with-ordered-tests',
'--exclude=plugins',
'--nologcapture',
'--logging-filter=-paramiko',
'--where', os.path.dirname(ipatests.__file__),
]
cmd += sys.argv[1:]
# This must be set so ipalib.api gets initialized property for tests: # This must be set so ipalib.api gets initialized property for tests:
os.environ['IPA_UNIT_TEST_MODE'] = 'cli_test' os.environ['IPA_UNIT_TEST_MODE'] = 'cli_test'
# This is set to store --with-xunit report in an accessible place:
os.environ['IPATEST_XUNIT_PATH'] = os.path.join(os.getcwd(), 'nosetests.xml')
# Forward IPA logging to a normal Python logger. Nose's logcapture plugin os.chdir(os.path.dirname(ipatests.__file__))
# can't work with IPA-managed loggers
class LogHandler(logging.Handler):
name = 'forwarding log handler'
logger = logging.getLogger('IPA')
def emit(self, record): sys.exit(pytest.main(sys.argv[1:]))
self.logger.log(record.levelno, self.format(record))
if 'console' in log_mgr.handlers:
log_mgr.remove_handler('console')
log_mgr.configure(
{
'default_level': 'DEBUG',
'handlers': [{'log_handler': LogHandler(),
'format': '[%(name)s] %(message)s',
'level': 'debug'},
{'level': 'debug',
'name': 'console',
'stream': sys.stderr}]},
configure_state='tests')
nose.main(argv=cmd, addplugins=[BeakerLibPlugin(), OrderTests()])