mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-24 16:10:02 -06:00
2312b38a67
This is a sort of rollback to the pre #93c158b05 state with several improvements. For now, the nodeids calculation by ipa-run-tests is not stable, since it depends on current working directory. Nodeids (tests addresses) are utilized by the other plugins, for example. Unfortunately, the `pytest_load_initial_conftests` hook doesn't correctly work with pytest internal paths, since it is called after the calculation of rootdir was performed, for example. Eventually, it's simpler to follow the default convention for Python test discovery. There is at least one drawback of new "old" implementation. The ignore rules don't support globs, because pytest 4.3.0+ has the same facility via `--ignore-glob`: > Add the `--ignore-glob` parameter to exclude test-modules with > Unix shell-style wildcards. Add the collect_ignore_glob for > conftest.py to exclude test-modules with Unix shell-style > wildcards. Upon switching to pytest4 it will be possible to utilize this. Anyway, tests for checking current basic facilities of ipa-run-tests were added. Fixes: https://pagure.io/freeipa/issue/8007 Signed-off-by: Stanislav Levin <slev@altlinux.org> Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
68 lines
2.3 KiB
Python
Executable File
68 lines
2.3 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
# Authors:
|
|
# Petr Viktorin <pviktori@redhat.com>
|
|
# Jason Gerard DeRose <jderose@redhat.com>
|
|
#
|
|
# Copyright (C) 2008-2013 Red Hat
|
|
# see file 'COPYING' for use and warranty information
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
"""Pytest wrapper for running an installed (not in-tree) IPA test suite
|
|
|
|
Any command-line arguments are passed directly to pytest.
|
|
The current directory is changed to the location of the ipatests package,
|
|
so any relative paths given will be based on the ipatests module's path.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
import ipatests
|
|
|
|
# This is set to store --with-xunit report in an accessible place:
|
|
os.environ['IPATEST_XUNIT_PATH'] = os.path.join(os.getcwd(), 'nosetests.xml')
|
|
|
|
HERE = os.path.dirname(os.path.abspath(ipatests.__file__))
|
|
|
|
def has_option(option):
|
|
if option in sys.argv:
|
|
return True
|
|
for arg in sys.argv:
|
|
for argi in arg.split("="):
|
|
if option in argi:
|
|
return True
|
|
return False
|
|
|
|
# don't override specified command line options
|
|
if not has_option("confcutdir"):
|
|
sys.argv.insert(1, "--confcutdir={}".format(HERE))
|
|
# for backward compatibility
|
|
if not has_option("cache_dir"):
|
|
sys.argv[1:1] = ["-o", 'cache_dir={}'.format(os.path.join(os.getcwd(),
|
|
".pytest_cache"))]
|
|
|
|
pyt_args = [sys.executable, "-c",
|
|
"import sys,pytest;sys.exit(pytest.main())"] + sys.argv[1:]
|
|
# shell is needed to perform globbing
|
|
sh_args = ["/bin/sh", "--norc", "--noprofile", "-c", "--"]
|
|
pyt_args_esc = ["'{}'".format(x) if " " in x else x for x in pyt_args]
|
|
args = sh_args + [" ".join(pyt_args_esc)]
|
|
os.chdir(HERE)
|
|
sys.stdout.flush()
|
|
os.execv(args[0], args)
|