mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-09 05:38:58 +00:00
validate:launcher: Add a TestManager to run python tests
Add a stupid simple testsuite made to be configured from the outside
This commit is contained in:
parent
94ee508123
commit
d80fb50c4b
6 changed files with 99 additions and 3 deletions
|
@ -5,4 +5,5 @@ SUBDIRS =
|
||||||
apps_PYTHON = \
|
apps_PYTHON = \
|
||||||
__init__.py \
|
__init__.py \
|
||||||
gstvalidate.py \
|
gstvalidate.py \
|
||||||
|
pyunittest.py \
|
||||||
gstcheck.py
|
gstcheck.py
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
install_data(sources: ['__init__.py', 'gstvalidate.py', 'gstcheck.py'],
|
install_data(sources: ['__init__.py', 'gstvalidate.py', 'gstcheck.py', 'pyunittest.py'],
|
||||||
install_dir: _launcherdir + '/apps')
|
install_dir: _launcherdir + '/apps')
|
||||||
|
|
70
validate/launcher/apps/pyunittest.py
Normal file
70
validate/launcher/apps/pyunittest.py
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018,Thibault Saunier <tsaunier@igalia.com>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 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
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this program; if not, write to the
|
||||||
|
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||||
|
# Boston, MA 02110-1301, USA.
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from launcher.baseclasses import Test
|
||||||
|
from launcher.baseclasses import TestsManager
|
||||||
|
|
||||||
|
|
||||||
|
class PythonTest(Test):
|
||||||
|
|
||||||
|
def build_arguments(self):
|
||||||
|
"""Builds subprocess arguments."""
|
||||||
|
self.add_arguments('-m', 'unittest', '.'.join(self.classname.split('.')[1:]))
|
||||||
|
|
||||||
|
|
||||||
|
class PythonTestsManager(TestsManager):
|
||||||
|
name = "pyunittest"
|
||||||
|
arggroup = None
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
def add_options(self, parser):
|
||||||
|
if self.arggroup:
|
||||||
|
return
|
||||||
|
|
||||||
|
arggroup = PythonTestsManager.arggroup = parser.add_argument_group(
|
||||||
|
"Python tests specific options and behaviours")
|
||||||
|
arggroup.add_argument("--pyunittest-dir",
|
||||||
|
action="append",
|
||||||
|
default=[],
|
||||||
|
help="Paths to look for Python tests.")
|
||||||
|
|
||||||
|
def list_tests(self):
|
||||||
|
if self.tests:
|
||||||
|
return self.tests
|
||||||
|
|
||||||
|
for _dir in self.options.pyunittest_dir:
|
||||||
|
loader = unittest.TestLoader()
|
||||||
|
testsuites = loader.discover(_dir)
|
||||||
|
for testsuite in testsuites:
|
||||||
|
for _tests in testsuite:
|
||||||
|
if isinstance(_tests, unittest.loader._FailedTest):
|
||||||
|
print(_tests._exception)
|
||||||
|
continue
|
||||||
|
for test in _tests:
|
||||||
|
self.add_test(PythonTest(
|
||||||
|
sys.executable, test.id(),
|
||||||
|
self.options, self.reporter,
|
||||||
|
extra_env_variables={'PYTHONPATH': _dir}))
|
||||||
|
|
||||||
|
return self.tests
|
|
@ -3,4 +3,5 @@ appsdir = $(libdir)/gst-validate-launcher/python/launcher/testsuites/
|
||||||
SUBDIRS =
|
SUBDIRS =
|
||||||
|
|
||||||
apps_PYTHON = \
|
apps_PYTHON = \
|
||||||
check.py
|
check.py \
|
||||||
|
pyunittest.py
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
install_data(sources: ['check.py'],
|
install_data(sources: ['check.py', 'pyunittest.py'],
|
||||||
install_dir: _launcherdir + '/testsuites')
|
install_dir: _launcherdir + '/testsuites')
|
||||||
|
|
||||||
|
|
24
validate/launcher/testsuites/pyunittest.py
Normal file
24
validate/launcher/testsuites/pyunittest.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018,Thibault Saunier <tsaunier@igalia.com>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 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
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this program; if not, write to the
|
||||||
|
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||||
|
TEST_MANAGER = "pyunittest"
|
||||||
|
|
||||||
|
|
||||||
|
def setup_tests(test_manager, options):
|
||||||
|
"""Sets up python unit testsuite from external configuration."""
|
||||||
|
test_manager.list_tests()
|
||||||
|
return True
|
Loading…
Reference in a new issue