From c4a8d327c4be07983d94eeb8c56046632137daa6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 13 Jul 2018 23:32:38 +0000 Subject: [PATCH 01/51] - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 142eca5..77d9036 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -34,7 +34,7 @@ Name: python-%{pkgname} Version: 52.1 -Release: 6%{?gitrel}%{?dist} +Release: 7%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools # Found licenses: @@ -459,6 +459,9 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x %changelog +* Fri Jul 13 2018 Fedora Release Engineering - 52.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + * Fri Jun 08 2018 Merlin Mathesius - 52.1-6 - Correct libvirt dependency for EPEL7/RHEL7 From 87dc683a36d0862340d3af99b78fa189a1aba424 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 21 Jul 2018 23:17:41 +0200 Subject: [PATCH 02/51] Fix rst2man reference and python shebangs Also remove obsolete Group tag. --- python-avocado.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/python-avocado.spec b/python-avocado.spec index 77d9036..648ef0d 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -36,7 +36,7 @@ Name: python-%{pkgname} Version: 52.1 Release: 7%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing -Group: Development/Tools + # Found licenses: # avocado/utils/external/gdbmi_parser.py: MIT # avocado/utils/external/spark.py: MIT @@ -55,9 +55,10 @@ Patch1: avocado-selftest-fix-cmdline-check.patch BuildArch: noarch BuildRequires: python2-aexpect BuildRequires: python2-devel -BuildRequires: python2-docutils BuildRequires: python2-mock BuildRequires: python2-resultsdb_api +BuildRequires: /usr/bin/rst2man +BuildRequires: grep, sed %if 0%{?fedora} > 27 || 0%{?rhel} > 7 BuildRequires: python2-flexmock @@ -293,6 +294,8 @@ sed -e "s/'libvirt-python'//" -i optional_plugins/runner_vm/setup.py sed -e "s/'fabric'/'fabric3'/" -i optional_plugins/runner_remote/setup.py %endif +grep -r -l '/usr/bin/env python' . | xargs sed -i 's|/usr/bin/env python|%__python2|' + %build %{__python2} setup.py build pushd optional_plugins/html From 48c501c45fdf1792adc511eb5d0a6fe15a6abe52 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Wed, 16 Jan 2019 15:53:54 -0600 Subject: [PATCH 03/51] Non-modular package is obsoleted by avocado:stable --- .gitignore | 9 - avocado-selftest-doublefree-disable.patch | 11 - avocado-selftest-fix-cmdline-check.patch | 15 - dead.package | 1 + python-avocado.spec | 540 ---------------------- sources | 1 - tests/gdbtest.py | 399 ---------------- tests/gdbtest.py.data/return99.c | 47 -- tests/gdbtest.py.data/segfault.c | 9 - tests/tests.yml | 29 -- 10 files changed, 1 insertion(+), 1060 deletions(-) delete mode 100644 .gitignore delete mode 100644 avocado-selftest-doublefree-disable.patch delete mode 100644 avocado-selftest-fix-cmdline-check.patch create mode 100644 dead.package delete mode 100644 python-avocado.spec delete mode 100644 sources delete mode 100755 tests/gdbtest.py delete mode 100644 tests/gdbtest.py.data/return99.c delete mode 100644 tests/gdbtest.py.data/segfault.c delete mode 100644 tests/tests.yml diff --git a/.gitignore b/.gitignore deleted file mode 100644 index c102fa6..0000000 --- a/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -/avocado-43.0.tar.gz -/avocado-46.0.tar.gz -/avocado-47.0.tar.gz -/avocado-48.0.tar.gz -/avocado-49.0.tar.gz -/avocado-50.0.tar.gz -/avocado-51.0.tar.gz -/avocado-52.0.tar.gz -/avocado-52.1.tar.gz diff --git a/avocado-selftest-doublefree-disable.patch b/avocado-selftest-doublefree-disable.patch deleted file mode 100644 index 075de2b..0000000 --- a/avocado-selftest-doublefree-disable.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -r -u avocado-52.0.orig/selftests/functional/test_output.py avocado-52.0/selftests/functional/test_output.py ---- avocado-52.0.orig/selftests/functional/test_output.py 2017-06-26 19:26:48.000000000 -0500 -+++ avocado-52.0/selftests/functional/test_output.py 2017-08-09 07:40:41.636928188 -0500 -@@ -67,6 +67,7 @@ - def setUp(self): - self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__) - -+ @unittest.skip("Test is producing a false failure due to platform/compiler changes") - @unittest.skipIf(missing_binary('cc'), - "C compiler is required by the underlying doublefree.py test") - def test_output_doublefree(self): diff --git a/avocado-selftest-fix-cmdline-check.patch b/avocado-selftest-fix-cmdline-check.patch deleted file mode 100644 index 525a869..0000000 --- a/avocado-selftest-fix-cmdline-check.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -ru ../avocado-52.1.orig/selftests/functional/test_plugin_diff.py ./selftests/functional/test_plugin_diff.py ---- ../avocado-52.1.orig/selftests/functional/test_plugin_diff.py 2018-03-01 12:05:02.000000000 -0600 -+++ ./selftests/functional/test_plugin_diff.py 2018-03-13 16:50:33.662490323 -0500 -@@ -52,9 +52,9 @@ - result = self.run_and_check(cmd_line, expected_rc) - msg = "# COMMAND LINE" - self.assertIn(msg, result.stdout) -- msg = "-./scripts/avocado run" -+ msg = "-%s run" % AVOCADO - self.assertIn(msg, result.stdout) -- msg = "+./scripts/avocado run" -+ msg = "+%s run" % AVOCADO - self.assertIn(msg, result.stdout) - - def test_diff_nocmdline(self): diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..6867f63 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Non-modular package is obsoleted by avocado:stable diff --git a/python-avocado.spec b/python-avocado.spec deleted file mode 100644 index 648ef0d..0000000 --- a/python-avocado.spec +++ /dev/null @@ -1,540 +0,0 @@ -%global srcname avocado -%global pkgname avocado - -# Conditional for release vs. snapshot builds. Set to 1 for release build. -%if ! 0%{?rel_build:1} - %global rel_build 1 -%endif - -# Settings used for build from snapshots. -%if 0%{?rel_build} - %global gittar %{srcname}-%{version}.tar.gz -%else - %if ! 0%{?commit:1} - %global commit 0ddd3c7b92f18c85157766e9e0ec810e6b3dd37e - %endif - %if ! 0%{?commit_date:1} - %global commit_date 20180301 - %endif - %global shortcommit %(c=%{commit};echo ${c:0:7}) - %global gitrel .%{commit_date}git%{shortcommit} - %global gittar %{srcname}-%{shortcommit}.tar.gz -%endif - -# Selftests are provided but may need to be skipped because many of -# the functional tests are time and resource sensitive and can -# cause race conditions and random build failures. They are -# enabled by default. -# However, selftests need to be disabled when libvirt is not available. -%global with_tests 1 -%if 0%{?rhel} && 0%{?rhel} <= 7 - # libvirt is not available for all RHEL builder architectures - %global with_tests 0 -%endif - -Name: python-%{pkgname} -Version: 52.1 -Release: 7%{?gitrel}%{?dist} -Summary: Framework with tools and libraries for Automated Testing - -# Found licenses: -# avocado/utils/external/gdbmi_parser.py: MIT -# avocado/utils/external/spark.py: MIT -# optional_plugins/html/avocado_result_html/resources/static/css/*: MIT -# optional_plugins/html/avocado_result_html/resources/static/js/*: MIT -# Other files: GPLv2 and GPLv2+ -License: GPLv2 and MIT -URL: http://avocado-framework.github.io/ -%if 0%{?rel_build} -Source0: https://github.com/avocado-framework/%{srcname}/archive/%{version}.tar.gz#/%{gittar} -%else -Source0: https://github.com/avocado-framework/%{srcname}/archive/%{commit}.tar.gz#/%{gittar} -%endif -Patch0: avocado-selftest-doublefree-disable.patch -Patch1: avocado-selftest-fix-cmdline-check.patch -BuildArch: noarch -BuildRequires: python2-aexpect -BuildRequires: python2-devel -BuildRequires: python2-mock -BuildRequires: python2-resultsdb_api -BuildRequires: /usr/bin/rst2man -BuildRequires: grep, sed - -%if 0%{?fedora} > 27 || 0%{?rhel} > 7 -BuildRequires: python2-flexmock -BuildRequires: python2-lxml -BuildRequires: python2-pystache -%else -BuildRequires: python-flexmock -BuildRequires: python-lxml -BuildRequires: pystache -%endif -%if 0%{?fedora} >= 29 -BuildRequires: python2-fabric3 -%else -BuildRequires: fabric -%endif - -%if 0%{?with_tests} -BuildRequires: perl(TAP::Parser) -%if 0%{?fedora} >= 27 || 0%{?rhel} > 7 -BuildRequires: python2-libvirt -%else -BuildRequires: libvirt-python -%endif -%if 0%{?rhel} && 0%{?rhel} <= 7 -BuildRequires: python-yaml -%else -BuildRequires: python2-yaml -%endif -%endif - -%if 0%{?rhel} && 0%{?rhel} <= 7 -BuildRequires: python-psutil -BuildRequires: python-requests -BuildRequires: python-setuptools -BuildRequires: python-sphinx -BuildRequires: python-stevedore -%else -BuildRequires: python2-psutil -BuildRequires: python2-requests -BuildRequires: python2-setuptools -BuildRequires: python2-sphinx -BuildRequires: python2-stevedore -%endif - -%if 0%{?el6} -BuildRequires: procps -BuildRequires: python-argparse -BuildRequires: python-importlib -BuildRequires: python-logutils -BuildRequires: python-unittest2 -%else -BuildRequires: procps-ng -%endif - -# For some strange reason, fabric on Fedora 24 does not require the -# python-crypto package, but the fabric code always imports it. Newer -# fabric versions, such from Fedora 25 do conditional imports (try: -# from Crypto import Random; except: Random = None) and thus do not -# need this requirement. -%if 0%{?fedora} == 24 -BuildRequires: python-crypto -%endif - -%if 0%{?fedora} >= 25 || 0%{?rhel} >= 7 -BuildRequires: kmod -%endif - -%description -Avocado is a set of tools and libraries (what people call -these days a framework) to perform automated testing. - - -%package -n python2-%{pkgname} -Summary: %{summary} -License: GPLv2 and MIT -%{?python_provide:%python_provide python2-%{pkgname}} -Requires: gdb -Requires: gdb-gdbserver -Requires: pyliblzma -Requires: python2 - -%if 0%{?fedora} > 27 || 0%{?rhel} > 7 -Requires: python2-pystache -%else -Requires: pystache -%endif -%if 0%{?fedora} >= 29 -Requires: python2-fabric3 -%else -Requires: fabric -%endif - -%if 0%{?rhel} && 0%{?rhel} <= 7 -Requires: python-requests -Requires: python-stevedore -%else -Requires: python2-requests -Requires: python2-stevedore -%endif - -%if 0%{?el6} -Requires: procps -Requires: python-argparse -Requires: python-importlib -Requires: python-logutils -Requires: python-unittest2 -%else -Requires: procps-ng -%endif - - -%description -n python2-%{pkgname} -Avocado is a set of tools and libraries (what people call -these days a framework) to perform automated testing. - - -%package -n python2-%{pkgname}-plugins-output-html -Summary: Avocado HTML report plugin -%{?python_provide:%python_provide python2-%{pkgname}-plugins-output-html} -Requires: python2-%{pkgname} == %{version}-%{release} - -%if 0%{?fedora} > 27 || 0%{?rhel} > 7 -Requires: python2-pystache -%else -Requires: pystache -%endif - -%description -n python2-%{pkgname}-plugins-output-html -Adds to avocado the ability to generate an HTML report at every job results -directory. It also gives the user the ability to write a report on an -arbitrary filesystem location. - - -%package -n python2-%{pkgname}-plugins-runner-remote -Summary: Avocado Runner for Remote Execution -%{?python_provide:%python_provide python2-%{pkgname}-plugins-runner-remote} -Requires: python2-%{pkgname} == %{version}-%{release} -%if 0%{?fedora} == 24 -Requires: python-crypto -%endif -%if 0%{?fedora} >= 29 -Requires: python2-fabric3 -%else -Requires: fabric -%endif - -%description -n python2-%{pkgname}-plugins-runner-remote -Allows Avocado to run jobs on a remote machine, by means of an SSH -connection. Avocado must be previously installed on the remote machine. - - -%package -n python2-%{pkgname}-plugins-runner-vm -Summary: Avocado Runner for libvirt VM Execution -%{?python_provide:%python_provide python2-%{pkgname}-plugins-runner-vm} -Requires: python2-%{pkgname} == %{version}-%{release} -Requires: python2-%{pkgname}-plugins-runner-remote == %{version}-%{release} -%if 0%{?fedora} >= 27 || 0%{?rhel} > 7 -Requires: python2-libvirt -%else -Requires: libvirt-python -%endif - -%description -n python2-%{pkgname}-plugins-runner-vm -Allows Avocado to run jobs on a libvirt based VM, by means of -interaction with a libvirt daemon and an SSH connection to the VM -itself. Avocado must be previously installed on the VM. - - -%package -n python2-%{pkgname}-plugins-runner-docker -Summary: Avocado Runner for Execution on Docker Containers -%{?python_provide:%python_provide python2-%{pkgname}-plugins-runner-docker} -Requires: python2-%{pkgname} == %{version}-%{release} -Requires: python2-%{pkgname}-plugins-runner-remote == %{version}-%{release} -Requires: python2-aexpect - -%description -n python2-%{pkgname}-plugins-runner-docker -Allows Avocado to run jobs on a Docker container by interacting with a -Docker daemon and attaching to the container itself. Avocado must -be previously installed on the container. - - -%package -n python2-%{pkgname}-plugins-resultsdb -Summary: Avocado plugin to propagate job results to ResultsDB -%{?python_provide:%python_provide python2-%{pkgname}-plugins-resultsdb} -Requires: python2-%{pkgname} == %{version}-%{release} -Requires: python2-resultsdb_api - -%description -n python2-%{pkgname}-plugins-resultsdb -Allows Avocado to send job results directly to a ResultsDB -server. - - -%package -n python2-%{pkgname}-plugins-varianter-yaml-to-mux -Summary: Avocado plugin to generate variants out of yaml files -%{?python_provide:%python_provide python2-%{pkgname}-plugins-varianter-yaml-to-mux} -Requires: python2-%{pkgname} == %{version}-%{release} -%if 0%{?rhel} && 0%{?rhel} <= 7 -Requires: python-yaml -%else -Requires: python2-yaml -%endif - -%description -n python2-%{pkgname}-plugins-varianter-yaml-to-mux -Can be used to produce multiple test variants with test parameters -defined in a yaml file(s). - - -%package -n python-%{pkgname}-examples -Summary: Avocado Test Framework Example Tests -License: GPLv2 -# documentation does not require main package, but needs to be in lock-step if present -Conflicts: python-%{pkgname} < %{version}-%{release}, python-%{pkgname} > %{version}-%{release} - -%description -n python-%{pkgname}-examples -The set of example tests present in the upstream tree of the Avocado framework. -Some of them are used as functional tests of the framework, others serve as -examples of how to write tests on your own. - - -%prep -%if 0%{?rel_build} -%setup -q -n %{srcname}-%{version} -%else -%setup -q -n %{srcname}-%{commit} -%endif -%patch0 -p1 -%patch1 -p1 -# package plugins-runner-vm requires libvirt-python, but the RPM -# version of libvirt-python does not publish the egg info and this -# causes that dep to be attempted to be installed by pip -sed -e "s/'libvirt-python'//" -i optional_plugins/runner_vm/setup.py -%if 0%{?fedora} >= 29 -sed -e "s/'fabric'/'fabric3'/" -i optional_plugins/runner_remote/setup.py -%endif - -grep -r -l '/usr/bin/env python' . | xargs sed -i 's|/usr/bin/env python|%__python2|' - -%build -%{__python2} setup.py build -pushd optional_plugins/html - %{__python2} setup.py build -popd -pushd optional_plugins/runner_remote - %{__python2} setup.py build -popd -pushd optional_plugins/runner_vm - %{__python2} setup.py build -popd -pushd optional_plugins/runner_docker - %{__python2} setup.py build -popd -pushd optional_plugins/resultsdb - %{__python2} setup.py build -popd -pushd optional_plugins/varianter_yaml_to_mux - %{__python2} setup.py build -popd -%{__make} man - -%install -%{__python2} setup.py install --root %{buildroot} --skip-build -pushd optional_plugins/html - %{__python2} setup.py install --root %{buildroot} --skip-build -popd -pushd optional_plugins/runner_remote - %{__python2} setup.py install --root %{buildroot} --skip-build -popd -pushd optional_plugins/runner_vm - %{__python2} setup.py install --root %{buildroot} --skip-build -popd -pushd optional_plugins/runner_docker - %{__python2} setup.py install --root %{buildroot} --skip-build -popd -pushd optional_plugins/resultsdb - %{__python2} setup.py install --root %{buildroot} --skip-build -popd -pushd optional_plugins/varianter_yaml_to_mux - %{__python2} setup.py install --root %{buildroot} --skip-build -popd -%{__mv} %{buildroot}%{_bindir}/avocado %{buildroot}%{_bindir}/avocado-%{python2_version} -%{__ln_s} avocado-%{python2_version} %{buildroot}%{_bindir}/avocado-2 -%{__ln_s} avocado-%{python2_version} %{buildroot}%{_bindir}/avocado -%{__mv} %{buildroot}%{_bindir}/avocado-rest-client %{buildroot}%{_bindir}/avocado-rest-client-%{python2_version} -%{__ln_s} avocado-rest-client-%{python2_version} %{buildroot}%{_bindir}/avocado-rest-client-2 -%{__ln_s} avocado-rest-client-%{python2_version} %{buildroot}%{_bindir}/avocado-rest-client -%{__mkdir_p} %{buildroot}%{_mandir}/man1 -%{__install} -m 0644 man/avocado.1 %{buildroot}%{_mandir}/man1/avocado.1 -%{__install} -m 0644 man/avocado-rest-client.1 %{buildroot}%{_mandir}/man1/avocado-rest-client.1 -%{__install} -d -m 0755 %{buildroot}%{_sharedstatedir}/avocado/data -# relocate examples to documentation directory -%{__mkdir_p} %{buildroot}%{_docdir}/avocado -%{__mv} %{buildroot}%{_datadir}/avocado/tests %{buildroot}%{_docdir}/avocado/tests -%{__mv} %{buildroot}%{_datadir}/avocado/wrappers %{buildroot}%{_docdir}/avocado/wrappers -find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x {} ';' - - -%check -%if 0%{?with_tests} - %{__python2} setup.py develop --user - pushd optional_plugins/html - %{__python2} setup.py develop --user - popd - pushd optional_plugins/runner_remote - %{__python2} setup.py develop --user - popd - pushd optional_plugins/runner_vm - %{__python2} setup.py develop --user - popd - pushd optional_plugins/runner_docker - %{__python2} setup.py develop --user - popd - pushd optional_plugins/resultsdb - %{__python2} setup.py develop --user - popd - pushd optional_plugins/varianter_yaml_to_mux - %{__python2} setup.py develop --user - popd - # Package build environments have the least amount of resources - # we have observed so far. Let's avoid tests that require too - # much resources or are time sensitive. - # Also, use of unversioned python is deprecated, so force use of python2 as per - # https://fedoraproject.org/wiki/Changes/Avoid_usr_bin_python_in_RPM_Build - AVOCADO_CHECK_LEVEL=0 UNITTEST_AVOCADO_CMD="$HOME/.local/bin/avocado" %{__python2} selftests/run -%endif - - -%files -n python2-%{pkgname} -%license LICENSE -%doc README.rst -%dir %{_sysconfdir}/avocado -%dir %{_sysconfdir}/avocado/conf.d -%dir %{_sysconfdir}/avocado/sysinfo -%dir %{_sysconfdir}/avocado/scripts -%dir %{_sysconfdir}/avocado/scripts/job -%dir %{_sysconfdir}/avocado/scripts/job/pre.d -%dir %{_sysconfdir}/avocado/scripts/job/post.d -%config(noreplace) %{_sysconfdir}/avocado/avocado.conf -%config(noreplace) %{_sysconfdir}/avocado/conf.d/gdb.conf -%config(noreplace) %{_sysconfdir}/avocado/sysinfo/commands -%config(noreplace) %{_sysconfdir}/avocado/sysinfo/files -%config(noreplace) %{_sysconfdir}/avocado/sysinfo/profilers -%{_sysconfdir}/avocado/conf.d/README -%{_sysconfdir}/avocado/scripts/job/pre.d/README -%{_sysconfdir}/avocado/scripts/job/post.d/README -%{python2_sitelib}/avocado/ -%{python2_sitelib}/avocado_framework-%{version}-py%{python2_version}.egg-info -%{_bindir}/avocado-%{python2_version} -%{_bindir}/avocado-2 -%{_bindir}/avocado -%{_bindir}/avocado-rest-client-%{python2_version} -%{_bindir}/avocado-rest-client-2 -%{_bindir}/avocado-rest-client -%{_mandir}/man1/avocado.1.gz -%{_mandir}/man1/avocado-rest-client.1.gz -%dir %{_sharedstatedir}/avocado -%dir %{_docdir}/avocado -%{_docdir}/avocado/avocado.rst -%{_docdir}/avocado/avocado-rest-client.rst -%dir %{_libexecdir}/avocado -%{_libexecdir}/avocado/avocado-bash-utils -%{_libexecdir}/avocado/avocado_debug -%{_libexecdir}/avocado/avocado_error -%{_libexecdir}/avocado/avocado_info -%{_libexecdir}/avocado/avocado_warn - - -%files -n python2-%{pkgname}-plugins-output-html -%{python2_sitelib}/avocado_result_html/ -%{python2_sitelib}/avocado_framework_plugin_result_html-%{version}-py%{python2_version}.egg-info - - -%files -n python2-%{pkgname}-plugins-runner-remote -%{python2_sitelib}/avocado_runner_remote/ -%{python2_sitelib}/avocado_framework_plugin_runner_remote-%{version}-py%{python2_version}.egg-info - - -%files -n python2-%{pkgname}-plugins-runner-vm -%{python2_sitelib}/avocado_runner_vm/ -%{python2_sitelib}/avocado_framework_plugin_runner_vm-%{version}-py%{python2_version}.egg-info - - -%files -n python2-%{pkgname}-plugins-runner-docker -%{python2_sitelib}/avocado_runner_docker/ -%{python2_sitelib}/avocado_framework_plugin_runner_docker-%{version}-py%{python2_version}.egg-info - - -%files -n python2-%{pkgname}-plugins-resultsdb -%{python2_sitelib}/avocado_resultsdb/ -%{python2_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python2_version}.egg-info - - -%files -n python2-%{pkgname}-plugins-varianter-yaml-to-mux -%{python2_sitelib}/avocado_varianter_yaml_to_mux/ -%{python2_sitelib}/avocado_framework_plugin_varianter_yaml_to_mux-%{version}-py%{python2_version}.egg-info - - -%files -n python-%{pkgname}-examples -%dir %{_docdir}/avocado -%{_docdir}/avocado/tests -%{_docdir}/avocado/wrappers - - -%changelog -* Fri Jul 13 2018 Fedora Release Engineering - 52.1-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Fri Jun 08 2018 Merlin Mathesius - 52.1-6 -- Correct libvirt dependency for EPEL7/RHEL7 - -* Mon Jun 04 2018 Merlin Mathesius - 52.1-5 -- Conditionalize python2 dependencies for cross-release compatibility of SPEC - -* Mon May 14 2018 Merlin Mathesius - 52.1-4 -- Dependency fabric has been renamed to python2-fabric3 - -* Mon May 14 2018 Merlin Mathesius - 52.1-3 -- correct python_provide argument typo for varianter-yaml-to-mux plugin - -* Mon Apr 9 2018 Cleber Rosa - 52.1-2 -- Added Fedora CI tests - -* Tue Apr 03 2018 Merlin Mathesius - 52.1-1 -- Sync with upstream release 52.1 (LTS series). -- Correct deprecated use of unversioned python. - -* Mon Mar 26 2018 Iryna Shcherbina - 52.0-5 -- Update Python 2 dependency declarations to new packaging standards - (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) - -* Fri Feb 09 2018 Fedora Release Engineering - 52.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Wed Aug 09 2017 Merlin Mathesius - 52.0-3 -- Fix FTBFS error by disabling selfcheck producing false failures -- Update SPEC to use pkgname instead of srcname macro where appropriate - -* Thu Jul 27 2017 Fedora Release Engineering - 52.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Thu Jun 29 2017 Merlin Mathesius - 52.0-1 -- Sync with upstream release 52.0. (BZ#1465409) - -* Wed Jun 14 2017 Merlin Mathesius - 51.0-1 -- Sync with upstream release 51.0. (BZ#1460837) -- Disable selftests when libvirt may not be available. - -* Wed May 17 2017 Merlin Mathesius - 50.0-1 -- Sync with upstream release 50.0. (BZ#1431413) -- Be explicit about selftest level run on check. - -* Tue Apr 25 2017 Merlin Mathesius - 49.0-1 -- Sync with upstream release 49.0. (BZ#1431413) - -* Tue Apr 18 2017 Merlin Mathesius - 48.0-1 -- Sync with upstream release 48.0. (BZ#1431413) -- Allow rel_build macro to be defined outside of the SPEC file. - -* Mon Mar 27 2017 Merlin Mathesius - 47.0-1 -- Sync with upstream release 47.0. -- Enable self-tests during build. -- Add example test to be run by Taskotron. - -* Mon Feb 27 2017 Merlin Mathesius - 46.0-2 -- Incorporate upstream SPEC file changes to split plugins into subpackages. -- Remove obsolete CC-BY-SA license, which went away with the halflings font. - -* Tue Feb 14 2017 Merlin Mathesius - 46.0-1 -- Sync with upstream release 46.0. -- Remove halflings license since font was removed from upstream. -- SPEC updates to easily switch between release and snapshot builds. - -* Sat Feb 11 2017 Fedora Release Engineering - 43.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Tue Jan 10 2017 Merlin Mathesius - 43.0-7 -- SPEC updates to build and install for EPEL. - -* Mon Nov 21 2016 Merlin Mathesius - 43.0-6 -- Initial packaging for Fedora. diff --git a/sources b/sources deleted file mode 100644 index 54aeac2..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -SHA512 (avocado-52.1.tar.gz) = fb97ea6056700f57f34e8e4ce0c27774c386d646aaffc7da2abb8d0a797cff4448934789ffaf81da1592fceae1bb464da2b5dde000730c4f417b03552a432c6c diff --git a/tests/gdbtest.py b/tests/gdbtest.py deleted file mode 100755 index d814fa5..0000000 --- a/tests/gdbtest.py +++ /dev/null @@ -1,399 +0,0 @@ -#!/usr/bin/env python - -import os - -from six.moves import xrange as range - -from avocado import Test -from avocado import main -from avocado.utils import gdb -from avocado.utils import genio -from avocado.utils import process - - -class GdbTest(Test): - - """ - Execute the gdb test - - :avocado: tags=requires_c_compiler - """ - - VALID_CMDS = ["-list-target-features", - "-break-info", - "-break-list", - "-thread-info", - "-stack-info-frame", - "-stack-info-depth"] - - INVALID_CMDS = ["-foobar", - "-magic8ball", - "-find-me-the-bug", - "-auto-debug-it"] - - def setUp(self): - return99_source_path = os.path.join(self.datadir, 'return99.c') - segfault_source_path = os.path.join(self.datadir, 'segfault.c') - self.return99_binary_path = os.path.join(self.outputdir, 'return99') - process.system('gcc -O0 -g %s -o %s' % (return99_source_path, - self.return99_binary_path)) - self.segfault_binary_path = os.path.join(self.outputdir, 'segfault') - process.system('gcc -O0 -g %s -o %s' % (segfault_source_path, - self.segfault_binary_path)) - - @staticmethod - def is_process_alive(process): - """ - Checks if a process is still alive - - :param process: a :class:`subprocess.POpen` instance - :type process: :class:`subprocess.POpen` - :returns: True or False - :rtype: bool - """ - return process.poll() is None - - def test_start_exit(self): - """ - Tests execution of multiple GDB instances without any blocking or race - """ - self.log.info("Testing execution of multiple GDB instances") - process_count = 10 - gdb_instances = [] - for i in range(0, process_count): - gdb_instances.append(gdb.GDB()) - - for i in range(0, process_count): - self.assertEqual(gdb_instances[i].exit(), 0) - - def test_existing_commands_raw(self): - """ - Tests the GDB response to commands that exist and to those that do not - """ - g = gdb.GDB() - self.log.info("Testing existing (valid) GDB commands using raw commands") - for cmd in self.VALID_CMDS: - info_cmd = "-info-gdb-mi-command %s" % cmd[1:] - r = g.cmd(info_cmd) - self.assertEqual(r.result.result.command.exists, 'true') - - self.log.info("Testing non-existing (invalid) GDB commands using raw " - "commands") - for cmd in self.INVALID_CMDS: - info_cmd = "-info-gdb-mi-command %s" % cmd[1:] - r = g.cmd(info_cmd) - self.assertEqual(r.result.result.command.exists, 'false') - - def test_existing_commands(self): - g = gdb.GDB() - - self.log.info("Testing existing (valid) GDB commands using utility " - "methods") - for cmd in self.VALID_CMDS: - self.assertTrue(g.cmd_exists(cmd)) - g.cmd(cmd) - - self.log.info("Testing non-existing (invalid) GDB commands using " - "utility methods") - for cmd in self.INVALID_CMDS: - self.assertFalse(g.cmd_exists(cmd)) - - def test_load_set_breakpoint_run_exit_raw(self): - """ - Test a common GDB cycle using raw commands: load, set break, run, exit - """ - self.log.info("Testing that GDB loads a file and sets a breakpoint") - g = gdb.GDB() - - file_cmd = "-file-exec-and-symbols %s" % self.return99_binary_path - r = g.cmd(file_cmd) - self.assertEqual(r.result.class_, 'done') - - break_cmd = "-break-insert 5" - r = g.cmd(break_cmd) - self.assertEqual(r.result.class_, 'done') - self.assertEqual(r.result.result.bkpt.number, '1') - self.assertEqual(r.result.result.bkpt.enabled, 'y') - - break_del_cmd = "-break-delete 1" - r = g.cmd(break_del_cmd) - self.assertEqual(r.result.class_, 'done') - - run_cmd = "-exec-run" - r = g.cmd(run_cmd) - self.assertEqual(r.result.class_, 'running') - - g.cmd("-gdb-exit") - self.assertEqual(g.process.wait(), 0) - - def test_load_set_breakpoint_run_exit(self): - """ - Test a common GDB cycle: load, set break, delete break, run, exit - """ - self.log.info("Testing a common GDB cycle") - g = gdb.GDB() - g.set_file(self.return99_binary_path) - g.set_break("5") - g.del_break(1) - g.run() - g.exit() - - def test_generate_core(self): - """ - Load a file that will cause a segfault and produce a core dump - """ - self.log.info("Testing that a core dump will be generated") - - g = gdb.GDB() - file_cmd = "-file-exec-and-symbols %s" % self.segfault_binary_path - r = g.cmd(file_cmd) - self.assertEqual(r.result.class_, 'done') - - run_cmd = "-exec-run" - r = g.cmd(run_cmd) - self.assertEqual(r.result.class_, 'running') - - other_messages = g.read_until_break() - core_path = None - for msg in other_messages: - parsed_msg = gdb.parse_mi(msg) - if (hasattr(parsed_msg, 'class_') and - (parsed_msg.class_ == 'stopped') and - (parsed_msg.result.signal_name == 'SIGSEGV')): - core_path = "%s.core" % self.segfault_binary_path - gcore_cmd = 'gcore %s' % core_path - gcore_cmd = gdb.encode_mi_cli(gcore_cmd) - r = g.cmd(gcore_cmd) - self.assertEqual(r.result.class_, 'done') - - self.assertTrue(os.path.exists(core_path)) - g.exit() - - def test_set_multiple_break(self): - """ - Tests that multiple breakpoints do not interfere with each other - """ - self.log.info("Testing setting multiple breakpoints") - g = gdb.GDB() - g.set_file(self.return99_binary_path) - g.set_break('empty') - g.set_break('7') - g.exit() - - def test_disconnect_raw(self): - """ - Connect/disconnect repeatedly from a remote debugger using raw commands - """ - self.log.info("Testing connecting and disconnecting repeatedly using " - "raw commands") - s = gdb.GDBServer() - g = gdb.GDB() - - # Do 100 cycle of target (kind of connects) and disconnects - for _ in range(0, 100): - cmd = '-target-select extended-remote :%s' % s.port - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'connected') - r = g.cmd('-target-disconnect') - self.assertEqual(r.result.class_, 'done') - - # manual server shutdown - cmd = '-target-select extended-remote :%s' % s.port - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'connected') - r = g.cli_cmd('monitor exit') - self.assertEqual(r.result.class_, 'done') - - g.exit() - s.exit() - - def test_disconnect(self): - """ - Connect/disconnect repeatedly from a remote debugger using utilities - """ - self.log.info("Testing connecting and disconnecting repeatedly") - s = gdb.GDBServer() - g = gdb.GDB() - - for _ in range(0, 100): - r = g.connect(s.port) - self.assertEqual(r.result.class_, 'connected') - r = g.disconnect() - self.assertEqual(r.result.class_, 'done') - - g.exit() - s.exit() - - def test_remote_exec(self): - """ - Tests execution on a remote target - """ - self.log.info("Testing execution on a remote target") - hit_breakpoint = False - - s = gdb.GDBServer() - g = gdb.GDB() - - cmd = '-file-exec-and-symbols %s' % self.return99_binary_path - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'done') - - cmd = 'set remote exec-file %s' % self.return99_binary_path - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'done') - - cmd = "-break-insert %s" % 'main' - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'done') - - r = g.cmd('-exec-run') - - other_messages = g.read_until_break() - for msg in other_messages: - parsed_msg = gdb.parse_mi(msg) - if (hasattr(parsed_msg, 'class_') and - parsed_msg.class_ == 'stopped' and - parsed_msg.result.reason == 'breakpoint-hit'): - hit_breakpoint = True - - self.assertTrue(hit_breakpoint) - g.exit() - s.exit() - - def test_stream_messages(self): - """ - Tests if the expected response appears in the result stream messages - """ - self.log.info("Testing that messages appears in the result stream") - g = gdb.GDB() - r = g.cmd("-gdb-version") - self.assertIn("GNU GPL version", r.get_stream_messages_text()) - - def test_connect_multiple_clients(self): - """ - Tests two or more connections to the same server raise an exception - """ - self.log.info("Testing that multiple clients cannot connect at once") - s = gdb.GDBServer() - c1 = gdb.GDB() - c1.connect(s.port) - c2 = gdb.GDB() - self.assertRaises(ValueError, c2.connect, s.port) - s.exit() - - def test_server_exit(self): - """ - Tests that the server is shutdown by using a monitor exit command - """ - self.log.info("Testing that a single server exits cleanly") - s = gdb.GDBServer() - s.exit() - self.assertFalse(self.is_process_alive(s.process)) - - def test_multiple_servers(self): - """ - Tests multiple server instances without any blocking or race condition - """ - self.log.info("Testing execution of multiple GDB server instances") - process_count = 10 - server_instances = [] - for i in range(0, process_count): - s = gdb.GDBServer() - c = gdb.GDB() - c.connect(s.port) - c.cmd('show-version') - c.disconnect() - server_instances.append(s) - - for i in range(0, process_count): - self.assertTrue(self.is_process_alive(server_instances[i].process)) - server_instances[i].exit() - self.assertFalse(self.is_process_alive(server_instances[i].process)) - - def test_interactive(self): - """ - Tests avocado's GDB plugin features - - If GDB command line options are given, `--gdb-run-bin=return99` for - this particular test, the test will stop at binary main() function. - """ - self.log.info('Testing GDB interactivity') - process.run(self.return99_binary_path, ignore_status=True) - - def test_interactive_args(self): - """ - Tests avocado's GDB plugin features with an executable and args - - If GDB command line options are given, `--gdb-run-bin=return99` for - this particular test, the test will stop at binary main() function. - - This test uses `process.run()` without an `ignore_status` parameter - """ - self.log.info('Testing GDB interactivity with arguments') - result = process.run("%s 0" % self.return99_binary_path) - self.assertEqual(result.exit_status, 0) - - def test_exit_status(self): - """ - Tests avocado's GDB plugin features - - If GDB command line options are given, `--gdb-run-bin=return99` for - this particular test, the test will stop at binary main() function. - """ - self.log.info('Testing process exit statuses') - for arg, exp in [(-1, 255), (8, 8)]: - self.log.info('Expecting exit status "%s"', exp) - cmd = "%s %s" % (self.return99_binary_path, arg) - result = process.run(cmd, ignore_status=True) - self.assertEqual(result.exit_status, exp) - - def test_server_stderr(self): - self.log.info('Testing server stderr collection') - s = gdb.GDBServer() - s.exit() - self.assertTrue(os.path.exists(s.stderr_path)) - - stderr_lines = genio.read_all_lines(s.stderr_path) - listening_line = "Listening on port %s" % s.port - self.assertIn(listening_line, stderr_lines) - - def test_server_stdout(self): - self.log.info('Testing server stdout/stderr collection') - s = gdb.GDBServer() - c = gdb.GDB() - c.connect(s.port) - c.set_file(self.return99_binary_path) - c.run() - s.exit() - - self.assertTrue(os.path.exists(s.stdout_path)) - self.assertTrue(os.path.exists(s.stderr_path)) - - stdout_lines = genio.read_all_lines(s.stdout_path) - self.assertIn("return 99", stdout_lines) - - def test_interactive_stdout(self): - """ - Tests avocado's GDB plugin features - - If GDB command line options are given, `--gdb-run-bin=return99` for - this particular test, the test will stop at binary main() function. - """ - self.log.info('Testing GDB interactivity') - result = process.run(self.return99_binary_path, ignore_status=True) - self.assertIn("return 99\n", result.stdout) - - def test_remote(self): - """ - Tests GDBRemote interaction with a GDBServer - """ - s = gdb.GDBServer() - r = gdb.GDBRemote('127.0.0.1', s.port) - r.connect() - r.cmd("qSupported") - r.cmd("qfThreadInfo") - s.exit() - - -if __name__ == '__main__': - main() diff --git a/tests/gdbtest.py.data/return99.c b/tests/gdbtest.py.data/return99.c deleted file mode 100644 index bf14935..0000000 --- a/tests/gdbtest.py.data/return99.c +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include - -void empty() -{ -} - -void write_stdout() -{ - fprintf(stdout, "testing output to stdout\n"); -} - -void write_stderr() -{ - fprintf(stderr, "testing output to stderr\n"); -} - -int forkme() -{ - int pid; - - pid = fork(); - if (pid != 0) - pid = fork(); - if (pid != 0) - pid = fork(); - - return pid; -} - -int main(int argc, char *argv[]) -{ - int exit_status = 99; - - if (argc > 1) - exit_status = atoi(argv[1]); - - empty(); - write_stdout(); - write_stderr(); - - if (forkme()) { - fprintf(stdout, "return %i\n", exit_status); - } - - return exit_status; -} diff --git a/tests/gdbtest.py.data/segfault.c b/tests/gdbtest.py.data/segfault.c deleted file mode 100644 index a685f86..0000000 --- a/tests/gdbtest.py.data/segfault.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -int main() -{ - int *p = NULL; - *p = 0xdead; - - return 0; -} diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index be4a031..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,29 +0,0 @@ -- hosts: localhost - roles: - - role: standard-test-avocado - tests: - - gdbtest.py:GdbTest.test_start_exit - - gdbtest.py:GdbTest.test_existing_commands - - gdbtest.py:GdbTest.test_existing_commands_raw - - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit_raw - - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit - - gdbtest.py:GdbTest.test_generate_core - - gdbtest.py:GdbTest.test_set_multiple_break - - gdbtest.py:GdbTest.test_disconnect_raw - - gdbtest.py:GdbTest.test_disconnect - - gdbtest.py:GdbTest.test_remote_exec - - gdbtest.py:GdbTest.test_stream_messages - - gdbtest.py:GdbTest.test_connect_multiple_clients - - gdbtest.py:GdbTest.test_server_exit - - gdbtest.py:GdbTest.test_server_stdout - - gdbtest.py:GdbTest.test_server_stderr - - gdbtest.py:GdbTest.test_multiple_servers - - gdbtest.py:GdbTest.test_interactive - - gdbtest.py:GdbTest.test_interactive_args - - gdbtest.py:GdbTest.test_exit_status - - gdbtest.py:GdbTest.test_interactive_stdout - - gdbtest.py:GdbTest.test_remote - required_packages: - - gcc - - gdb - - gdb-gdbserver From 0b2167ec1c39fe7776313179bfd0a1db43f86c2b Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Tue, 18 Jun 2019 13:15:14 -0500 Subject: [PATCH 04/51] Sync with upstream release 69.1 (LTS series). Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 11 +++++++---- sources | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 17079e4..94ccf36 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ /avocado-67.0.tar.gz /avocado-68.0.tar.gz /avocado-69.0.tar.gz +/avocado-69.1.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index 9dd4415..3243805 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit 406f29bbdf46f2320936da0028ae5df53559915c + %global commit 5ed5ac2fc05c65f06a199d41d27f632c68ffe9cd %endif %if ! 0%{?commit_date:1} - %global commit_date 20190226 + %global commit_date 20190612 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -70,8 +70,8 @@ %endif Name: python-%{pkgname} -Version: 69.0 -Release: 4%{?gitrel}%{?dist} +Version: 69.1 +Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools # Found licenses: @@ -1170,6 +1170,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Tue Jun 18 2019 Merlin Mathesius - 69.1-1 +- Sync with upstream release 69.1 (LTS series). + * Wed May 22 2019 Merlin Mathesius - 69.0-4 - pyliblzma is Python 2-only and no longer available as of F31. - Unversioned executables should now be Python 3. diff --git a/sources b/sources index 5a59e5d..09c3124 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-69.0.tar.gz) = 5353c85d94a9754a6e23eb2b4e1a09dc4f87e3590ff1073383b2b8ac5e2eeb7cddadf5773c762f1dbd8b7a04ed6314f68cf7014acc4e709683f0251518c30b10 +SHA512 (avocado-69.1.tar.gz) = 9a41127e17ae3f328287e9450389872e4ffcb7867c56bf95d0f039067530f8e9bf780362a9a26a6ecbc8304225543f367fba7969cbd4aa9a644d54046bfb6b43 From 814811a985b5f64b9be41593da085bfe1d939971 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Thu, 27 Jun 2019 15:53:49 -0500 Subject: [PATCH 05/51] Sync with upstream release 70.0. Drop all Python 2 support from SPEC file. Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 602 ++------------------------------------------ sources | 2 +- 3 files changed, 25 insertions(+), 580 deletions(-) diff --git a/.gitignore b/.gitignore index 17079e4..f435916 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ /avocado-67.0.tar.gz /avocado-68.0.tar.gz /avocado-69.0.tar.gz +/avocado-70.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index 9dd4415..d2842ae 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit 406f29bbdf46f2320936da0028ae5df53559915c + %global commit cc0a3f66a1ae11bbc165fd787a04926cdab88f80 %endif %if ! 0%{?commit_date:1} - %global commit_date 20190226 + %global commit_date 20190625 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -34,17 +34,6 @@ %global with_tests 0 %endif -%if 0%{?fedora} > 30 || 0%{?rhel} > 7 - %bcond_with python2 -%else - %bcond_without python2 -%endif -%if 0%{?fedora} || 0%{?rhel} > 7 - %bcond_without python3 -%else - %bcond_with python3 -%endif - # Avocado is currently incompatible with the Fabric API in Fedora 31 and later # https://github.com/avocado-framework/avocado/issues/3125 %if 0%{?fedora} >= 31 @@ -54,24 +43,15 @@ %endif # Python 3 version of Fabric package is new starting with Fedora 29 -%if %{with python3} && 0%{?fedora} >= 29 +%if 0%{?fedora} >= 29 %global with_python3_fabric 1 %else %global with_python3_fabric 0 %endif -# Python2 binary packages are being removed -# See https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal -# python2-resultsdb_api package has been removed in F30 -%if %{with python2} && ( (0%{?fedora} && 0%{?fedora} <= 29) || (0%{?rhel} && 0%{?rhel} <= 7) ) -%global with_python2_resultsdb 1 -%else -%global with_python2_resultsdb 0 -%endif - Name: python-%{pkgname} -Version: 69.0 -Release: 4%{?gitrel}%{?dist} +Version: 70.0 +Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools # Found licenses: @@ -83,54 +63,8 @@ URL: http://avocado-framework.github.io/ Source0: https://github.com/avocado-framework/%{srcname}/archive/%{gitref}.tar.gz#/%{gittar} BuildArch: noarch -BuildRequires: procps-ng BuildRequires: kmod - -%if %{with python2} -BuildRequires: python2-aexpect -BuildRequires: python2-devel -BuildRequires: python2-docutils -BuildRequires: python2-mock -BuildRequires: python2-psutil -BuildRequires: python2-requests -BuildRequires: python2-setuptools -BuildRequires: python2-six -%if 0%{?fedora} && 0%{?fedora} <= 30 -# python2-sphinx is no longer available or needed as of F31 -BuildRequires: python2-sphinx -%endif -%if 0%{?fedora} > 27 || 0%{?rhel} > 7 -BuildRequires: python2-jinja2 -%else -BuildRequires: python-jinja2 -%endif -%if %{with_fabric} -%if 0%{?fedora} >= 29 -BuildRequires: python2-fabric3 -%else -BuildRequires: fabric -%endif -%endif # with_fabric -%if 0%{?fedora} || 0%{?rhel} > 7 -BuildRequires: python2-enum34 -BuildRequires: python2-lxml -BuildRequires: python2-stevedore -%else -BuildRequires: python-enum34 -BuildRequires: python-lxml -BuildRequires: python-stevedore -%endif -%if 0%{?fedora} && 0%{?fedora} <= 29 -# Python2 binary packages are being removed -# See https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal -BuildRequires: python2-pycdlib -%endif -%if %{with_python2_resultsdb} -BuildRequires: python2-resultsdb_api -%endif -%endif - -%if %{with python3} +BuildRequires: procps-ng BuildRequires: python3-aexpect BuildRequires: python3-devel BuildRequires: python3-docutils @@ -139,7 +73,6 @@ BuildRequires: python3-lxml BuildRequires: python3-mock BuildRequires: python3-psutil BuildRequires: python3-pycdlib -BuildRequires: python3-requests BuildRequires: python3-resultsdb_api BuildRequires: python3-setuptools BuildRequires: python3-six @@ -150,7 +83,6 @@ BuildRequires: python3-stevedore BuildRequires: python3-fabric3 %endif %endif # with_fabric -%endif %if 0%{?with_tests} BuildRequires: genisoimage @@ -160,18 +92,6 @@ BuildRequires: psmisc %if 0%{?fedora} >= 30 || 0%{?rhel} > 7 BuildRequires: glibc-all-langpacks %endif -%if %{with python2} -%if 0%{?fedora} >= 27 || 0%{?rhel} > 7 -BuildRequires: python2-libvirt -BuildRequires: python2-netifaces -BuildRequires: python2-yaml -%else -BuildRequires: libvirt-python -BuildRequires: python-netifaces -BuildRequires: python-yaml -%endif -%endif -%if %{with python3} BuildRequires: python3-netifaces BuildRequires: python3-yaml %if 0%{?fedora} >= 27 || 0%{?rhel} > 7 @@ -179,8 +99,7 @@ BuildRequires: python3-libvirt %else BuildRequires: libvirt-python3 %endif -%endif -%endif +%endif # with_tests %description Avocado is a set of tools and libraries (what people call @@ -202,25 +121,12 @@ sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to %endif %build -%if %{with python2} -%py2_build -%endif -%if %{with python3} %py3_build -%endif pushd optional_plugins/html - %if %{with python2} - %py2_build - %endif - %if %{with python3} %py3_build - %endif popd pushd optional_plugins/runner_remote %if %{with_fabric} - %if %{with python2} - %py2_build - %endif %if %{with_python3_fabric} %py3_build %endif @@ -228,9 +134,6 @@ pushd optional_plugins/runner_remote popd pushd optional_plugins/runner_vm %if %{with_fabric} - %if %{with python2} - %py2_build - %endif %if %{with_python3_fabric} %py3_build %endif @@ -238,127 +141,54 @@ pushd optional_plugins/runner_vm popd pushd optional_plugins/runner_docker %if %{with_fabric} - %if %{with python2} - %py2_build - %endif %if %{with_python3_fabric} %py3_build %endif %endif # with_fabric popd pushd optional_plugins/resultsdb - %if %{with_python2_resultsdb} - %py2_build - %endif - %if %{with python3} %py3_build - %endif popd pushd optional_plugins/varianter_yaml_to_mux - %if %{with python2} - %py2_build - %endif - %if %{with python3} %py3_build - %endif popd pushd optional_plugins/loader_yaml - %if %{with python2} - %py2_build - %endif - %if %{with python3} %py3_build - %endif popd pushd optional_plugins/golang - %if %{with python2} - %py2_build - %endif - %if %{with python3} %py3_build - %endif popd pushd optional_plugins/varianter_pict - %if %{with python2} - %py2_build - %endif - %if %{with python3} %py3_build - %endif popd pushd optional_plugins/varianter_cit - %if %{with python2} - %py2_build - %endif - %if %{with python3} %py3_build - %endif popd pushd optional_plugins/result_upload - %if %{with python2} - %py2_build - %endif - %if %{with python3} %py3_build - %endif popd pushd optional_plugins/glib - %if %{with python2} - %py2_build - %endif - %if %{with python3} %py3_build - %endif popd %{__make} man %install -%if %{with python2} -%py2_install -%{__mv} %{buildroot}%{_bindir}/avocado %{buildroot}%{_bindir}/avocado-%{python2_version} -%{__ln_s} avocado-%{python2_version} %{buildroot}%{_bindir}/avocado-2 -%{__mv} %{buildroot}%{_bindir}/avocado-rest-client %{buildroot}%{_bindir}/avocado-rest-client-%{python2_version} -%{__ln_s} avocado-rest-client-%{python2_version} %{buildroot}%{_bindir}/avocado-rest-client-2 -# configuration is held at /etc/avocado only and part of the -# python-avocado-common package -%{__rm} -rf %{buildroot}%{python2_sitelib}/avocado/etc -# ditto for libexec files -%{__rm} -rf %{buildroot}%{python2_sitelib}/avocado/libexec -%endif -%if %{with python3} %py3_install %{__mv} %{buildroot}%{_bindir}/avocado %{buildroot}%{_bindir}/avocado-%{python3_version} %{__ln_s} avocado-%{python3_version} %{buildroot}%{_bindir}/avocado-3 -%{__mv} %{buildroot}%{_bindir}/avocado-rest-client %{buildroot}%{_bindir}/avocado-rest-client-%{python3_version} -%{__ln_s} avocado-rest-client-%{python3_version} %{buildroot}%{_bindir}/avocado-rest-client-3 # configuration is held at /etc/avocado only and part of the # python-avocado-common package %{__rm} -rf %{buildroot}%{python3_sitelib}/avocado/etc # ditto for libexec files %{__rm} -rf %{buildroot}%{python3_sitelib}/avocado/libexec -%endif -%if %{with python3} # Unversioned executables should now be the Python 3 version if shipping with Python 3 # https://docs.fedoraproject.org/en-US/packaging-guidelines/Python_Appendix/ %{__ln_s} avocado-%{python3_version} %{buildroot}%{_bindir}/avocado -%{__ln_s} avocado-rest-client-%{python3_version} %{buildroot}%{_bindir}/avocado-rest-client -%else -%{__ln_s} avocado-%{python2_version} %{buildroot}%{_bindir}/avocado -%{__ln_s} avocado-rest-client-%{python2_version} %{buildroot}%{_bindir}/avocado-rest-client -%endif pushd optional_plugins/html - %if %{with python2} - %py2_install - %endif - %if %{with python3} %py3_install - %endif popd pushd optional_plugins/runner_remote %if %{with_fabric} - %if %{with python2} - %py2_install - %endif %if %{with_python3_fabric} %py3_install %endif @@ -366,9 +196,6 @@ pushd optional_plugins/runner_remote popd pushd optional_plugins/runner_vm %if %{with_fabric} - %if %{with python2} - %py2_install - %endif %if %{with_python3_fabric} %py3_install %endif @@ -376,85 +203,37 @@ pushd optional_plugins/runner_vm popd pushd optional_plugins/runner_docker %if %{with_fabric} - %if %{with python2} - %py2_install - %endif %if %{with_python3_fabric} %py3_install %endif %endif # with_fabric popd pushd optional_plugins/resultsdb - %if %{with_python2_resultsdb} - %py2_install - %endif - %if %{with python3} %py3_install - %endif popd pushd optional_plugins/varianter_yaml_to_mux - %if %{with python2} - %py2_install - %endif - %if %{with python3} %py3_install - %endif popd pushd optional_plugins/loader_yaml - %if %{with python2} - %py2_install - %endif - %if %{with python3} %py3_install - %endif popd pushd optional_plugins/golang - %if %{with python2} - %py2_install - %endif - %if %{with python3} %py3_install - %endif popd pushd optional_plugins/varianter_pict - %if %{with python2} - %py2_install - %endif - %if %{with python3} %py3_install - %endif popd pushd optional_plugins/varianter_cit - %if %{with python2} - %py2_install - %endif - %if %{with python3} %py3_install - %endif popd pushd optional_plugins/result_upload - %if %{with python2} - %py2_install - %endif - %if %{with python3} %py3_install - %endif popd pushd optional_plugins/glib - %if %{with python2} - %py2_install - %endif - %if %{with python3} %py3_install - %endif popd # cleanup plugin test cruft -%if %{with python2} -%{__rm} -rf %{buildroot}%{python2_sitelib}/tests -%endif -%if %{with python3} %{__rm} -rf %{buildroot}%{python3_sitelib}/tests -%endif %{__mkdir} -p %{buildroot}%{_sysconfdir}/avocado %{__cp} avocado/etc/avocado/avocado.conf %{buildroot}%{_sysconfdir}/avocado/avocado.conf %{__cp} -r avocado/etc/avocado/conf.d %{buildroot}%{_sysconfdir}/avocado/conf.d @@ -468,7 +247,6 @@ popd %{__cp} avocado/libexec/avocado_warn %{buildroot}%{_libexecdir}/avocado/avocado_warn %{__mkdir_p} %{buildroot}%{_mandir}/man1 %{__install} -m 0644 man/avocado.1 %{buildroot}%{_mandir}/man1/avocado.1 -%{__install} -m 0644 man/avocado-rest-client.1 %{buildroot}%{_mandir}/man1/avocado-rest-client.1 %{__install} -d -m 0755 %{buildroot}%{_sharedstatedir}/avocado/data # place examples in documentation directory %{__install} -d -m 0755 %{buildroot}%{_docdir}/avocado @@ -485,62 +263,6 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x %check %if 0%{?with_tests} - %if %{with python2} - %{__python2} setup.py develop --user - pushd optional_plugins/html - %{__python2} setup.py develop --user - popd - %if %{with_fabric} - pushd optional_plugins/runner_remote - %{__python2} setup.py develop --user - popd - pushd optional_plugins/runner_vm - %{__python2} setup.py develop --user - popd - pushd optional_plugins/runner_docker - %{__python2} setup.py develop --user - popd - %endif # with_fabric - %if %{with_python2_resultsdb} - pushd optional_plugins/resultsdb - %{__python2} setup.py develop --user - popd - %endif # with_python2_resultsdb - pushd optional_plugins/varianter_yaml_to_mux - %{__python2} setup.py develop --user - popd - pushd optional_plugins/loader_yaml - %{__python2} setup.py develop --user - popd - pushd optional_plugins/golang - %{__python2} setup.py develop --user - popd - pushd optional_plugins/varianter_pict - %{__python2} setup.py develop --user - popd - pushd optional_plugins/varianter_cit - %{__python2} setup.py develop --user - popd - pushd optional_plugins/result_upload - %{__python2} setup.py develop --user - popd - pushd optional_plugins/glib - %{__python2} setup.py develop --user - popd - # LANG: to make the results predictable, we pin the language - # that is used during test execution. - # AVOCADO_CHECK_LEVEL: package build environments have the least - # amount of resources we have observed so far. Let's avoid tests that - # require too much resources or are time sensitive - # UNITTEST_AVOCADO_CMD: the "avocado" command to be run during - # unittests needs to be a Python specific one on Fedora >= 28. Let's - # use the one that was setup in the source tree by the "setup.py - # develop --user" step and is guaranteed to be version specific. - USER_BASE=`%{__python2} -m site --user-base` - LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 UNITTEST_AVOCADO_CMD=$USER_BASE/bin/avocado %{__python2} selftests/run - %endif - - %if %{with python3} %{__python3} setup.py develop --user pushd optional_plugins/html %{__python3} setup.py develop --user @@ -582,62 +304,20 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x pushd optional_plugins/glib %{__python3} setup.py develop --user popd + # LANG: to make the results predictable, we pin the language + # that is used during test execution. + # AVOCADO_CHECK_LEVEL: package build environments have the least + # amount of resources we have observed so far. Let's avoid tests that + # require too much resources or are time sensitive + # UNITTEST_AVOCADO_CMD: the "avocado" command to be run during + # unittests needs to be a Python specific one on Fedora >= 28. Let's + # use the one that was setup in the source tree by the "setup.py + # develop --user" step and is guaranteed to be version specific. USER_BASE=`%{__python3} -m site --user-base` LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 UNITTEST_AVOCADO_CMD=$USER_BASE/bin/avocado %{__python3} selftests/run - %endif %endif -%if %{with python2} -%package -n python2-%{pkgname} -Summary: %{summary} -License: GPLv2 and MIT -%{?python_provide:%python_provide python2-%{pkgname}} -Requires: python-%{pkgname}-common == %{version}-%{release} -Requires: gdb -Requires: gdb-gdbserver -Requires: procps-ng -Requires: python2 -Requires: python2-requests -Requires: python2-setuptools -Requires: python2-six -%if 0%{?fedora} || 0%{?rhel} > 7 -Requires: python2-enum34 -Requires: python2-stevedore -%else -Requires: python-enum34 -Requires: python-stevedore -%endif -%if 0%{?fedora} && 0%{?fedora} <= 29 -# Python2 binary packages are being removed -# See https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal -Requires: python2-pycdlib -%endif -%if 0%{?fedora} && 0%{?fedora} <= 30 -# More Python2 binary packages removed -Requires: pyliblzma -%endif - -%description -n python2-%{pkgname} -Avocado is a set of tools and libraries (what people call -these days a framework) to perform automated testing. - -%files -n python2-%{pkgname} -%license LICENSE -%doc README.rst -%{python2_sitelib}/avocado/ -%{python2_sitelib}/avocado_framework-%{version}-py%{python2_version}.egg-info -%{_bindir}/avocado-%{python2_version} -%{_bindir}/avocado-2 -%{_bindir}/avocado-rest-client-%{python2_version} -%{_bindir}/avocado-rest-client-2 -%if %{without python3} -%{_bindir}/avocado -%{_bindir}/avocado-rest-client -%endif -%endif - -%if %{with python3} %package -n python3-%{pkgname} Summary: %{summary} License: GPLv2 and MIT @@ -648,7 +328,6 @@ Requires: gdb-gdbserver Requires: procps-ng Requires: python3 Requires: python3-pycdlib -Requires: python3-requests Requires: python3-setuptools Requires: python3-six Requires: python3-stevedore @@ -665,10 +344,6 @@ these days a framework) to perform automated testing. %{_bindir}/avocado-%{python3_version} %{_bindir}/avocado-3 %{_bindir}/avocado -%{_bindir}/avocado-rest-client-%{python3_version} -%{_bindir}/avocado-rest-client-3 -%{_bindir}/avocado-rest-client -%endif %package -n python-%{pkgname}-common @@ -679,7 +354,6 @@ Common files (such as configuration) for the Avocado Testing Framework. %files -n python-%{pkgname}-common %{_mandir}/man1/avocado.1.gz -%{_mandir}/man1/avocado-rest-client.1.gz %dir %{_docdir}/avocado %dir %{_sharedstatedir}/avocado %dir %{_sysconfdir}/avocado @@ -700,28 +374,6 @@ Common files (such as configuration) for the Avocado Testing Framework. %{_sysconfdir}/avocado/scripts/job/post.d/README -%if %{with python2} -%package -n python2-%{pkgname}-plugins-output-html -Summary: Avocado HTML report plugin -%{?python_provide:%python_provide python2-%{pkgname}-plugins-output-html} -Requires: python2-%{pkgname} == %{version}-%{release} -%if 0%{?fedora} > 27 || 0%{?rhel} > 7 -Requires: python2-jinja2 -%else -Requires: python-jinja2 -%endif - -%description -n python2-%{pkgname}-plugins-output-html -Adds to avocado the ability to generate an HTML report at every job results -directory. It also gives the user the ability to write a report on an -arbitrary filesystem location. - -%files -n python2-%{pkgname}-plugins-output-html -%{python2_sitelib}/avocado_result_html/ -%{python2_sitelib}/avocado_framework_plugin_result_html-%{version}-py%{python2_version}.egg-info -%endif - -%if %{with python3} %package -n python3-%{pkgname}-plugins-output-html Summary: Avocado HTML report plugin %{?python_provide:%python_provide python3-%{pkgname}-plugins-output-html} @@ -736,30 +388,9 @@ arbitrary filesystem location. %files -n python3-%{pkgname}-plugins-output-html %{python3_sitelib}/avocado_result_html/ %{python3_sitelib}/avocado_framework_plugin_result_html-%{version}-py%{python3_version}.egg-info -%endif %if %{with_fabric} -%if %{with python2} -%package -n python2-%{pkgname}-plugins-runner-remote -Summary: Avocado Runner for Remote Execution -%{?python_provide:%python_provide python2-%{pkgname}-plugins-runner-remote} -Requires: python2-%{pkgname} == %{version}-%{release} -%if 0%{?fedora} >= 29 -Requires: python2-fabric3 -%else -Requires: fabric -%endif - -%description -n python2-%{pkgname}-plugins-runner-remote -Allows Avocado to run jobs on a remote machine, by means of an SSH -connection. Avocado must be previously installed on the remote machine. - -%files -n python2-%{pkgname}-plugins-runner-remote -%{python2_sitelib}/avocado_runner_remote/ -%{python2_sitelib}/avocado_framework_plugin_runner_remote-%{version}-py%{python2_version}.egg-info -%endif - %if %{with_python3_fabric} %package -n python3-%{pkgname}-plugins-runner-remote Summary: Avocado Runner for Remote Execution @@ -774,33 +405,11 @@ connection. Avocado must be previously installed on the remote machine. %files -n python3-%{pkgname}-plugins-runner-remote %{python3_sitelib}/avocado_runner_remote/ %{python3_sitelib}/avocado_framework_plugin_runner_remote-%{version}-py%{python3_version}.egg-info -%endif +%endif # with_python3_fabric %endif # with_fabric %if %{with_fabric} -%if %{with python2} -%package -n python2-%{pkgname}-plugins-runner-vm -Summary: Avocado Runner for libvirt VM Execution -%{?python_provide:%python_provide python2-%{pkgname}-plugins-runner-vm} -Requires: python2-%{pkgname} == %{version}-%{release} -Requires: python2-%{pkgname}-plugins-runner-remote == %{version}-%{release} -%if 0%{?fedora} >= 27 || 0%{?rhel} > 7 -Requires: python2-libvirt -%else -Requires: libvirt-python -%endif - -%description -n python2-%{pkgname}-plugins-runner-vm -Allows Avocado to run jobs on a libvirt based VM, by means of -interaction with a libvirt daemon and an SSH connection to the VM -itself. Avocado must be previously installed on the VM. - -%files -n python2-%{pkgname}-plugins-runner-vm -%{python2_sitelib}/avocado_runner_vm/ -%{python2_sitelib}/avocado_framework_plugin_runner_vm-%{version}-py%{python2_version}.egg-info -%endif - %if %{with_python3_fabric} %package -n python3-%{pkgname}-plugins-runner-vm Summary: Avocado Runner for libvirt VM Execution @@ -817,29 +426,11 @@ itself. Avocado must be previously installed on the VM. %files -n python3-%{pkgname}-plugins-runner-vm %{python3_sitelib}/avocado_runner_vm/ %{python3_sitelib}/avocado_framework_plugin_runner_vm-%{version}-py%{python3_version}.egg-info -%endif +%endif # with_python3_fabric %endif # with_fabric %if %{with_fabric} -%if %{with python2} -%package -n python2-%{pkgname}-plugins-runner-docker -Summary: Avocado Runner for Execution on Docker Containers -%{?python_provide:%python_provide python2-%{pkgname}-plugins-runner-docker} -Requires: python2-%{pkgname} == %{version}-%{release} -Requires: python2-%{pkgname}-plugins-runner-remote == %{version}-%{release} -Requires: python2-aexpect - -%description -n python2-%{pkgname}-plugins-runner-docker -Allows Avocado to run jobs on a Docker container by interacting with a -Docker daemon and attaching to the container itself. Avocado must -be previously installed on the container. - -%files -n python2-%{pkgname}-plugins-runner-docker -%{python2_sitelib}/avocado_runner_docker/ -%{python2_sitelib}/avocado_framework_plugin_runner_docker-%{version}-py%{python2_version}.egg-info -%endif - %if %{with_python3_fabric} %package -n python3-%{pkgname}-plugins-runner-docker Summary: Avocado Runner for Execution on Docker Containers @@ -856,28 +447,10 @@ be previously installed on the container. %files -n python3-%{pkgname}-plugins-runner-docker %{python3_sitelib}/avocado_runner_docker/ %{python3_sitelib}/avocado_framework_plugin_runner_docker-%{version}-py%{python3_version}.egg-info -%endif +%endif # with_python3_fabric %endif # with_fabric -%if %{with_python2_resultsdb} -%package -n python2-%{pkgname}-plugins-resultsdb -Summary: Avocado plugin to propagate job results to ResultsDB -%{?python_provide:%python_provide python2-%{pkgname}-plugins-resultsdb} -Requires: python2-%{pkgname} == %{version}-%{release} -Requires: python2-resultsdb_api - -%description -n python2-%{pkgname}-plugins-resultsdb -Allows Avocado to send job results directly to a ResultsDB -server. - -%files -n python2-%{pkgname}-plugins-resultsdb -%{python2_sitelib}/avocado_resultsdb/ -%{python2_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python2_version}.egg-info -%config(noreplace) %{_sysconfdir}/avocado/conf.d/resultsdb.conf -%endif - -%if %{with python3} %package -n python3-%{pkgname}-plugins-resultsdb Summary: Avocado plugin to propagate job results to ResultsDB %{?python_provide:%python_provide python3-%{pkgname}-plugins-resultsdb} @@ -892,30 +465,8 @@ server. %{python3_sitelib}/avocado_resultsdb/ %{python3_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python3_version}.egg-info %config(noreplace) %{_sysconfdir}/avocado/conf.d/resultsdb.conf -%endif -%if %{with python2} -%package -n python2-%{pkgname}-plugins-varianter-yaml-to-mux -Summary: Avocado plugin to generate variants out of yaml files -%{?python_provide:%python_provide python2-%{pkgname}-plugins-varianter-yaml-to-mux} -Requires: python2-%{pkgname} == %{version}-%{release} -%if 0%{?fedora} >= 27 || 0%{?rhel} > 7 -Requires: python2-yaml -%else -Requires: python-yaml -%endif - -%description -n python2-%{pkgname}-plugins-varianter-yaml-to-mux -Can be used to produce multiple test variants with test parameters -defined in a yaml file(s). - -%files -n python2-%{pkgname}-plugins-varianter-yaml-to-mux -%{python2_sitelib}/avocado_varianter_yaml_to_mux/ -%{python2_sitelib}/avocado_framework_plugin_varianter_yaml_to_mux-%{version}-py%{python2_version}.egg-info -%endif - -%if %{with python3} %package -n python3-%{pkgname}-plugins-varianter-yaml-to-mux Summary: Avocado plugin to generate variants out of yaml files %{?python_provide:%python_provide python3-%{pkgname}-plugins-varianter-yaml-to-mux} @@ -929,25 +480,8 @@ defined in a yaml file(s). %files -n python3-%{pkgname}-plugins-varianter-yaml-to-mux %{python3_sitelib}/avocado_varianter_yaml_to_mux/ %{python3_sitelib}/avocado_framework_plugin_varianter_yaml_to_mux-%{version}-py%{python3_version}.egg-info -%endif -%if %{with python2} -%package -n python2-%{pkgname}-plugins-loader-yaml -Summary: Avocado plugin that loads tests from YAML files -%{?python_provide:%python_provide python2-%{pkgname}-plugins-loader-yaml} -Requires: python2-%{pkgname}-plugins-varianter-yaml-to-mux == %{version}-%{release} - -%description -n python2-%{pkgname}-plugins-loader-yaml -Can be used to produce a test suite from definitions in a YAML file, -similar to the one used in the yaml_to_mux varianter plugin. - -%files -n python2-%{pkgname}-plugins-loader-yaml -%{python2_sitelib}/avocado_loader_yaml/ -%{python2_sitelib}/avocado_framework_plugin_loader_yaml-%{version}-py%{python2_version}.egg-info -%endif - -%if %{with python3} %package -n python3-%{pkgname}-plugins-loader-yaml Summary: Avocado plugin that loads tests from YAML files %{?python_provide:%python_provide python3-%{pkgname}-plugins-loader-yaml} @@ -960,26 +494,8 @@ similar to the one used in the yaml_to_mux varianter plugin. %files -n python3-%{pkgname}-plugins-loader-yaml %{python3_sitelib}/avocado_loader_yaml/ %{python3_sitelib}/avocado_framework_plugin_loader_yaml-%{version}-py%{python3_version}.egg-info -%endif -%if %{with python2} -%package -n python2-%{pkgname}-plugins-golang -Summary: Avocado plugin for execution of golang tests -%{?python_provide:%python_provide python2-%{pkgname}-plugins-golang} -Requires: python2-%{pkgname} == %{version}-%{release} -Requires: golang - -%description -n python2-%{pkgname}-plugins-golang -Allows Avocado to list golang tests, and if golang is installed, -also run them. - -%files -n python2-%{pkgname}-plugins-golang -%{python2_sitelib}/avocado_golang/ -%{python2_sitelib}/avocado_framework_plugin_golang-%{version}-py%{python2_version}.egg-info -%endif - -%if %{with python3} %package -n python3-%{pkgname}-plugins-golang Summary: Avocado plugin for execution of golang tests %{?python_provide:%python_provide python3-%{pkgname}-plugins-golang} @@ -993,25 +509,8 @@ also run them. %files -n python3-%{pkgname}-plugins-golang %{python3_sitelib}/avocado_golang/ %{python3_sitelib}/avocado_framework_plugin_golang-%{version}-py%{python3_version}.egg-info -%endif -%if %{with python2} -%package -n python2-%{pkgname}-plugins-varianter-pict -Summary: Varianter with combinatorial capabilities by PICT -%{?python_provide:%python_provide python2-%{pkgname}-plugins-varianter-pict} -Requires: python2-%{pkgname} == %{version}-%{release} - -%description -n python2-%{pkgname}-plugins-varianter-pict -This plugin uses a third-party tool to provide variants created by -Pair-Wise algorithms, also known as Combinatorial Independent Testing. - -%files -n python2-%{pkgname}-plugins-varianter-pict -%{python2_sitelib}/avocado_varianter_pict/ -%{python2_sitelib}/avocado_framework_plugin_varianter_pict-%{version}-py%{python2_version}.egg-info -%endif - -%if %{with python3} %package -n python3-%{pkgname}-plugins-varianter-pict Summary: Varianter with combinatorial capabilities by PICT %{?python_provide:%python_provide python3-%{pkgname}-plugins-varianter-pict} @@ -1024,26 +523,8 @@ Pair-Wise algorithms, also known as Combinatorial Independent Testing. %files -n python3-%{pkgname}-plugins-varianter-pict %{python3_sitelib}/avocado_varianter_pict/ %{python3_sitelib}/avocado_framework_plugin_varianter_pict-%{version}-py%{python3_version}.egg-info -%endif -%if %{with python2} -%package -n python2-%{pkgname}-plugins-varianter-cit -Summary: Varianter with Combinatorial Independent Testing capabilities -%{?python_provide:%python_provide python2-%{pkgname}-plugins-varianter-cit} -Requires: python2-%{pkgname} == %{version}-%{release} - -%description -n python2-%{pkgname}-plugins-varianter-cit -A varianter plugin that generates variants using Combinatorial -Independent Testing (AKA Pair-Wise) algorithm developed in -collaboration with CVUT Prague. - -%files -n python2-%{pkgname}-plugins-varianter-cit -%{python2_sitelib}/avocado_varianter_cit/ -%{python2_sitelib}/avocado_framework_plugin_varianter_cit-%{version}-py%{python2_version}.egg-info -%endif - -%if %{with python3} %package -n python3-%{pkgname}-plugins-varianter-cit Summary: Varianter with Combinatorial Independent Testing capabilities %{?python_provide:%python_provide python3-%{pkgname}-plugins-varianter-cit} @@ -1057,26 +538,8 @@ collaboration with CVUT Prague. %files -n python3-%{pkgname}-plugins-varianter-cit %{python3_sitelib}/avocado_varianter_cit/ %{python3_sitelib}/avocado_framework_plugin_varianter_cit-%{version}-py%{python3_version}.egg-info -%endif -%if %{with python2} -%package -n python2-%{pkgname}-plugins-result-upload -Summary: Avocado plugin propagate job results to a remote host -%{?python_provide:%python_provide python2-%{pkgname}-plugins-result-upload} -Requires: python2-%{pkgname} == %{version}-%{release} - -%description -n python2-%{pkgname}-plugins-result-upload -This optional plugin is intended to upload the Avocado Job results to -a dedicated sever. - -%files -n python2-%{pkgname}-plugins-result-upload -%{python2_sitelib}/avocado_result_upload/ -%{python2_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python2_version}.egg-info -%config(noreplace) %{_sysconfdir}/avocado/conf.d/result_upload.conf -%endif - -%if %{with python3} %package -n python3-%{pkgname}-plugins-result-upload Summary: Avocado plugin propagate job results to a remote host %{?python_provide:%python_provide python3-%{pkgname}-plugins-result-upload} @@ -1090,25 +553,8 @@ a dedicated sever. %{python3_sitelib}/avocado_result_upload/ %{python3_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python3_version}.egg-info %config(noreplace) %{_sysconfdir}/avocado/conf.d/result_upload.conf -%endif -%if %{with python2} -%package -n python2-%{pkgname}-plugins-glib -Summary: Avocado plugin for execution of GLib Test Framework tests -%{?python_provide:%python_provide python2-%{pkgname}-plugins-glib} -Requires: python2-%{pkgname} == %{version}-%{release} - -%description -n python2-%{pkgname}-plugins-glib -This optional plugin is intended to list and run tests written in the -GLib Test Framework. - -%files -n python2-%{pkgname}-plugins-glib -%{python2_sitelib}/avocado_glib/ -%{python2_sitelib}/avocado_framework_plugin_glib-%{version}-py%{python2_version}.egg-info -%endif - -%if %{with python3} %package -n python3-%{pkgname}-plugins-glib Summary: Avocado plugin for execution of GLib Test Framework tests %{?python_provide:%python_provide python3-%{pkgname}-plugins-glib} @@ -1121,19 +567,13 @@ GLib Test Framework. %files -n python3-%{pkgname}-plugins-glib %{python3_sitelib}/avocado_glib/ %{python3_sitelib}/avocado_framework_plugin_glib-%{version}-py%{python3_version}.egg-info -%endif %package -n python-%{pkgname}-examples Summary: Avocado Test Framework Example Tests License: GPLv2 # documentation does not require main package, but needs to be in lock-step if present -%if %{with python2} -Conflicts: python2-%{pkgname} < %{version}-%{release}, python2-%{pkgname} > %{version}-%{release} -%endif -%if %{with python3} Conflicts: python3-%{pkgname} < %{version}-%{release}, python3-%{pkgname} > %{version}-%{release} -%endif %description -n python-%{pkgname}-examples The set of example tests present in the upstream tree of the Avocado framework. @@ -1170,6 +610,10 @@ Again Shell code (and possibly other similar shells). %changelog +* Wed Jun 26 2019 Merlin Mathesius - 70.0-1 +- Sync with upstream release 70.0. +- Drop all Python 2 support from SPEC file. + * Wed May 22 2019 Merlin Mathesius - 69.0-4 - pyliblzma is Python 2-only and no longer available as of F31. - Unversioned executables should now be Python 3. diff --git a/sources b/sources index 5a59e5d..c642ab0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-69.0.tar.gz) = 5353c85d94a9754a6e23eb2b4e1a09dc4f87e3590ff1073383b2b8ac5e2eeb7cddadf5773c762f1dbd8b7a04ed6314f68cf7014acc4e709683f0251518c30b10 +SHA512 (avocado-70.0.tar.gz) = 5098d499ced74905f5a9d0d7c2bafcb9760fd8120dbef4db4245684d59963cf06a246cd860d4a4da00aab5ac949a357e93f5ddaedc1357f2d1bc71705ad8cbe7 From 1963b4bab3b3bf5aaac631e945f16a1562cfdbd1 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Wed, 28 Aug 2019 08:39:27 -0500 Subject: [PATCH 06/51] Sync with upstream release 71.0. Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 12 +++++++----- sources | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index f435916..25c9dfa 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /avocado-68.0.tar.gz /avocado-69.0.tar.gz /avocado-70.0.tar.gz +/avocado-71.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index d2842ae..439a321 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit cc0a3f66a1ae11bbc165fd787a04926cdab88f80 + %global commit d4d83d890b09f60eb5d27a30a5a315e45307f188 %endif %if ! 0%{?commit_date:1} - %global commit_date 20190625 + %global commit_date 20190815 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -50,7 +50,7 @@ %endif Name: python-%{pkgname} -Version: 70.0 +Version: 71.0 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -77,7 +77,6 @@ BuildRequires: python3-resultsdb_api BuildRequires: python3-setuptools BuildRequires: python3-six BuildRequires: python3-sphinx -BuildRequires: python3-stevedore %if %{with_fabric} %if %{with_python3_fabric} BuildRequires: python3-fabric3 @@ -330,7 +329,6 @@ Requires: python3 Requires: python3-pycdlib Requires: python3-setuptools Requires: python3-six -Requires: python3-stevedore %description -n python3-%{pkgname} Avocado is a set of tools and libraries (what people call @@ -567,6 +565,7 @@ GLib Test Framework. %files -n python3-%{pkgname}-plugins-glib %{python3_sitelib}/avocado_glib/ %{python3_sitelib}/avocado_framework_plugin_glib-%{version}-py%{python3_version}.egg-info +%config(noreplace) %{_sysconfdir}/avocado/conf.d/glib.conf %package -n python-%{pkgname}-examples @@ -610,6 +609,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Wed Aug 28 2019 Merlin Mathesius - 71.0-1 +- Sync with upstream release 71.0. + * Wed Jun 26 2019 Merlin Mathesius - 70.0-1 - Sync with upstream release 70.0. - Drop all Python 2 support from SPEC file. diff --git a/sources b/sources index c642ab0..807a9b6 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-70.0.tar.gz) = 5098d499ced74905f5a9d0d7c2bafcb9760fd8120dbef4db4245684d59963cf06a246cd860d4a4da00aab5ac949a357e93f5ddaedc1357f2d1bc71705ad8cbe7 +SHA512 (avocado-71.0.tar.gz) = d997489e284392adc7787f6c6a464f64293a619c3db9b21a8de98de07a8ee5b1c398b63b9aa216a1d036581c13b763308f8e2a8e6aaee9fac69782455ee79225 From c64e62364a291238699c5b926ea2e82b3cf602c3 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Mon, 9 Sep 2019 16:36:17 -0500 Subject: [PATCH 07/51] Patch to skip selftest currently incompatible with Python 3.8. Signed-off-by: Merlin Mathesius --- avocado-69.1-selftest-py3.8.patch | 20 ++++++++++++++++++++ python-avocado.spec | 7 ++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 avocado-69.1-selftest-py3.8.patch diff --git a/avocado-69.1-selftest-py3.8.patch b/avocado-69.1-selftest-py3.8.patch new file mode 100644 index 0000000..6020d5d --- /dev/null +++ b/avocado-69.1-selftest-py3.8.patch @@ -0,0 +1,20 @@ +diff -ru ../avocado-69.1.ORIG/selftests/unit/test_loader.py ./selftests/unit/test_loader.py +--- ../avocado-69.1.ORIG/selftests/unit/test_loader.py 2019-06-12 13:39:15.000000000 -0500 ++++ ./selftests/unit/test_loader.py 2019-09-09 16:23:21.637693415 -0500 +@@ -1,6 +1,7 @@ + import os + import shutil + import stat ++import sys + import tempfile + import unittest + +@@ -449,6 +450,8 @@ + ('Test10', 'selftests/.data/loader_instrumented/imports.py:Test10.test')] + self._check_discovery(exps, tests) + ++ @unittest.skipIf(sys.version_info[0:2] == (3, 8), ++ "Test currently broken on Python 3.8") + def test_dont_detect_non_avocado(self): + path = os.path.join(os.path.dirname(os.path.dirname(__file__)), + '.data', 'loader_instrumented', 'dont_detect_non_avocado.py') diff --git a/python-avocado.spec b/python-avocado.spec index 3243805..56ea5ad 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -71,7 +71,7 @@ Name: python-%{pkgname} Version: 69.1 -Release: 1%{?gitrel}%{?dist} +Release: 2%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools # Found licenses: @@ -81,6 +81,7 @@ Group: Development/Tools License: GPLv2 and MIT URL: http://avocado-framework.github.io/ Source0: https://github.com/avocado-framework/%{srcname}/archive/%{gitref}.tar.gz#/%{gittar} +Patch0: avocado-69.1-selftest-py3.8.patch BuildArch: noarch BuildRequires: procps-ng @@ -189,6 +190,7 @@ these days a framework) to perform automated testing. %prep %setup -q -n %{srcname}-%{gitref} +%patch0 -p1 # package plugins-runner-vm requires libvirt-python, but the RPM # version of libvirt-python does not publish the egg info and this # causes that dep to be attempted to be installed by pip @@ -1170,6 +1172,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Mon Sep 09 2019 Merlin Mathesius - 69.1-2 +- Patch to skip selftest currently incompatible with Python 3.8. + * Tue Jun 18 2019 Merlin Mathesius - 69.1-1 - Sync with upstream release 69.1 (LTS series). From c781f06f55af7ccd26cfd82eeb2211450d70623f Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Wed, 11 Sep 2019 16:02:59 -0500 Subject: [PATCH 08/51] Update patch to always skip unreliable selftest. Signed-off-by: Merlin Mathesius --- ...est-py3.8.patch => avocado-69.1-selftest.patch | 15 +++------------ python-avocado.spec | 7 +++++-- 2 files changed, 8 insertions(+), 14 deletions(-) rename avocado-69.1-selftest-py3.8.patch => avocado-69.1-selftest.patch (62%) diff --git a/avocado-69.1-selftest-py3.8.patch b/avocado-69.1-selftest.patch similarity index 62% rename from avocado-69.1-selftest-py3.8.patch rename to avocado-69.1-selftest.patch index 6020d5d..27992ae 100644 --- a/avocado-69.1-selftest-py3.8.patch +++ b/avocado-69.1-selftest.patch @@ -1,20 +1,11 @@ diff -ru ../avocado-69.1.ORIG/selftests/unit/test_loader.py ./selftests/unit/test_loader.py --- ../avocado-69.1.ORIG/selftests/unit/test_loader.py 2019-06-12 13:39:15.000000000 -0500 -+++ ./selftests/unit/test_loader.py 2019-09-09 16:23:21.637693415 -0500 -@@ -1,6 +1,7 @@ - import os - import shutil - import stat -+import sys - import tempfile - import unittest - -@@ -449,6 +450,8 @@ ++++ ./selftests/unit/test_loader.py 2019-09-11 15:56:24.289042537 -0500 +@@ -449,6 +449,7 @@ ('Test10', 'selftests/.data/loader_instrumented/imports.py:Test10.test')] self._check_discovery(exps, tests) -+ @unittest.skipIf(sys.version_info[0:2] == (3, 8), -+ "Test currently broken on Python 3.8") ++ @unittest.skip("Disabling unreliable test") def test_dont_detect_non_avocado(self): path = os.path.join(os.path.dirname(os.path.dirname(__file__)), '.data', 'loader_instrumented', 'dont_detect_non_avocado.py') diff --git a/python-avocado.spec b/python-avocado.spec index 56ea5ad..19e7cc8 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -71,7 +71,7 @@ Name: python-%{pkgname} Version: 69.1 -Release: 2%{?gitrel}%{?dist} +Release: 3%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools # Found licenses: @@ -81,7 +81,7 @@ Group: Development/Tools License: GPLv2 and MIT URL: http://avocado-framework.github.io/ Source0: https://github.com/avocado-framework/%{srcname}/archive/%{gitref}.tar.gz#/%{gittar} -Patch0: avocado-69.1-selftest-py3.8.patch +Patch0: avocado-69.1-selftest.patch BuildArch: noarch BuildRequires: procps-ng @@ -1172,6 +1172,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Wed Sep 11 2019 Merlin Mathesius - 69.1-3 +- Update patch to always skip unreliable selftest. + * Mon Sep 09 2019 Merlin Mathesius - 69.1-2 - Patch to skip selftest currently incompatible with Python 3.8. From 9c79be072dabbd55654aa1ce1aaad068597ae051 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Wed, 2 Oct 2019 14:13:46 -0500 Subject: [PATCH 09/51] Sync with upstream release 72.0. Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 29 +++++++++++++++++------------ sources | 2 +- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 25c9dfa..364f51c 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ /avocado-69.0.tar.gz /avocado-70.0.tar.gz /avocado-71.0.tar.gz +/avocado-72.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index 439a321..982f1e1 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit d4d83d890b09f60eb5d27a30a5a315e45307f188 + %global commit a918b7f3ac80bc45c9577a8f38ef069017d114c7 %endif %if ! 0%{?commit_date:1} - %global commit_date 20190815 + %global commit_date 20190917 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -50,7 +50,7 @@ %endif Name: python-%{pkgname} -Version: 71.0 +Version: 72.0 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -107,10 +107,6 @@ these days a framework) to perform automated testing. %prep %setup -q -n %{srcname}-%{gitref} -# package plugins-runner-vm requires libvirt-python, but the RPM -# version of libvirt-python does not publish the egg info and this -# causes that dep to be attempted to be installed by pip -sed -e "s/'libvirt-python'//" -i optional_plugins/runner_vm/setup.py %if 0%{?rhel} && 0%{?rhel} <= 7 sed -e "s/'six>=1.10.0'/'six>=1.9.0'/" -i setup.py sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.10'/" -i optional_plugins/varianter_yaml_to_mux/setup.py @@ -173,16 +169,16 @@ popd %install %py3_install -%{__mv} %{buildroot}%{_bindir}/avocado %{buildroot}%{_bindir}/avocado-%{python3_version} -%{__ln_s} avocado-%{python3_version} %{buildroot}%{_bindir}/avocado-3 +for exe in avocado avocado-runner avocado-runner-avocado-instrumented; do + %{__mv} %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} + %{__ln_s} $exe-%{python3_version} %{buildroot}%{_bindir}/$exe-3 + %{__ln_s} $exe-%{python3_version} %{buildroot}%{_bindir}/$exe +done # configuration is held at /etc/avocado only and part of the # python-avocado-common package %{__rm} -rf %{buildroot}%{python3_sitelib}/avocado/etc # ditto for libexec files %{__rm} -rf %{buildroot}%{python3_sitelib}/avocado/libexec -# Unversioned executables should now be the Python 3 version if shipping with Python 3 -# https://docs.fedoraproject.org/en-US/packaging-guidelines/Python_Appendix/ -%{__ln_s} avocado-%{python3_version} %{buildroot}%{_bindir}/avocado pushd optional_plugins/html %py3_install popd @@ -342,6 +338,12 @@ these days a framework) to perform automated testing. %{_bindir}/avocado-%{python3_version} %{_bindir}/avocado-3 %{_bindir}/avocado +%{_bindir}/avocado-runner-%{python3_version} +%{_bindir}/avocado-runner-3 +%{_bindir}/avocado-runner +%{_bindir}/avocado-runner-avocado-instrumented-%{python3_version} +%{_bindir}/avocado-runner-avocado-instrumented-3 +%{_bindir}/avocado-runner-avocado-instrumented %package -n python-%{pkgname}-common @@ -609,6 +611,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Wed Oct 02 2019 Merlin Mathesius - 72.0-1 +- Sync with upstream release 72.0. + * Wed Aug 28 2019 Merlin Mathesius - 71.0-1 - Sync with upstream release 71.0. diff --git a/sources b/sources index 807a9b6..96402fd 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-71.0.tar.gz) = d997489e284392adc7787f6c6a464f64293a619c3db9b21a8de98de07a8ee5b1c398b63b9aa216a1d036581c13b763308f8e2a8e6aaee9fac69782455ee79225 +SHA512 (avocado-72.0.tar.gz) = 291a399197c95abb7ed3a18c79793020542a928185652999fffe3042cca530422234d44916261cad26bfb08932a57dd5db8db0412bec0f071fe9a7cbd8505076 From 079897c6bdc1a8fedce81cc9e7eef1203354b940 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Fri, 4 Oct 2019 15:27:29 -0500 Subject: [PATCH 10/51] Sync with upstream release 69.2 (LTS series). Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 11 +++++++---- sources | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 94ccf36..5c17832 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /avocado-68.0.tar.gz /avocado-69.0.tar.gz /avocado-69.1.tar.gz +/avocado-69.2.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index 19e7cc8..add3cee 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit 5ed5ac2fc05c65f06a199d41d27f632c68ffe9cd + %global commit 489fee786c7b69cf0fa12f75be0595cb8bae5887 %endif %if ! 0%{?commit_date:1} - %global commit_date 20190612 + %global commit_date 20190917 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -70,8 +70,8 @@ %endif Name: python-%{pkgname} -Version: 69.1 -Release: 3%{?gitrel}%{?dist} +Version: 69.2 +Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools # Found licenses: @@ -1172,6 +1172,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Oct 04 2019 Merlin Mathesius - 69.2-1 +- Sync with upstream release 69.2 (LTS series). + * Wed Sep 11 2019 Merlin Mathesius - 69.1-3 - Update patch to always skip unreliable selftest. diff --git a/sources b/sources index 09c3124..9a6f026 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-69.1.tar.gz) = 9a41127e17ae3f328287e9450389872e4ffcb7867c56bf95d0f039067530f8e9bf780362a9a26a6ecbc8304225543f367fba7969cbd4aa9a644d54046bfb6b43 +SHA512 (avocado-69.2.tar.gz) = edf348ed083c72de511190e0c615861cd413a54c30082f1a345d689ce7990bd0ceebfc81893087e3bc015716c6ae7ef104a71658f4b2b7cc75ec657ebe4eff61 From b6a80deb282694869168d9cf00487e907357a9e0 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Wed, 27 Nov 2019 13:23:18 -0600 Subject: [PATCH 11/51] Sync with upstream release 73.0. Adjustments to build for RHEL 8. Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 83 ++++++++++++++++++++++++++++++++++----------- sources | 2 +- 3 files changed, 65 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index 364f51c..234ff10 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ /avocado-70.0.tar.gz /avocado-71.0.tar.gz /avocado-72.0.tar.gz +/avocado-73.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index 982f1e1..d6552d9 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit a918b7f3ac80bc45c9577a8f38ef069017d114c7 + %global commit 25019730b046c7793cec7768f8f94834bd440485 %endif %if ! 0%{?commit_date:1} - %global commit_date 20190917 + %global commit_date 20191122 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -27,12 +27,8 @@ # the functional tests are time and resource sensitive and can # cause race conditions and random build failures. They are # enabled by default. -# However, selftests need to be disabled when libvirt is not available. %global with_tests 1 -%if 0%{?rhel} && 0%{?rhel} <= 7 - # libvirt is not available for all RHEL builder architectures - %global with_tests 0 -%endif + # Avocado is currently incompatible with the Fabric API in Fedora 31 and later # https://github.com/avocado-framework/avocado/issues/3125 @@ -49,8 +45,15 @@ %global with_python3_fabric 0 %endif +# resultsdb is only available for Fedora +%if 0%{?fedora} +%global with_resultsdb 1 +%else +%global with_resultsdb 0 +%endif + Name: python-%{pkgname} -Version: 72.0 +Version: 73.0 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -72,28 +75,34 @@ BuildRequires: python3-jinja2 BuildRequires: python3-lxml BuildRequires: python3-mock BuildRequires: python3-psutil -BuildRequires: python3-pycdlib -BuildRequires: python3-resultsdb_api BuildRequires: python3-setuptools BuildRequires: python3-six BuildRequires: python3-sphinx +%if 0%{?fedora} +BuildRequires: python3-pycdlib +%endif %if %{with_fabric} %if %{with_python3_fabric} BuildRequires: python3-fabric3 %endif %endif # with_fabric +%if %{with_resultsdb} +BuildRequires: python3-resultsdb_api +%endif %if 0%{?with_tests} BuildRequires: genisoimage BuildRequires: libcdio -BuildRequires: perl-Test-Harness BuildRequires: psmisc -%if 0%{?fedora} >= 30 || 0%{?rhel} > 7 +%if 0%{?fedora} +BuildRequires: perl-Test-Harness +%endif +%if 0%{?fedora} >= 30 || 0%{?rhel} BuildRequires: glibc-all-langpacks %endif BuildRequires: python3-netifaces BuildRequires: python3-yaml -%if 0%{?fedora} >= 27 || 0%{?rhel} > 7 +%if 0%{?fedora} >= 27 || 0%{?rhel} BuildRequires: python3-libvirt %else BuildRequires: libvirt-python3 @@ -107,13 +116,12 @@ these days a framework) to perform automated testing. %prep %setup -q -n %{srcname}-%{gitref} -%if 0%{?rhel} && 0%{?rhel} <= 7 -sed -e "s/'six>=1.10.0'/'six>=1.9.0'/" -i setup.py -sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.10'/" -i optional_plugins/varianter_yaml_to_mux/setup.py -%endif -%if 0%{?fedora} && 0%{?fedora} < 29 +%if (0%{?fedora} && 0%{?fedora} < 29) || 0%{?rhel} sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to_mux/setup.py %endif +%if ! %{with_resultsdb} +%{__rm} -f avocado/etc/avocado/conf.d/resultsdb.conf +%endif %build %py3_build @@ -142,7 +150,9 @@ pushd optional_plugins/runner_docker %endif # with_fabric popd pushd optional_plugins/resultsdb +%if %{with_resultsdb} %py3_build +%endif popd pushd optional_plugins/varianter_yaml_to_mux %py3_build @@ -169,7 +179,15 @@ popd %install %py3_install -for exe in avocado avocado-runner avocado-runner-avocado-instrumented; do +for exe in \ + avocado \ + avocado-runner \ + avocado-runner-noop \ + avocado-runner-exec \ + avocado-runner-exec-test \ + avocado-runner-python-unittest \ + avocado-runner-avocado-instrumented +do %{__mv} %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} %{__ln_s} $exe-%{python3_version} %{buildroot}%{_bindir}/$exe-3 %{__ln_s} $exe-%{python3_version} %{buildroot}%{_bindir}/$exe @@ -204,7 +222,9 @@ pushd optional_plugins/runner_docker %endif # with_fabric popd pushd optional_plugins/resultsdb +%if %{with_resultsdb} %py3_install +%endif popd pushd optional_plugins/varianter_yaml_to_mux %py3_install @@ -231,6 +251,7 @@ popd %{__rm} -rf %{buildroot}%{python3_sitelib}/tests %{__mkdir} -p %{buildroot}%{_sysconfdir}/avocado %{__cp} avocado/etc/avocado/avocado.conf %{buildroot}%{_sysconfdir}/avocado/avocado.conf +%{__sed} -e "s| etc/avocado/sysinfo/| /etc/avocado/sysinfo/|" -i %{buildroot}%{_sysconfdir}/avocado/avocado.conf %{__cp} -r avocado/etc/avocado/conf.d %{buildroot}%{_sysconfdir}/avocado/conf.d %{__cp} -r avocado/etc/avocado/scripts %{buildroot}%{_sysconfdir}/avocado/scripts %{__cp} -r avocado/etc/avocado/sysinfo %{buildroot}%{_sysconfdir}/avocado/sysinfo @@ -275,9 +296,11 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x popd %endif # with_python3_fabric %endif # with_fabric + %if %{with_resultsdb} pushd optional_plugins/resultsdb %{__python3} setup.py develop --user popd + %endif # with_resultsdb pushd optional_plugins/varianter_yaml_to_mux %{__python3} setup.py develop --user popd @@ -322,9 +345,11 @@ Requires: gdb Requires: gdb-gdbserver Requires: procps-ng Requires: python3 -Requires: python3-pycdlib Requires: python3-setuptools Requires: python3-six +%if 0%{?fedora} +Requires: python3-pycdlib +%endif %description -n python3-%{pkgname} Avocado is a set of tools and libraries (what people call @@ -341,6 +366,18 @@ these days a framework) to perform automated testing. %{_bindir}/avocado-runner-%{python3_version} %{_bindir}/avocado-runner-3 %{_bindir}/avocado-runner +%{_bindir}/avocado-runner-noop-%{python3_version} +%{_bindir}/avocado-runner-noop-3 +%{_bindir}/avocado-runner-noop +%{_bindir}/avocado-runner-exec-%{python3_version} +%{_bindir}/avocado-runner-exec-3 +%{_bindir}/avocado-runner-exec +%{_bindir}/avocado-runner-exec-test-%{python3_version} +%{_bindir}/avocado-runner-exec-test-3 +%{_bindir}/avocado-runner-exec-test +%{_bindir}/avocado-runner-python-unittest-%{python3_version} +%{_bindir}/avocado-runner-python-unittest-3 +%{_bindir}/avocado-runner-python-unittest %{_bindir}/avocado-runner-avocado-instrumented-%{python3_version} %{_bindir}/avocado-runner-avocado-instrumented-3 %{_bindir}/avocado-runner-avocado-instrumented @@ -451,6 +488,7 @@ be previously installed on the container. %endif # with_fabric +%if %{with_resultsdb} %package -n python3-%{pkgname}-plugins-resultsdb Summary: Avocado plugin to propagate job results to ResultsDB %{?python_provide:%python_provide python3-%{pkgname}-plugins-resultsdb} @@ -465,6 +503,7 @@ server. %{python3_sitelib}/avocado_resultsdb/ %{python3_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python3_version}.egg-info %config(noreplace) %{_sysconfdir}/avocado/conf.d/resultsdb.conf +%endif # with_resultsdb %package -n python3-%{pkgname}-plugins-varianter-yaml-to-mux @@ -611,6 +650,10 @@ Again Shell code (and possibly other similar shells). %changelog +* Wed Nov 27 2019 Merlin Mathesius - 73.0-1 +- Sync with upstream release 73.0. +- Adjustments to build for RHEL 8. + * Wed Oct 02 2019 Merlin Mathesius - 72.0-1 - Sync with upstream release 72.0. diff --git a/sources b/sources index 96402fd..0adba88 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-72.0.tar.gz) = 291a399197c95abb7ed3a18c79793020542a928185652999fffe3042cca530422234d44916261cad26bfb08932a57dd5db8db0412bec0f071fe9a7cbd8505076 +SHA512 (avocado-73.0.tar.gz) = 3c6e1e83f475f8398446165ff31d30a86ca8153d229ccd4002d9f22735b06d5aba8df9817606124b5c8dd37256a55bde5f227b978be9ea7c1bdaa26ba5be8d01 From 5200b71adc4a3dfdc2c81485e4301e8685bee1b1 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Mon, 23 Dec 2019 13:34:42 -0600 Subject: [PATCH 12/51] Sync with upstream release 74.0. Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 9 ++++++--- sources | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 234ff10..f09c085 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ /avocado-71.0.tar.gz /avocado-72.0.tar.gz /avocado-73.0.tar.gz +/avocado-74.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index d6552d9..63ef6c9 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit 25019730b046c7793cec7768f8f94834bd440485 + %global commit f560105586748fdea4d540dd407b68c47022419f %endif %if ! 0%{?commit_date:1} - %global commit_date 20191122 + %global commit_date 20191223 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -53,7 +53,7 @@ %endif Name: python-%{pkgname} -Version: 73.0 +Version: 74.0 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -650,6 +650,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Mon Dec 23 2019 Merlin Mathesius - 74.0-1 +- Sync with upstream release 74.0. + * Wed Nov 27 2019 Merlin Mathesius - 73.0-1 - Sync with upstream release 73.0. - Adjustments to build for RHEL 8. diff --git a/sources b/sources index 0adba88..0021b72 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-73.0.tar.gz) = 3c6e1e83f475f8398446165ff31d30a86ca8153d229ccd4002d9f22735b06d5aba8df9817606124b5c8dd37256a55bde5f227b978be9ea7c1bdaa26ba5be8d01 +SHA512 (avocado-74.0.tar.gz) = ee9c2d4ecc91979a07e0bda613d3232faf29abe75b0eebb374b67f22d0fa746b0026a296b2aaa783f0ef196901e323c0326fc3781a0df54963c979f4b4d5c85c From 89711448b38a80ada7d8f739da5ad55d3c1a97d6 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Tue, 21 Jan 2020 13:21:07 -0600 Subject: [PATCH 13/51] Sync with upstream release 75.1. Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 9 ++++++--- sources | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index f09c085..f44c6e5 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ /avocado-72.0.tar.gz /avocado-73.0.tar.gz /avocado-74.0.tar.gz +/avocado-75.1.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index 63ef6c9..b633afc 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit f560105586748fdea4d540dd407b68c47022419f + %global commit 60d3c48ddbcbfcf7f996e535b665412650ebfb35 %endif %if ! 0%{?commit_date:1} - %global commit_date 20191223 + %global commit_date 20200120 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -53,7 +53,7 @@ %endif Name: python-%{pkgname} -Version: 74.0 +Version: 75.1 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -650,6 +650,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Mon Jan 20 2020 Merlin Mathesius - 75.1-1 +- Sync with upstream release 75.1. + * Mon Dec 23 2019 Merlin Mathesius - 74.0-1 - Sync with upstream release 74.0. diff --git a/sources b/sources index 0021b72..1cfe23d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-74.0.tar.gz) = ee9c2d4ecc91979a07e0bda613d3232faf29abe75b0eebb374b67f22d0fa746b0026a296b2aaa783f0ef196901e323c0326fc3781a0df54963c979f4b4d5c85c +SHA512 (avocado-75.1.tar.gz) = 3c01a6f4b8abf84307b5f268d516120864bffb49079e59875f7264ae414c6e987affde5da508d70cfc83afcf58e499ea0efb91e3b050a790c2b6dd4cf415cce9 From a5ac1be67ffe420afb0861724ce334e6beecf95d Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Mon, 9 Mar 2020 17:16:58 -0500 Subject: [PATCH 14/51] Sync with upstream release 76.0. Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 21 ++++++++++++++++----- sources | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index f44c6e5..2c90e96 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ /avocado-73.0.tar.gz /avocado-74.0.tar.gz /avocado-75.1.tar.gz +/avocado-76.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index b633afc..a932fdc 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit 60d3c48ddbcbfcf7f996e535b665412650ebfb35 + %global commit bda98905d288b789166a03a8e4ec2efa5d403f89 %endif %if ! 0%{?commit_date:1} - %global commit_date 20200120 + %global commit_date 20200224 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -53,7 +53,7 @@ %endif Name: python-%{pkgname} -Version: 75.1 +Version: 76.0 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -186,7 +186,9 @@ for exe in \ avocado-runner-exec \ avocado-runner-exec-test \ avocado-runner-python-unittest \ - avocado-runner-avocado-instrumented + avocado-runner-avocado-instrumented \ + avocado-runner-tap \ + avocado-software-manager do %{__mv} %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} %{__ln_s} $exe-%{python3_version} %{buildroot}%{_bindir}/$exe-3 @@ -332,7 +334,7 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x # use the one that was setup in the source tree by the "setup.py # develop --user" step and is guaranteed to be version specific. USER_BASE=`%{__python3} -m site --user-base` - LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 UNITTEST_AVOCADO_CMD=$USER_BASE/bin/avocado %{__python3} selftests/run + LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 UNITTEST_AVOCADO_CMD=$USER_BASE/bin/avocado PYTHONWARNINGS=ignore %{__python3} selftests/run %endif @@ -381,6 +383,12 @@ these days a framework) to perform automated testing. %{_bindir}/avocado-runner-avocado-instrumented-%{python3_version} %{_bindir}/avocado-runner-avocado-instrumented-3 %{_bindir}/avocado-runner-avocado-instrumented +%{_bindir}/avocado-runner-tap-%{python3_version} +%{_bindir}/avocado-runner-tap-3 +%{_bindir}/avocado-runner-tap +%{_bindir}/avocado-software-manager-%{python3_version} +%{_bindir}/avocado-software-manager-3 +%{_bindir}/avocado-software-manager %package -n python-%{pkgname}-common @@ -650,6 +658,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Mon Mar 09 2020 Merlin Mathesius - 76.0-1 +- Sync with upstream release 76.0. + * Mon Jan 20 2020 Merlin Mathesius - 75.1-1 - Sync with upstream release 75.1. diff --git a/sources b/sources index 1cfe23d..0f7a9d0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-75.1.tar.gz) = 3c01a6f4b8abf84307b5f268d516120864bffb49079e59875f7264ae414c6e987affde5da508d70cfc83afcf58e499ea0efb91e3b050a790c2b6dd4cf415cce9 +SHA512 (avocado-76.0.tar.gz) = 1380e353562a00fc153463eaade9faf9553ebdc27c4b221cfebb018dfe71d44ac91fdd789c8cdb4b8f914b85d4f82a9c9c30a5c58e463c4c3ea0748b1cf61a45 From e2511bfe7556c0ba44b801843791892756920d35 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Tue, 17 Mar 2020 15:55:08 -0500 Subject: [PATCH 15/51] Sync with upstream release 77.0. Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 11 +++++++---- sources | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 2c90e96..949c1b9 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ /avocado-74.0.tar.gz /avocado-75.1.tar.gz /avocado-76.0.tar.gz +/avocado-77.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index a932fdc..e954c37 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit bda98905d288b789166a03a8e4ec2efa5d403f89 + %global commit 7b624bb092bababb7180938d70515090bce29945 %endif %if ! 0%{?commit_date:1} - %global commit_date 20200224 + %global commit_date 20200317 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -53,7 +53,7 @@ %endif Name: python-%{pkgname} -Version: 76.0 +Version: 77.0 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -334,7 +334,7 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x # use the one that was setup in the source tree by the "setup.py # develop --user" step and is guaranteed to be version specific. USER_BASE=`%{__python3} -m site --user-base` - LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 UNITTEST_AVOCADO_CMD=$USER_BASE/bin/avocado PYTHONWARNINGS=ignore %{__python3} selftests/run + LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 UNITTEST_AVOCADO_CMD=$USER_BASE/bin/avocado %{__python3} selftests/run %endif @@ -658,6 +658,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Tue Mar 17 2020 Merlin Mathesius - 77.0-1 +- Sync with upstream release 77.0. + * Mon Mar 09 2020 Merlin Mathesius - 76.0-1 - Sync with upstream release 76.0. diff --git a/sources b/sources index 0f7a9d0..07c015d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-76.0.tar.gz) = 1380e353562a00fc153463eaade9faf9553ebdc27c4b221cfebb018dfe71d44ac91fdd789c8cdb4b8f914b85d4f82a9c9c30a5c58e463c4c3ea0748b1cf61a45 +SHA512 (avocado-77.0.tar.gz) = 6ea12823b1d34ac048a87d8f76bca2797baafcb45f50e6c3fdb0ccaaa8046298d806dedced0bf4df996538f7a76ef69624e7e06ef5b4c5b85b04feb414de4cb8 From ccb9faa20d096c2e1a5d71471512ee9da2511207 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Wed, 15 Apr 2020 11:30:21 -0500 Subject: [PATCH 16/51] Sync with upstream release 78.0. Signed-off-by: Merlin Mathesius --- .gitignore | 1 + python-avocado.spec | 9 ++++++--- sources | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 949c1b9..2123e69 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ /avocado-75.1.tar.gz /avocado-76.0.tar.gz /avocado-77.0.tar.gz +/avocado-78.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index e954c37..a00751b 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit 7b624bb092bababb7180938d70515090bce29945 + %global commit b8ce4cf8a9e9f7935eb3e43186ad7dfcd84092c3 %endif %if ! 0%{?commit_date:1} - %global commit_date 20200317 + %global commit_date 20200414 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -53,7 +53,7 @@ %endif Name: python-%{pkgname} -Version: 77.0 +Version: 78.0 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -658,6 +658,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Wed Apr 15 2020 Merlin Mathesius - 78.0-1 +- Sync with upstream release 78.0. + * Tue Mar 17 2020 Merlin Mathesius - 77.0-1 - Sync with upstream release 77.0. diff --git a/sources b/sources index 07c015d..5a1409d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-77.0.tar.gz) = 6ea12823b1d34ac048a87d8f76bca2797baafcb45f50e6c3fdb0ccaaa8046298d806dedced0bf4df996538f7a76ef69624e7e06ef5b4c5b85b04feb414de4cb8 +SHA512 (avocado-78.0.tar.gz) = 13133bbefe7290ac174f5cf2b639e1292c1cd1deda8423bc34ce35a4590c406446c021610a207d882cb4be15da8ebb3aceaef8c6de1651ed3b675ea232def541 From c0e14dbafa80fad991faa543a441b366ffffe7aa Mon Sep 17 00:00:00 2001 From: Cleber Rosa Date: Mon, 11 May 2020 21:53:15 -0400 Subject: [PATCH 17/51] Sync with upstream release 79.0. Signed-off-by: Cleber Rosa --- .gitignore | 1 + python-avocado.spec | 69 ++++++++++++++++++++++++++++++--------------- sources | 2 +- 3 files changed, 49 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 2123e69..89e448a 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ /avocado-76.0.tar.gz /avocado-77.0.tar.gz /avocado-78.0.tar.gz +/avocado-79.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index a00751b..468c029 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit b8ce4cf8a9e9f7935eb3e43186ad7dfcd84092c3 + %global commit 232cdefdcb4e850669c18607563791a94a068309 %endif %if ! 0%{?commit_date:1} - %global commit_date 20200414 + %global commit_date 20200511 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -53,7 +53,7 @@ %endif Name: python-%{pkgname} -Version: 78.0 +Version: 79.0 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -85,7 +85,8 @@ BuildRequires: python3-pycdlib %if %{with_python3_fabric} BuildRequires: python3-fabric3 %endif -%endif # with_fabric +%endif +# with_fabric %if %{with_resultsdb} BuildRequires: python3-resultsdb_api %endif @@ -107,7 +108,8 @@ BuildRequires: python3-libvirt %else BuildRequires: libvirt-python3 %endif -%endif # with_tests +%endif +# with_tests %description Avocado is a set of tools and libraries (what people call @@ -133,21 +135,24 @@ pushd optional_plugins/runner_remote %if %{with_python3_fabric} %py3_build %endif -%endif # with_fabric +%endif +# with_fabric popd pushd optional_plugins/runner_vm %if %{with_fabric} %if %{with_python3_fabric} %py3_build %endif -%endif # with_fabric +%endif +# with_fabric popd pushd optional_plugins/runner_docker %if %{with_fabric} %if %{with_python3_fabric} %py3_build %endif -%endif # with_fabric +%endif +# with_fabric popd pushd optional_plugins/resultsdb %if %{with_resultsdb} @@ -207,21 +212,24 @@ pushd optional_plugins/runner_remote %if %{with_python3_fabric} %py3_install %endif -%endif # with_fabric +%endif +# with_fabric popd pushd optional_plugins/runner_vm %if %{with_fabric} %if %{with_python3_fabric} %py3_install %endif -%endif # with_fabric +%endif +# with_fabric popd pushd optional_plugins/runner_docker %if %{with_fabric} %if %{with_python3_fabric} %py3_install %endif -%endif # with_fabric +%endif +# with_fabric popd pushd optional_plugins/resultsdb %if %{with_resultsdb} @@ -296,13 +304,16 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x pushd optional_plugins/runner_docker %{__python3} setup.py develop --user popd - %endif # with_python3_fabric - %endif # with_fabric + %endif + # with_python3_fabric + %endif + # with_fabric %if %{with_resultsdb} pushd optional_plugins/resultsdb %{__python3} setup.py develop --user popd - %endif # with_resultsdb + %endif + # with_resultsdb pushd optional_plugins/varianter_yaml_to_mux %{__python3} setup.py develop --user popd @@ -334,7 +345,7 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x # use the one that was setup in the source tree by the "setup.py # develop --user" step and is guaranteed to be version specific. USER_BASE=`%{__python3} -m site --user-base` - LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 UNITTEST_AVOCADO_CMD=$USER_BASE/bin/avocado %{__python3} selftests/run + PATH=$USER_BASE/bin:$PATH LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 UNITTEST_AVOCADO_CMD=$USER_BASE/bin/avocado %{__python3} selftests/run %endif @@ -450,8 +461,10 @@ connection. Avocado must be previously installed on the remote machine. %files -n python3-%{pkgname}-plugins-runner-remote %{python3_sitelib}/avocado_runner_remote/ %{python3_sitelib}/avocado_framework_plugin_runner_remote-%{version}-py%{python3_version}.egg-info -%endif # with_python3_fabric -%endif # with_fabric +%endif +# with_python3_fabric +%endif +# with_fabric %if %{with_fabric} @@ -471,8 +484,10 @@ itself. Avocado must be previously installed on the VM. %files -n python3-%{pkgname}-plugins-runner-vm %{python3_sitelib}/avocado_runner_vm/ %{python3_sitelib}/avocado_framework_plugin_runner_vm-%{version}-py%{python3_version}.egg-info -%endif # with_python3_fabric -%endif # with_fabric +%endif +# with_python3_fabric +%endif +# with_fabric %if %{with_fabric} @@ -492,8 +507,10 @@ be previously installed on the container. %files -n python3-%{pkgname}-plugins-runner-docker %{python3_sitelib}/avocado_runner_docker/ %{python3_sitelib}/avocado_framework_plugin_runner_docker-%{version}-py%{python3_version}.egg-info -%endif # with_python3_fabric -%endif # with_fabric +%endif +# with_python3_fabric +%endif +# with_fabric %if %{with_resultsdb} @@ -511,7 +528,8 @@ server. %{python3_sitelib}/avocado_resultsdb/ %{python3_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python3_version}.egg-info %config(noreplace) %{_sysconfdir}/avocado/conf.d/resultsdb.conf -%endif # with_resultsdb +%endif +# with_resultsdb %package -n python3-%{pkgname}-plugins-varianter-yaml-to-mux @@ -658,6 +676,13 @@ Again Shell code (and possibly other similar shells). %changelog +* Tue May 12 2020 Cleber Rosa - 79.0-1 +- Sync with upstream release 79.0. +- Added Python's user base bin dir to the PATH environment variable + while running tests, so that avocado-runner-* scripts can be found +- Moved comment to new lines closing the conditionals, to avoid + errors from rpmlint and rpmbuild + * Wed Apr 15 2020 Merlin Mathesius - 78.0-1 - Sync with upstream release 78.0. diff --git a/sources b/sources index 5a1409d..79a2d37 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-78.0.tar.gz) = 13133bbefe7290ac174f5cf2b639e1292c1cd1deda8423bc34ce35a4590c406446c021610a207d882cb4be15da8ebb3aceaef8c6de1651ed3b675ea232def541 +SHA512 (avocado-79.0.tar.gz) = e3451af3fbb69eae8b47cd88ff1a70331f00c4f12f281afcdac28f2effc7b488b53de39c8bf8255ead97d20465e59a64f35adb0438e817654940f24be32f009e From ba99771825c7bee13cc956a06fd7f249e1ca2850 Mon Sep 17 00:00:00 2001 From: Cleber Rosa Date: Fri, 5 Jun 2020 21:34:12 -0400 Subject: [PATCH 18/51] Sync with upstream release 80.0. Signed-off-by: Cleber Rosa --- .gitignore | 1 + python-avocado.spec | 170 +++----------------------------------------- sources | 2 +- 3 files changed, 11 insertions(+), 162 deletions(-) diff --git a/.gitignore b/.gitignore index 89e448a..ad6a911 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ /avocado-77.0.tar.gz /avocado-78.0.tar.gz /avocado-79.0.tar.gz +/avocado-80.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index 468c029..04ff584 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,10 +12,10 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit 232cdefdcb4e850669c18607563791a94a068309 + %global commit fbde0850d46bc1bbd2fb059a69d9d2ba9d496920 %endif %if ! 0%{?commit_date:1} - %global commit_date 20200511 + %global commit_date 20200605 %endif %global shortcommit %(c=%{commit};echo ${c:0:8}) %global gitrel .%{commit_date}git%{shortcommit} @@ -29,22 +29,6 @@ # enabled by default. %global with_tests 1 - -# Avocado is currently incompatible with the Fabric API in Fedora 31 and later -# https://github.com/avocado-framework/avocado/issues/3125 -%if 0%{?fedora} >= 31 -%global with_fabric 0 -%else -%global with_fabric 1 -%endif - -# Python 3 version of Fabric package is new starting with Fedora 29 -%if 0%{?fedora} >= 29 -%global with_python3_fabric 1 -%else -%global with_python3_fabric 0 -%endif - # resultsdb is only available for Fedora %if 0%{?fedora} %global with_resultsdb 1 @@ -53,7 +37,7 @@ %endif Name: python-%{pkgname} -Version: 79.0 +Version: 80.0 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -68,7 +52,6 @@ BuildArch: noarch BuildRequires: kmod BuildRequires: procps-ng -BuildRequires: python3-aexpect BuildRequires: python3-devel BuildRequires: python3-docutils BuildRequires: python3-jinja2 @@ -81,12 +64,6 @@ BuildRequires: python3-sphinx %if 0%{?fedora} BuildRequires: python3-pycdlib %endif -%if %{with_fabric} -%if %{with_python3_fabric} -BuildRequires: python3-fabric3 -%endif -%endif -# with_fabric %if %{with_resultsdb} BuildRequires: python3-resultsdb_api %endif @@ -130,30 +107,6 @@ sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to pushd optional_plugins/html %py3_build popd -pushd optional_plugins/runner_remote -%if %{with_fabric} - %if %{with_python3_fabric} - %py3_build - %endif -%endif -# with_fabric -popd -pushd optional_plugins/runner_vm -%if %{with_fabric} - %if %{with_python3_fabric} - %py3_build - %endif -%endif -# with_fabric -popd -pushd optional_plugins/runner_docker -%if %{with_fabric} - %if %{with_python3_fabric} - %py3_build - %endif -%endif -# with_fabric -popd pushd optional_plugins/resultsdb %if %{with_resultsdb} %py3_build @@ -207,30 +160,6 @@ done pushd optional_plugins/html %py3_install popd -pushd optional_plugins/runner_remote -%if %{with_fabric} - %if %{with_python3_fabric} - %py3_install - %endif -%endif -# with_fabric -popd -pushd optional_plugins/runner_vm -%if %{with_fabric} - %if %{with_python3_fabric} - %py3_install - %endif -%endif -# with_fabric -popd -pushd optional_plugins/runner_docker -%if %{with_fabric} - %if %{with_python3_fabric} - %py3_install - %endif -%endif -# with_fabric -popd pushd optional_plugins/resultsdb %if %{with_resultsdb} %py3_install @@ -293,21 +222,6 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x pushd optional_plugins/html %{__python3} setup.py develop --user popd - %if %{with_fabric} - %if %{with_python3_fabric} - pushd optional_plugins/runner_remote - %{__python3} setup.py develop --user - popd - pushd optional_plugins/runner_vm - %{__python3} setup.py develop --user - popd - pushd optional_plugins/runner_docker - %{__python3} setup.py develop --user - popd - %endif - # with_python3_fabric - %endif - # with_fabric %if %{with_resultsdb} pushd optional_plugins/resultsdb %{__python3} setup.py develop --user @@ -340,12 +254,8 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x # AVOCADO_CHECK_LEVEL: package build environments have the least # amount of resources we have observed so far. Let's avoid tests that # require too much resources or are time sensitive - # UNITTEST_AVOCADO_CMD: the "avocado" command to be run during - # unittests needs to be a Python specific one on Fedora >= 28. Let's - # use the one that was setup in the source tree by the "setup.py - # develop --user" step and is guaranteed to be version specific. USER_BASE=`%{__python3} -m site --user-base` - PATH=$USER_BASE/bin:$PATH LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 UNITTEST_AVOCADO_CMD=$USER_BASE/bin/avocado %{__python3} selftests/run + PATH=$USER_BASE/bin:$PATH LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 %{__python3} selftests/run %endif @@ -446,73 +356,6 @@ arbitrary filesystem location. %{python3_sitelib}/avocado_framework_plugin_result_html-%{version}-py%{python3_version}.egg-info -%if %{with_fabric} -%if %{with_python3_fabric} -%package -n python3-%{pkgname}-plugins-runner-remote -Summary: Avocado Runner for Remote Execution -%{?python_provide:%python_provide python3-%{pkgname}-plugins-runner-remote} -Requires: python3-%{pkgname} == %{version}-%{release} -Requires: python3-fabric3 - -%description -n python3-%{pkgname}-plugins-runner-remote -Allows Avocado to run jobs on a remote machine, by means of an SSH -connection. Avocado must be previously installed on the remote machine. - -%files -n python3-%{pkgname}-plugins-runner-remote -%{python3_sitelib}/avocado_runner_remote/ -%{python3_sitelib}/avocado_framework_plugin_runner_remote-%{version}-py%{python3_version}.egg-info -%endif -# with_python3_fabric -%endif -# with_fabric - - -%if %{with_fabric} -%if %{with_python3_fabric} -%package -n python3-%{pkgname}-plugins-runner-vm -Summary: Avocado Runner for libvirt VM Execution -%{?python_provide:%python_provide python3-%{pkgname}-plugins-runner-vm} -Requires: python3-%{pkgname} == %{version}-%{release} -Requires: python3-%{pkgname}-plugins-runner-remote == %{version}-%{release} -Requires: python3-libvirt - -%description -n python3-%{pkgname}-plugins-runner-vm -Allows Avocado to run jobs on a libvirt based VM, by means of -interaction with a libvirt daemon and an SSH connection to the VM -itself. Avocado must be previously installed on the VM. - -%files -n python3-%{pkgname}-plugins-runner-vm -%{python3_sitelib}/avocado_runner_vm/ -%{python3_sitelib}/avocado_framework_plugin_runner_vm-%{version}-py%{python3_version}.egg-info -%endif -# with_python3_fabric -%endif -# with_fabric - - -%if %{with_fabric} -%if %{with_python3_fabric} -%package -n python3-%{pkgname}-plugins-runner-docker -Summary: Avocado Runner for Execution on Docker Containers -%{?python_provide:%python_provide python3-%{pkgname}-plugins-runner-docker} -Requires: python3-%{pkgname} == %{version}-%{release} -Requires: python3-%{pkgname}-plugins-runner-remote == %{version}-%{release} -Requires: python3-aexpect - -%description -n python3-%{pkgname}-plugins-runner-docker -Allows Avocado to run jobs on a Docker container by interacting with a -Docker daemon and attaching to the container itself. Avocado must -be previously installed on the container. - -%files -n python3-%{pkgname}-plugins-runner-docker -%{python3_sitelib}/avocado_runner_docker/ -%{python3_sitelib}/avocado_framework_plugin_runner_docker-%{version}-py%{python3_version}.egg-info -%endif -# with_python3_fabric -%endif -# with_fabric - - %if %{with_resultsdb} %package -n python3-%{pkgname}-plugins-resultsdb Summary: Avocado plugin to propagate job results to ResultsDB @@ -676,6 +519,11 @@ Again Shell code (and possibly other similar shells). %changelog +* Sat Jun 6 2020 Cleber Rosa - 80.0-1 +- Sync with upstream release 80.0. +- Dropped use of custom avocado command for tests +- Do not build deprecated runners + * Tue May 12 2020 Cleber Rosa - 79.0-1 - Sync with upstream release 79.0. - Added Python's user base bin dir to the PATH environment variable diff --git a/sources b/sources index 79a2d37..7004584 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-79.0.tar.gz) = e3451af3fbb69eae8b47cd88ff1a70331f00c4f12f281afcdac28f2effc7b488b53de39c8bf8255ead97d20465e59a64f35adb0438e817654940f24be32f009e +SHA512 (avocado-80.0.tar.gz) = 325d0973591235a5279773eb72063ffacdc8f0d2306ec86b9955a9d5265f5ed28b7e1b6eabf598072e917d65781a2b89bfd474c771f2138dded6916bd723e626 From 0f28bcd9e10f4e8a0c877841526cfbf4bb607d1e Mon Sep 17 00:00:00 2001 From: Cleber Rosa Date: Mon, 14 Sep 2020 19:00:31 -0400 Subject: [PATCH 19/51] Sync with upstream release 82.0. Signed-off-by: Cleber Rosa --- .gitignore | 1 + python-avocado.spec | 35 ++++++++++++----------------------- sources | 2 +- 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index ad6a911..bf17c05 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ /avocado-78.0.tar.gz /avocado-79.0.tar.gz /avocado-80.0.tar.gz +/avocado-82.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index 04ff584..d8ed3a8 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -12,12 +12,12 @@ %global gittar %{srcname}-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit fbde0850d46bc1bbd2fb059a69d9d2ba9d496920 + %global commit e97540793998c4f24a16000465dd7fdd213bf2b9 %endif %if ! 0%{?commit_date:1} - %global commit_date 20200605 + %global commit_date 20200911 %endif - %global shortcommit %(c=%{commit};echo ${c:0:8}) + %global shortcommit %(c=%{commit};echo ${c:0:9}) %global gitrel .%{commit_date}git%{shortcommit} %global gitref %{commit} %global gittar %{srcname}-%{shortcommit}.tar.gz @@ -37,7 +37,7 @@ %endif Name: python-%{pkgname} -Version: 80.0 +Version: 82.0 Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools @@ -80,11 +80,6 @@ BuildRequires: glibc-all-langpacks %endif BuildRequires: python3-netifaces BuildRequires: python3-yaml -%if 0%{?fedora} >= 27 || 0%{?rhel} -BuildRequires: python3-libvirt -%else -BuildRequires: libvirt-python3 -%endif %endif # with_tests @@ -98,9 +93,6 @@ these days a framework) to perform automated testing. %if (0%{?fedora} && 0%{?fedora} < 29) || 0%{?rhel} sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to_mux/setup.py %endif -%if ! %{with_resultsdb} -%{__rm} -f avocado/etc/avocado/conf.d/resultsdb.conf -%endif %build %py3_build @@ -189,9 +181,6 @@ popd # cleanup plugin test cruft %{__rm} -rf %{buildroot}%{python3_sitelib}/tests %{__mkdir} -p %{buildroot}%{_sysconfdir}/avocado -%{__cp} avocado/etc/avocado/avocado.conf %{buildroot}%{_sysconfdir}/avocado/avocado.conf -%{__sed} -e "s| etc/avocado/sysinfo/| /etc/avocado/sysinfo/|" -i %{buildroot}%{_sysconfdir}/avocado/avocado.conf -%{__cp} -r avocado/etc/avocado/conf.d %{buildroot}%{_sysconfdir}/avocado/conf.d %{__cp} -r avocado/etc/avocado/scripts %{buildroot}%{_sysconfdir}/avocado/scripts %{__cp} -r avocado/etc/avocado/sysinfo %{buildroot}%{_sysconfdir}/avocado/sysinfo %{__mkdir} -p %{buildroot}%{_libexecdir}/avocado @@ -323,19 +312,14 @@ Common files (such as configuration) for the Avocado Testing Framework. %dir %{_docdir}/avocado %dir %{_sharedstatedir}/avocado %dir %{_sysconfdir}/avocado -%dir %{_sysconfdir}/avocado/conf.d %dir %{_sysconfdir}/avocado/sysinfo %dir %{_sysconfdir}/avocado/scripts %dir %{_sysconfdir}/avocado/scripts/job %dir %{_sysconfdir}/avocado/scripts/job/pre.d %dir %{_sysconfdir}/avocado/scripts/job/post.d -%config(noreplace) %{_sysconfdir}/avocado/avocado.conf -%config(noreplace) %{_sysconfdir}/avocado/conf.d/gdb.conf -%config(noreplace) %{_sysconfdir}/avocado/conf.d/jobscripts.conf %config(noreplace) %{_sysconfdir}/avocado/sysinfo/commands %config(noreplace) %{_sysconfdir}/avocado/sysinfo/files %config(noreplace) %{_sysconfdir}/avocado/sysinfo/profilers -%{_sysconfdir}/avocado/conf.d/README %{_sysconfdir}/avocado/scripts/job/pre.d/README %{_sysconfdir}/avocado/scripts/job/post.d/README @@ -370,7 +354,6 @@ server. %files -n python3-%{pkgname}-plugins-resultsdb %{python3_sitelib}/avocado_resultsdb/ %{python3_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python3_version}.egg-info -%config(noreplace) %{_sysconfdir}/avocado/conf.d/resultsdb.conf %endif # with_resultsdb @@ -460,7 +443,6 @@ a dedicated sever. %files -n python3-%{pkgname}-plugins-result-upload %{python3_sitelib}/avocado_result_upload/ %{python3_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python3_version}.egg-info -%config(noreplace) %{_sysconfdir}/avocado/conf.d/result_upload.conf %package -n python3-%{pkgname}-plugins-glib @@ -475,7 +457,6 @@ GLib Test Framework. %files -n python3-%{pkgname}-plugins-glib %{python3_sitelib}/avocado_glib/ %{python3_sitelib}/avocado_framework_plugin_glib-%{version}-py%{python3_version}.egg-info -%config(noreplace) %{_sysconfdir}/avocado/conf.d/glib.conf %package -n python-%{pkgname}-examples @@ -519,6 +500,14 @@ Again Shell code (and possibly other similar shells). %changelog +* Mon Sep 14 2020 Cleber Rosa - 82.0-1 +- Sync with upstream release 82.0. +- Removed python libvirt depedency as the vm runner has been removed + upstream +- Dropped configuration files to sync with upstream which made them + optional and doesn't ship them anymore +- Add on extra character to short commit to sync with upstream + * Sat Jun 6 2020 Cleber Rosa - 80.0-1 - Sync with upstream release 80.0. - Dropped use of custom avocado command for tests diff --git a/sources b/sources index 7004584..4721c3f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-80.0.tar.gz) = 325d0973591235a5279773eb72063ffacdc8f0d2306ec86b9955a9d5265f5ed28b7e1b6eabf598072e917d65781a2b89bfd474c771f2138dded6916bd723e626 +SHA512 (avocado-82.0.tar.gz) = 099ab131b2b941602550e71507e4ca517d5d2cd5152b255edace0473c9de93aac8163a61689414b5b58f9211f58981c3c30c1c3ca8a191283f609722ce07f173 From 144400fc2b6496d8dc703419f6196bd0df38953d Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Fri, 19 Feb 2021 09:45:25 -0600 Subject: [PATCH 20/51] Fix up BuildRequires: add 'make', drop obsolete packages Adjust PATH to make sure self-tests find internal modules Signed-off-by: Merlin Mathesius --- python-avocado.spec | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/python-avocado.spec b/python-avocado.spec index d8ed3a8..ec2d07d 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -38,7 +38,7 @@ Name: python-%{pkgname} Version: 82.0 -Release: 1%{?gitrel}%{?dist} +Release: 2%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing Group: Development/Tools # Found licenses: @@ -51,16 +51,14 @@ Source0: https://github.com/avocado-framework/%{srcname}/archive/%{gitref}.tar.g BuildArch: noarch BuildRequires: kmod +BuildRequires: make BuildRequires: procps-ng BuildRequires: python3-devel BuildRequires: python3-docutils BuildRequires: python3-jinja2 BuildRequires: python3-lxml -BuildRequires: python3-mock BuildRequires: python3-psutil BuildRequires: python3-setuptools -BuildRequires: python3-six -BuildRequires: python3-sphinx %if 0%{?fedora} BuildRequires: python3-pycdlib %endif @@ -244,7 +242,7 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x # amount of resources we have observed so far. Let's avoid tests that # require too much resources or are time sensitive USER_BASE=`%{__python3} -m site --user-base` - PATH=$USER_BASE/bin:$PATH LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 %{__python3} selftests/run + PATH=$USER_BASE/bin:$HOME/bin:$PATH LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 %{__python3} selftests/run %endif @@ -500,6 +498,10 @@ Again Shell code (and possibly other similar shells). %changelog +* Thu Feb 19 2021 Merlin Mathesius - 82.0-2 +- Fix up BuildRequires: add 'make', drop obsolete packages +- Adjust PATH to make sure self-tests find internal modules + * Mon Sep 14 2020 Cleber Rosa - 82.0-1 - Sync with upstream release 82.0. - Removed python libvirt depedency as the vm runner has been removed From eef3dc2740654446cc66fd8d49bb2f750ef5d9e6 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Thu, 18 Mar 2021 16:51:26 -0500 Subject: [PATCH 21/51] Spec file cleanup following package review. Signed-off-by: Merlin Mathesius --- python-avocado.spec | 290 ++++++++++++++++++++------------------------ 1 file changed, 131 insertions(+), 159 deletions(-) diff --git a/python-avocado.spec b/python-avocado.spec index ec2d07d..394dec3 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -1,6 +1,3 @@ -%global srcname avocado -%global pkgname avocado - # Conditional for release vs. snapshot builds. Set to 1 for release build. %if ! 0%{?rel_build:1} %global rel_build 1 @@ -9,7 +6,7 @@ # Settings used for build from snapshots. %if 0%{?rel_build} %global gitref %{version} - %global gittar %{srcname}-%{version}.tar.gz + %global gittar avocado-%{version}.tar.gz %else %if ! 0%{?commit:1} %global commit e97540793998c4f24a16000465dd7fdd213bf2b9 @@ -20,7 +17,7 @@ %global shortcommit %(c=%{commit};echo ${c:0:9}) %global gitrel .%{commit_date}git%{shortcommit} %global gitref %{commit} - %global gittar %{srcname}-%{shortcommit}.tar.gz + %global gittar avocado-%{shortcommit}.tar.gz %endif # Selftests are provided but may need to be skipped because many of @@ -29,25 +26,28 @@ # enabled by default. %global with_tests 1 -# resultsdb is only available for Fedora -%if 0%{?fedora} +# resultsdb is not available for RHEL +%if ! 0%{?rhel} %global with_resultsdb 1 %else %global with_resultsdb 0 %endif -Name: python-%{pkgname} +Name: python-avocado Version: 82.0 Release: 2%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing -Group: Development/Tools # Found licenses: +# avocado/core/tapparser.py: MIT # avocado/utils/external/gdbmi_parser.py: MIT # avocado/utils/external/spark.py: MIT +# optional_plugins/html/avocado_result_html/templates/bootstrap.min.css: MIT +# optional_plugins/html/avocado_result_html/templates/bootstrap.min.js: MIT +# selftests/.data/jenkins-junit.xsd: MIT # Other files: GPLv2 and GPLv2+ -License: GPLv2 and MIT -URL: http://avocado-framework.github.io/ -Source0: https://github.com/avocado-framework/%{srcname}/archive/%{gitref}.tar.gz#/%{gittar} +License: GPLv2+ and GPLv2 and MIT +URL: https://avocado-framework.github.io/ +Source0: https://github.com/avocado-framework/avocado/archive/%{gitref}/%{gittar} BuildArch: noarch BuildRequires: kmod @@ -59,23 +59,19 @@ BuildRequires: python3-jinja2 BuildRequires: python3-lxml BuildRequires: python3-psutil BuildRequires: python3-setuptools -%if 0%{?fedora} -BuildRequires: python3-pycdlib -%endif %if %{with_resultsdb} BuildRequires: python3-resultsdb_api +BuildRequires: python3-pycdlib %endif %if 0%{?with_tests} BuildRequires: genisoimage BuildRequires: libcdio BuildRequires: psmisc -%if 0%{?fedora} +%if ! 0%{?rhel} BuildRequires: perl-Test-Harness %endif -%if 0%{?fedora} >= 30 || 0%{?rhel} BuildRequires: glibc-all-langpacks -%endif BuildRequires: python3-netifaces BuildRequires: python3-yaml %endif @@ -87,21 +83,23 @@ these days a framework) to perform automated testing. %prep -%setup -q -n %{srcname}-%{gitref} -%if (0%{?fedora} && 0%{?fedora} < 29) || 0%{?rhel} +%setup -q -n avocado-%{gitref} +%if 0%{?rhel} sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to_mux/setup.py %endif +# drop unnecessary install requirement +sed -e "s/'markupsafe<2.0.0', //" -i optional_plugins/html/setup.py %build %py3_build pushd optional_plugins/html %py3_build popd -pushd optional_plugins/resultsdb %if %{with_resultsdb} +pushd optional_plugins/resultsdb %py3_build -%endif popd +%endif pushd optional_plugins/varianter_yaml_to_mux %py3_build popd @@ -123,7 +121,7 @@ popd pushd optional_plugins/glib %py3_build popd -%{__make} man +%make_build man %install %py3_install @@ -138,23 +136,26 @@ for exe in \ avocado-runner-tap \ avocado-software-manager do - %{__mv} %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} - %{__ln_s} $exe-%{python3_version} %{buildroot}%{_bindir}/$exe-3 - %{__ln_s} $exe-%{python3_version} %{buildroot}%{_bindir}/$exe + mv %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} + ln -s $exe-%{python3_version} %{buildroot}%{_bindir}/$exe-3 + ln -s $exe-%{python3_version} %{buildroot}%{_bindir}/$exe done # configuration is held at /etc/avocado only and part of the # python-avocado-common package -%{__rm} -rf %{buildroot}%{python3_sitelib}/avocado/etc +rm -rf %{buildroot}%{python3_sitelib}/avocado/etc # ditto for libexec files -%{__rm} -rf %{buildroot}%{python3_sitelib}/avocado/libexec +rm -rf %{buildroot}%{python3_sitelib}/avocado/libexec +# adjust permissions for file containing shebang line needed for +# spawning tasks in podman containers +chmod -c +x %{buildroot}%{python3_sitelib}/avocado/core/nrunner.py pushd optional_plugins/html %py3_install popd -pushd optional_plugins/resultsdb %if %{with_resultsdb} +pushd optional_plugins/resultsdb %py3_install -%endif popd +%endif pushd optional_plugins/varianter_yaml_to_mux %py3_install popd @@ -177,97 +178,65 @@ pushd optional_plugins/glib %py3_install popd # cleanup plugin test cruft -%{__rm} -rf %{buildroot}%{python3_sitelib}/tests -%{__mkdir} -p %{buildroot}%{_sysconfdir}/avocado -%{__cp} -r avocado/etc/avocado/scripts %{buildroot}%{_sysconfdir}/avocado/scripts -%{__cp} -r avocado/etc/avocado/sysinfo %{buildroot}%{_sysconfdir}/avocado/sysinfo -%{__mkdir} -p %{buildroot}%{_libexecdir}/avocado -%{__cp} avocado/libexec/avocado-bash-utils %{buildroot}%{_libexecdir}/avocado/avocado-bash-utils -%{__cp} avocado/libexec/avocado_debug %{buildroot}%{_libexecdir}/avocado/avocado_debug -%{__cp} avocado/libexec/avocado_error %{buildroot}%{_libexecdir}/avocado/avocado_error -%{__cp} avocado/libexec/avocado_info %{buildroot}%{_libexecdir}/avocado/avocado_info -%{__cp} avocado/libexec/avocado_warn %{buildroot}%{_libexecdir}/avocado/avocado_warn -%{__mkdir_p} %{buildroot}%{_mandir}/man1 -%{__install} -m 0644 man/avocado.1 %{buildroot}%{_mandir}/man1/avocado.1 -%{__install} -d -m 0755 %{buildroot}%{_sharedstatedir}/avocado/data +rm -rf %{buildroot}%{python3_sitelib}/tests +mkdir -p %{buildroot}%{_sysconfdir}/avocado +cp -r avocado/etc/avocado/scripts %{buildroot}%{_sysconfdir}/avocado/scripts +cp -r avocado/etc/avocado/sysinfo %{buildroot}%{_sysconfdir}/avocado/sysinfo +mkdir -p %{buildroot}%{_libexecdir}/avocado +cp avocado/libexec/avocado-bash-utils %{buildroot}%{_libexecdir}/avocado/avocado-bash-utils +cp avocado/libexec/avocado_debug %{buildroot}%{_libexecdir}/avocado/avocado_debug +cp avocado/libexec/avocado_error %{buildroot}%{_libexecdir}/avocado/avocado_error +cp avocado/libexec/avocado_info %{buildroot}%{_libexecdir}/avocado/avocado_info +cp avocado/libexec/avocado_warn %{buildroot}%{_libexecdir}/avocado/avocado_warn +mkdir -p %{buildroot}%{_mandir}/man1 +install -m 0644 man/avocado.1 %{buildroot}%{_mandir}/man1/avocado.1 +mkdir -p %{buildroot}%{_pkgdocdir} +install -m 0644 README.rst %{buildroot}%{_pkgdocdir} +install -d -m 0755 %{buildroot}%{_sharedstatedir}/avocado/data # place examples in documentation directory -%{__install} -d -m 0755 %{buildroot}%{_docdir}/avocado -%{__cp} -r examples/gdb-prerun-scripts %{buildroot}%{_docdir}/avocado/gdb-prerun-scripts -%{__cp} -r examples/plugins %{buildroot}%{_docdir}/avocado/plugins -%{__cp} -r examples/tests %{buildroot}%{_docdir}/avocado/tests -%{__cp} -r examples/varianter_cit %{buildroot}%{_docdir}/avocado/varianter_cit -%{__cp} -r examples/varianter_pict %{buildroot}%{_docdir}/avocado/varianter_pict -%{__cp} -r examples/wrappers %{buildroot}%{_docdir}/avocado/wrappers -%{__cp} -r examples/yaml_to_mux %{buildroot}%{_docdir}/avocado/yaml_to_mux -%{__cp} -r examples/yaml_to_mux_loader %{buildroot}%{_docdir}/avocado/yaml_to_mux_loader -find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec %{__chmod} -c -x {} ';' +install -d -m 0755 %{buildroot}%{_docdir}/avocado +cp -r examples/gdb-prerun-scripts %{buildroot}%{_docdir}/avocado/gdb-prerun-scripts +cp -r examples/plugins %{buildroot}%{_docdir}/avocado/plugins +cp -r examples/tests %{buildroot}%{_docdir}/avocado/tests +cp -r examples/varianter_cit %{buildroot}%{_docdir}/avocado/varianter_cit +cp -r examples/varianter_pict %{buildroot}%{_docdir}/avocado/varianter_pict +cp -r examples/wrappers %{buildroot}%{_docdir}/avocado/wrappers +cp -r examples/yaml_to_mux %{buildroot}%{_docdir}/avocado/yaml_to_mux +cp -r examples/yaml_to_mux_loader %{buildroot}%{_docdir}/avocado/yaml_to_mux_loader +find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec chmod -c -x {} ';' -%check %if 0%{?with_tests} - %{__python3} setup.py develop --user - pushd optional_plugins/html - %{__python3} setup.py develop --user - popd - %if %{with_resultsdb} - pushd optional_plugins/resultsdb - %{__python3} setup.py develop --user - popd - %endif - # with_resultsdb - pushd optional_plugins/varianter_yaml_to_mux - %{__python3} setup.py develop --user - popd - pushd optional_plugins/loader_yaml - %{__python3} setup.py develop --user - popd - pushd optional_plugins/golang - %{__python3} setup.py develop --user - popd - pushd optional_plugins/varianter_pict - %{__python3} setup.py develop --user - popd - pushd optional_plugins/varianter_cit - %{__python3} setup.py develop --user - popd - pushd optional_plugins/result_upload - %{__python3} setup.py develop --user - popd - pushd optional_plugins/glib - %{__python3} setup.py develop --user - popd +%check # LANG: to make the results predictable, we pin the language # that is used during test execution. # AVOCADO_CHECK_LEVEL: package build environments have the least # amount of resources we have observed so far. Let's avoid tests that # require too much resources or are time sensitive - USER_BASE=`%{__python3} -m site --user-base` - PATH=$USER_BASE/bin:$HOME/bin:$PATH LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 %{__python3} selftests/run + PATH=%{buildroot}%{_bindir}:%{buildroot}%{_libexecdir}/avocado:$PATH PYTHONPATH=%{buildroot}%{python3_sitelib}:. \ + LANG=en_US.UTF-8 \ + AVOCADO_CHECK_LEVEL=0 \ + %{python3} selftests/run %endif -%package -n python3-%{pkgname} +%package -n python3-avocado Summary: %{summary} -License: GPLv2 and MIT -%{?python_provide:%python_provide python3-%{pkgname}} -Requires: python-%{pkgname}-common == %{version}-%{release} +Requires: python-avocado-common == %{version}-%{release} Requires: gdb Requires: gdb-gdbserver Requires: procps-ng -Requires: python3 -Requires: python3-setuptools -Requires: python3-six -%if 0%{?fedora} +%if ! 0%{?rhel} Requires: python3-pycdlib %endif -%description -n python3-%{pkgname} +%description -n python3-avocado Avocado is a set of tools and libraries (what people call these days a framework) to perform automated testing. -%files -n python3-%{pkgname} +%files -n python3-avocado %license LICENSE -%doc README.rst +%{_pkgdocdir}/README.rst %{python3_sitelib}/avocado/ %{python3_sitelib}/avocado_framework-%{version}-py%{python3_version}.egg-info %{_bindir}/avocado-%{python3_version} @@ -299,13 +268,15 @@ these days a framework) to perform automated testing. %{_bindir}/avocado-software-manager -%package -n python-%{pkgname}-common +%package -n python-avocado-common Summary: Avocado common files +License: GPLv2+ -%description -n python-%{pkgname}-common +%description -n python-avocado-common Common files (such as configuration) for the Avocado Testing Framework. -%files -n python-%{pkgname}-common +%files -n python-avocado-common +%license LICENSE %{_mandir}/man1/avocado.1.gz %dir %{_docdir}/avocado %dir %{_sharedstatedir}/avocado @@ -322,153 +293,151 @@ Common files (such as configuration) for the Avocado Testing Framework. %{_sysconfdir}/avocado/scripts/job/post.d/README -%package -n python3-%{pkgname}-plugins-output-html +%package -n python3-avocado-plugins-output-html Summary: Avocado HTML report plugin -%{?python_provide:%python_provide python3-%{pkgname}-plugins-output-html} -Requires: python3-%{pkgname} == %{version}-%{release} -Requires: python3-jinja2 +License: GPLv2+ and MIT +Requires: python3-avocado == %{version}-%{release} -%description -n python3-%{pkgname}-plugins-output-html +%description -n python3-avocado-plugins-output-html Adds to avocado the ability to generate an HTML report at every job results directory. It also gives the user the ability to write a report on an arbitrary filesystem location. -%files -n python3-%{pkgname}-plugins-output-html +%files -n python3-avocado-plugins-output-html %{python3_sitelib}/avocado_result_html/ %{python3_sitelib}/avocado_framework_plugin_result_html-%{version}-py%{python3_version}.egg-info %if %{with_resultsdb} -%package -n python3-%{pkgname}-plugins-resultsdb +%package -n python3-avocado-plugins-resultsdb Summary: Avocado plugin to propagate job results to ResultsDB -%{?python_provide:%python_provide python3-%{pkgname}-plugins-resultsdb} -Requires: python3-%{pkgname} == %{version}-%{release} -Requires: python3-resultsdb_api +License: GPLv2+ +Requires: python3-avocado == %{version}-%{release} -%description -n python3-%{pkgname}-plugins-resultsdb +%description -n python3-avocado-plugins-resultsdb Allows Avocado to send job results directly to a ResultsDB server. -%files -n python3-%{pkgname}-plugins-resultsdb +%files -n python3-avocado-plugins-resultsdb %{python3_sitelib}/avocado_resultsdb/ %{python3_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python3_version}.egg-info %endif # with_resultsdb -%package -n python3-%{pkgname}-plugins-varianter-yaml-to-mux +%package -n python3-avocado-plugins-varianter-yaml-to-mux Summary: Avocado plugin to generate variants out of yaml files -%{?python_provide:%python_provide python3-%{pkgname}-plugins-varianter-yaml-to-mux} -Requires: python3-%{pkgname} == %{version}-%{release} -Requires: python3-yaml +License: GPLv2+ +Requires: python3-avocado == %{version}-%{release} -%description -n python3-%{pkgname}-plugins-varianter-yaml-to-mux +%description -n python3-avocado-plugins-varianter-yaml-to-mux Can be used to produce multiple test variants with test parameters defined in a yaml file(s). -%files -n python3-%{pkgname}-plugins-varianter-yaml-to-mux +%files -n python3-avocado-plugins-varianter-yaml-to-mux %{python3_sitelib}/avocado_varianter_yaml_to_mux/ %{python3_sitelib}/avocado_framework_plugin_varianter_yaml_to_mux-%{version}-py%{python3_version}.egg-info -%package -n python3-%{pkgname}-plugins-loader-yaml +%package -n python3-avocado-plugins-loader-yaml Summary: Avocado plugin that loads tests from YAML files -%{?python_provide:%python_provide python3-%{pkgname}-plugins-loader-yaml} -Requires: python3-%{pkgname}-plugins-varianter-yaml-to-mux == %{version}-%{release} +License: GPLv2+ +Requires: python3-avocado-plugins-varianter-yaml-to-mux == %{version}-%{release} -%description -n python3-%{pkgname}-plugins-loader-yaml +%description -n python3-avocado-plugins-loader-yaml Can be used to produce a test suite from definitions in a YAML file, similar to the one used in the yaml_to_mux varianter plugin. -%files -n python3-%{pkgname}-plugins-loader-yaml +%files -n python3-avocado-plugins-loader-yaml %{python3_sitelib}/avocado_loader_yaml/ %{python3_sitelib}/avocado_framework_plugin_loader_yaml-%{version}-py%{python3_version}.egg-info -%package -n python3-%{pkgname}-plugins-golang +%package -n python3-avocado-plugins-golang Summary: Avocado plugin for execution of golang tests -%{?python_provide:%python_provide python3-%{pkgname}-plugins-golang} -Requires: python3-%{pkgname} == %{version}-%{release} +License: GPLv2+ +Requires: python3-avocado == %{version}-%{release} Requires: golang -%description -n python3-%{pkgname}-plugins-golang +%description -n python3-avocado-plugins-golang Allows Avocado to list golang tests, and if golang is installed, also run them. -%files -n python3-%{pkgname}-plugins-golang +%files -n python3-avocado-plugins-golang %{python3_sitelib}/avocado_golang/ %{python3_sitelib}/avocado_framework_plugin_golang-%{version}-py%{python3_version}.egg-info -%package -n python3-%{pkgname}-plugins-varianter-pict +%package -n python3-avocado-plugins-varianter-pict Summary: Varianter with combinatorial capabilities by PICT -%{?python_provide:%python_provide python3-%{pkgname}-plugins-varianter-pict} -Requires: python3-%{pkgname} == %{version}-%{release} +License: GPLv2+ +Requires: python3-avocado == %{version}-%{release} -%description -n python3-%{pkgname}-plugins-varianter-pict +%description -n python3-avocado-plugins-varianter-pict This plugin uses a third-party tool to provide variants created by Pair-Wise algorithms, also known as Combinatorial Independent Testing. -%files -n python3-%{pkgname}-plugins-varianter-pict +%files -n python3-avocado-plugins-varianter-pict %{python3_sitelib}/avocado_varianter_pict/ %{python3_sitelib}/avocado_framework_plugin_varianter_pict-%{version}-py%{python3_version}.egg-info -%package -n python3-%{pkgname}-plugins-varianter-cit +%package -n python3-avocado-plugins-varianter-cit Summary: Varianter with Combinatorial Independent Testing capabilities -%{?python_provide:%python_provide python3-%{pkgname}-plugins-varianter-cit} -Requires: python3-%{pkgname} == %{version}-%{release} +License: GPLv2+ +Requires: python3-avocado == %{version}-%{release} -%description -n python3-%{pkgname}-plugins-varianter-cit +%description -n python3-avocado-plugins-varianter-cit A varianter plugin that generates variants using Combinatorial Independent Testing (AKA Pair-Wise) algorithm developed in collaboration with CVUT Prague. -%files -n python3-%{pkgname}-plugins-varianter-cit +%files -n python3-avocado-plugins-varianter-cit %{python3_sitelib}/avocado_varianter_cit/ %{python3_sitelib}/avocado_framework_plugin_varianter_cit-%{version}-py%{python3_version}.egg-info -%package -n python3-%{pkgname}-plugins-result-upload +%package -n python3-avocado-plugins-result-upload Summary: Avocado plugin propagate job results to a remote host -%{?python_provide:%python_provide python3-%{pkgname}-plugins-result-upload} -Requires: python3-%{pkgname} == %{version}-%{release} +License: GPLv2+ +Requires: python3-avocado == %{version}-%{release} -%description -n python3-%{pkgname}-plugins-result-upload +%description -n python3-avocado-plugins-result-upload This optional plugin is intended to upload the Avocado Job results to a dedicated sever. -%files -n python3-%{pkgname}-plugins-result-upload +%files -n python3-avocado-plugins-result-upload %{python3_sitelib}/avocado_result_upload/ %{python3_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python3_version}.egg-info -%package -n python3-%{pkgname}-plugins-glib +%package -n python3-avocado-plugins-glib Summary: Avocado plugin for execution of GLib Test Framework tests -%{?python_provide:%python_provide python3-%{pkgname}-plugins-glib} -Requires: python3-%{pkgname} == %{version}-%{release} +License: GPLv2+ +Requires: python3-avocado == %{version}-%{release} -%description -n python3-%{pkgname}-plugins-glib +%description -n python3-avocado-plugins-glib This optional plugin is intended to list and run tests written in the GLib Test Framework. -%files -n python3-%{pkgname}-plugins-glib +%files -n python3-avocado-plugins-glib %{python3_sitelib}/avocado_glib/ %{python3_sitelib}/avocado_framework_plugin_glib-%{version}-py%{python3_version}.egg-info -%package -n python-%{pkgname}-examples +%package -n python-avocado-examples Summary: Avocado Test Framework Example Tests -License: GPLv2 +License: GPLv2+ # documentation does not require main package, but needs to be in lock-step if present -Conflicts: python3-%{pkgname} < %{version}-%{release}, python3-%{pkgname} > %{version}-%{release} +Conflicts: python3-avocado < %{version}-%{release}, python3-avocado > %{version}-%{release} -%description -n python-%{pkgname}-examples +%description -n python-avocado-examples The set of example tests present in the upstream tree of the Avocado framework. Some of them are used as functional tests of the framework, others serve as examples of how to write tests on your own. -%files -n python-%{pkgname}-examples +%files -n python-avocado-examples +%license LICENSE %dir %{_docdir}/avocado %{_docdir}/avocado/gdb-prerun-scripts %{_docdir}/avocado/plugins @@ -480,15 +449,17 @@ examples of how to write tests on your own. %{_docdir}/avocado/yaml_to_mux_loader -%package -n python-%{pkgname}-bash +%package -n python-avocado-bash Summary: Avocado Test Framework Bash Utilities -Requires: python-%{pkgname}-common == %{version}-%{release} +License: GPLv2+ and GPLv2 +Requires: python-avocado-common == %{version}-%{release} -%description -n python-%{pkgname}-bash +%description -n python-avocado-bash A small set of utilities to interact with Avocado from the Bourne Again Shell code (and possibly other similar shells). -%files -n python-%{pkgname}-bash +%files -n python-avocado-bash +%license LICENSE %dir %{_libexecdir}/avocado %{_libexecdir}/avocado/avocado-bash-utils %{_libexecdir}/avocado/avocado_debug @@ -498,9 +469,10 @@ Again Shell code (and possibly other similar shells). %changelog -* Thu Feb 19 2021 Merlin Mathesius - 82.0-2 +* Thu Mar 18 2021 Merlin Mathesius - 82.0-2 - Fix up BuildRequires: add 'make', drop obsolete packages - Adjust PATH to make sure self-tests find internal modules +- Spec file cleanup following package review. * Mon Sep 14 2020 Cleber Rosa - 82.0-1 - Sync with upstream release 82.0. From f846228dfaedfbd3e088480a60463a9a9189dc1d Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Tue, 25 May 2021 11:49:20 -0500 Subject: [PATCH 22/51] Eliminate build dependency on make. Additional minor SPEC cleanup. Signed-off-by: Merlin Mathesius --- python-avocado.spec | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/python-avocado.spec b/python-avocado.spec index 394dec3..b05f121 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -51,7 +51,6 @@ Source0: https://github.com/avocado-framework/avocado/archive/%{gitref}/%{gittar BuildArch: noarch BuildRequires: kmod -BuildRequires: make BuildRequires: procps-ng BuildRequires: python3-devel BuildRequires: python3-docutils @@ -121,7 +120,7 @@ popd pushd optional_plugins/glib %py3_build popd -%make_build man +rst2man man/avocado.rst man/avocado.1 %install %py3_install @@ -213,7 +212,8 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec chmod -c -x {} '; # AVOCADO_CHECK_LEVEL: package build environments have the least # amount of resources we have observed so far. Let's avoid tests that # require too much resources or are time sensitive - PATH=%{buildroot}%{_bindir}:%{buildroot}%{_libexecdir}/avocado:$PATH PYTHONPATH=%{buildroot}%{python3_sitelib}:. \ + PATH=%{buildroot}%{_bindir}:%{buildroot}%{_libexecdir}/avocado:$PATH \ + PYTHONPATH=%{buildroot}%{python3_sitelib}:. \ LANG=en_US.UTF-8 \ AVOCADO_CHECK_LEVEL=0 \ %{python3} selftests/run @@ -470,7 +470,8 @@ Again Shell code (and possibly other similar shells). %changelog * Thu Mar 18 2021 Merlin Mathesius - 82.0-2 -- Fix up BuildRequires: add 'make', drop obsolete packages +- Drop obsolete packages from BuildRequires +- Generate man page directly using 'rst2man' rather than requiring 'make' - Adjust PATH to make sure self-tests find internal modules - Spec file cleanup following package review. From ca704ced8ab9fa9320e5c60f80ddb6b5ec645486 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 23 Jul 2021 05:08:18 +0000 Subject: [PATCH 23/51] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index b05f121..0b34acd 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 82.0 -Release: 2%{?gitrel}%{?dist} +Release: 3%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -469,6 +469,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Jul 23 2021 Fedora Release Engineering - 82.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Thu Mar 18 2021 Merlin Mathesius - 82.0-2 - Drop obsolete packages from BuildRequires - Generate man page directly using 'rst2man' rather than requiring 'make' From 45e0653cdc655718818c75f35fa01b019a72a291 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Wed, 28 Jul 2021 11:47:37 -0500 Subject: [PATCH 24/51] Loosen jinja2 version requirement to fix FTBFS in Rawhide Signed-off-by: Merlin Mathesius --- python-avocado.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 0b34acd..7a39a78 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 82.0 -Release: 3%{?gitrel}%{?dist} +Release: 4%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -88,6 +88,8 @@ sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to %endif # drop unnecessary install requirement sed -e "s/'markupsafe<2.0.0', //" -i optional_plugins/html/setup.py +# loosen jinja2 version requirement +sed -e "s/'jinja2<3.0.0'/'jinja2'/" -i optional_plugins/html/setup.py %build %py3_build @@ -469,6 +471,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Wed Jul 28 2021 Merlin Mathesius - 82.0-4 +- Loosen jinja2 version requirement to fix FTBFS in Rawhide + * Fri Jul 23 2021 Fedora Release Engineering - 82.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From d6e052f5df5933530162dffaa19a7153695f66f2 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 21 Jan 2022 10:30:48 +0000 Subject: [PATCH 25/51] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 7a39a78..55357a5 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 82.0 -Release: 4%{?gitrel}%{?dist} +Release: 5%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -471,6 +471,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Jan 21 2022 Fedora Release Engineering - 82.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Wed Jul 28 2021 Merlin Mathesius - 82.0-4 - Loosen jinja2 version requirement to fix FTBFS in Rawhide From a2cb6ab1616eb9750c858822184f8e674468ca9b Mon Sep 17 00:00:00 2001 From: Python Maint Date: Tue, 21 Jun 2022 10:14:20 +0200 Subject: [PATCH 26/51] Rebuilt for Python 3.11 --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 55357a5..7579f2f 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 82.0 -Release: 5%{?gitrel}%{?dist} +Release: 6%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -471,6 +471,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Tue Jun 21 2022 Python Maint - 82.0-6 +- Rebuilt for Python 3.11 + * Fri Jan 21 2022 Fedora Release Engineering - 82.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From 85196ff998ddc2355b6a7726c4a8b1181950d638 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 22 Jul 2022 16:32:26 +0000 Subject: [PATCH 27/51] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 7579f2f..980b609 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 82.0 -Release: 6%{?gitrel}%{?dist} +Release: 7%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -471,6 +471,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Jul 22 2022 Fedora Release Engineering - 82.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Tue Jun 21 2022 Python Maint - 82.0-6 - Rebuilt for Python 3.11 From 04eafa9d9e9aa06ce4ffff6eeeb0fb9dca46965d Mon Sep 17 00:00:00 2001 From: Cleber Rosa Date: Wed, 10 Aug 2022 09:00:25 -0400 Subject: [PATCH 28/51] Sync gdbtest.py with latest upstream Signed-off-by: Cleber Rosa --- tests/gdbtest.py | 122 ++++++++++++++--------------------------------- tests/tests.yml | 10 ++-- 2 files changed, 38 insertions(+), 94 deletions(-) diff --git a/tests/gdbtest.py b/tests/gdbtest.py index d814fa5..c0cdc55 100755 --- a/tests/gdbtest.py +++ b/tests/gdbtest.py @@ -1,14 +1,7 @@ -#!/usr/bin/env python - import os -from six.moves import xrange as range - from avocado import Test -from avocado import main -from avocado.utils import gdb -from avocado.utils import genio -from avocado.utils import process +from avocado.utils import gdb, genio, process class GdbTest(Test): @@ -32,17 +25,22 @@ class GdbTest(Test): "-auto-debug-it"] def setUp(self): - return99_source_path = os.path.join(self.datadir, 'return99.c') - segfault_source_path = os.path.join(self.datadir, 'segfault.c') - self.return99_binary_path = os.path.join(self.outputdir, 'return99') - process.system('gcc -O0 -g %s -o %s' % (return99_source_path, - self.return99_binary_path)) - self.segfault_binary_path = os.path.join(self.outputdir, 'segfault') - process.system('gcc -O0 -g %s -o %s' % (segfault_source_path, - self.segfault_binary_path)) + self.return99_binary_path = os.path.join(self.teststmpdir, 'return99') + if not os.path.exists(self.return99_binary_path): + return99_source_path = self.get_data('return99.c') + if return99_source_path is None: + self.cancel('Test is missing data file "return99.c"') + process.system(f'gcc -O0 -g {return99_source_path} -o {self.return99_binary_path}') + + self.segfault_binary_path = os.path.join(self.teststmpdir, 'segfault') + if not os.path.exists(self.segfault_binary_path): + segfault_source_path = self.get_data('segfault.c') + if segfault_source_path is None: + self.cancel('Test is missing data file "segfault.c"') + process.system(f'gcc -O0 -g {segfault_source_path} -o {self.segfault_binary_path}') @staticmethod - def is_process_alive(process): + def is_process_alive(process): # pylint: disable=W0621 """ Checks if a process is still alive @@ -73,14 +71,14 @@ class GdbTest(Test): g = gdb.GDB() self.log.info("Testing existing (valid) GDB commands using raw commands") for cmd in self.VALID_CMDS: - info_cmd = "-info-gdb-mi-command %s" % cmd[1:] + info_cmd = f"-info-gdb-mi-command {cmd[1:]}" r = g.cmd(info_cmd) self.assertEqual(r.result.result.command.exists, 'true') self.log.info("Testing non-existing (invalid) GDB commands using raw " "commands") for cmd in self.INVALID_CMDS: - info_cmd = "-info-gdb-mi-command %s" % cmd[1:] + info_cmd = f"-info-gdb-mi-command {cmd[1:]}" r = g.cmd(info_cmd) self.assertEqual(r.result.result.command.exists, 'false') @@ -105,7 +103,7 @@ class GdbTest(Test): self.log.info("Testing that GDB loads a file and sets a breakpoint") g = gdb.GDB() - file_cmd = "-file-exec-and-symbols %s" % self.return99_binary_path + file_cmd = f"-file-exec-and-symbols {self.return99_binary_path}" r = g.cmd(file_cmd) self.assertEqual(r.result.class_, 'done') @@ -145,7 +143,7 @@ class GdbTest(Test): self.log.info("Testing that a core dump will be generated") g = gdb.GDB() - file_cmd = "-file-exec-and-symbols %s" % self.segfault_binary_path + file_cmd = f"-file-exec-and-symbols {self.segfault_binary_path}" r = g.cmd(file_cmd) self.assertEqual(r.result.class_, 'done') @@ -156,12 +154,12 @@ class GdbTest(Test): other_messages = g.read_until_break() core_path = None for msg in other_messages: - parsed_msg = gdb.parse_mi(msg) + parsed_msg = gdb.parse_mi(msg.decode()) if (hasattr(parsed_msg, 'class_') and (parsed_msg.class_ == 'stopped') and (parsed_msg.result.signal_name == 'SIGSEGV')): - core_path = "%s.core" % self.segfault_binary_path - gcore_cmd = 'gcore %s' % core_path + core_path = f"{self.segfault_binary_path}.core" + gcore_cmd = f'gcore {core_path}' gcore_cmd = gdb.encode_mi_cli(gcore_cmd) r = g.cmd(gcore_cmd) self.assertEqual(r.result.class_, 'done') @@ -191,14 +189,14 @@ class GdbTest(Test): # Do 100 cycle of target (kind of connects) and disconnects for _ in range(0, 100): - cmd = '-target-select extended-remote :%s' % s.port + cmd = f'-target-select extended-remote :{s.port}' r = g.cmd(cmd) self.assertEqual(r.result.class_, 'connected') r = g.cmd('-target-disconnect') self.assertEqual(r.result.class_, 'done') # manual server shutdown - cmd = '-target-select extended-remote :%s' % s.port + cmd = f'-target-select extended-remote :{s.port}' r = g.cmd(cmd) self.assertEqual(r.result.class_, 'connected') r = g.cli_cmd('monitor exit') @@ -234,15 +232,15 @@ class GdbTest(Test): s = gdb.GDBServer() g = gdb.GDB() - cmd = '-file-exec-and-symbols %s' % self.return99_binary_path + cmd = f'-file-exec-and-symbols {self.return99_binary_path}' r = g.cmd(cmd) self.assertEqual(r.result.class_, 'done') - cmd = 'set remote exec-file %s' % self.return99_binary_path + cmd = f'set remote exec-file {self.return99_binary_path}' r = g.cmd(cmd) self.assertEqual(r.result.class_, 'done') - cmd = "-break-insert %s" % 'main' + cmd = f"-break-insert {'main'}" r = g.cmd(cmd) self.assertEqual(r.result.class_, 'done') @@ -250,7 +248,7 @@ class GdbTest(Test): other_messages = g.read_until_break() for msg in other_messages: - parsed_msg = gdb.parse_mi(msg) + parsed_msg = gdb.parse_mi(msg.decode()) if (hasattr(parsed_msg, 'class_') and parsed_msg.class_ == 'stopped' and parsed_msg.result.reason == 'breakpoint-hit'): @@ -278,7 +276,8 @@ class GdbTest(Test): c1 = gdb.GDB() c1.connect(s.port) c2 = gdb.GDB() - self.assertRaises(ValueError, c2.connect, s.port) + with self.assertRaises(gdb.UnexpectedResponseError): + c2.connect(s.port) s.exit() def test_server_exit(self): @@ -310,43 +309,6 @@ class GdbTest(Test): server_instances[i].exit() self.assertFalse(self.is_process_alive(server_instances[i].process)) - def test_interactive(self): - """ - Tests avocado's GDB plugin features - - If GDB command line options are given, `--gdb-run-bin=return99` for - this particular test, the test will stop at binary main() function. - """ - self.log.info('Testing GDB interactivity') - process.run(self.return99_binary_path, ignore_status=True) - - def test_interactive_args(self): - """ - Tests avocado's GDB plugin features with an executable and args - - If GDB command line options are given, `--gdb-run-bin=return99` for - this particular test, the test will stop at binary main() function. - - This test uses `process.run()` without an `ignore_status` parameter - """ - self.log.info('Testing GDB interactivity with arguments') - result = process.run("%s 0" % self.return99_binary_path) - self.assertEqual(result.exit_status, 0) - - def test_exit_status(self): - """ - Tests avocado's GDB plugin features - - If GDB command line options are given, `--gdb-run-bin=return99` for - this particular test, the test will stop at binary main() function. - """ - self.log.info('Testing process exit statuses') - for arg, exp in [(-1, 255), (8, 8)]: - self.log.info('Expecting exit status "%s"', exp) - cmd = "%s %s" % (self.return99_binary_path, arg) - result = process.run(cmd, ignore_status=True) - self.assertEqual(result.exit_status, exp) - def test_server_stderr(self): self.log.info('Testing server stderr collection') s = gdb.GDBServer() @@ -354,7 +316,7 @@ class GdbTest(Test): self.assertTrue(os.path.exists(s.stderr_path)) stderr_lines = genio.read_all_lines(s.stderr_path) - listening_line = "Listening on port %s" % s.port + listening_line = f"Listening on port {s.port}" self.assertIn(listening_line, stderr_lines) def test_server_stdout(self): @@ -372,28 +334,14 @@ class GdbTest(Test): stdout_lines = genio.read_all_lines(s.stdout_path) self.assertIn("return 99", stdout_lines) - def test_interactive_stdout(self): - """ - Tests avocado's GDB plugin features - - If GDB command line options are given, `--gdb-run-bin=return99` for - this particular test, the test will stop at binary main() function. - """ - self.log.info('Testing GDB interactivity') - result = process.run(self.return99_binary_path, ignore_status=True) - self.assertIn("return 99\n", result.stdout) - - def test_remote(self): + @staticmethod + def test_remote(): """ Tests GDBRemote interaction with a GDBServer """ s = gdb.GDBServer() r = gdb.GDBRemote('127.0.0.1', s.port) r.connect() - r.cmd("qSupported") - r.cmd("qfThreadInfo") + r.cmd(b"qSupported") + r.cmd(b"qfThreadInfo") s.exit() - - -if __name__ == '__main__': - main() diff --git a/tests/tests.yml b/tests/tests.yml index be4a031..7ff61ce 100644 --- a/tests/tests.yml +++ b/tests/tests.yml @@ -3,8 +3,8 @@ - role: standard-test-avocado tests: - gdbtest.py:GdbTest.test_start_exit - - gdbtest.py:GdbTest.test_existing_commands - gdbtest.py:GdbTest.test_existing_commands_raw + - gdbtest.py:GdbTest.test_existing_commands - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit_raw - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit - gdbtest.py:GdbTest.test_generate_core @@ -15,13 +15,9 @@ - gdbtest.py:GdbTest.test_stream_messages - gdbtest.py:GdbTest.test_connect_multiple_clients - gdbtest.py:GdbTest.test_server_exit - - gdbtest.py:GdbTest.test_server_stdout - - gdbtest.py:GdbTest.test_server_stderr - gdbtest.py:GdbTest.test_multiple_servers - - gdbtest.py:GdbTest.test_interactive - - gdbtest.py:GdbTest.test_interactive_args - - gdbtest.py:GdbTest.test_exit_status - - gdbtest.py:GdbTest.test_interactive_stdout + - gdbtest.py:GdbTest.test_server_stderr + - gdbtest.py:GdbTest.test_server_stdout - gdbtest.py:GdbTest.test_remote required_packages: - gcc From af6d992792404cebe869df80f51df85c18836725 Mon Sep 17 00:00:00 2001 From: Cleber Rosa Date: Wed, 10 Aug 2022 09:00:25 -0400 Subject: [PATCH 29/51] Update to version 92.0 The current packaged version from upstream matches the Long Term Stability (LTS) release 82.0, which is about to be EOLed upstream. This updates the pacakge to track the latest and current LTS release. Signed-off-by: Cleber Rosa --- .gitignore | 1 + python-avocado.spec | 83 +++++++++++++++++---------------------------- sources | 2 +- 3 files changed, 34 insertions(+), 52 deletions(-) diff --git a/.gitignore b/.gitignore index bf17c05..e0e0a9a 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ /avocado-79.0.tar.gz /avocado-80.0.tar.gz /avocado-82.0.tar.gz +/avocado-92.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index 980b609..3a493d7 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -9,10 +9,10 @@ %global gittar avocado-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit e97540793998c4f24a16000465dd7fdd213bf2b9 + %global commit 08ac79fa4ecaee60d7d5211d9634568b5545bdcd %endif %if ! 0%{?commit_date:1} - %global commit_date 20200911 + %global commit_date 20211019 %endif %global shortcommit %(c=%{commit};echo ${c:0:9}) %global gitrel .%{commit_date}git%{shortcommit} @@ -34,8 +34,8 @@ %endif Name: python-avocado -Version: 82.0 -Release: 7%{?gitrel}%{?dist} +Version: 92.0 +Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -104,9 +104,6 @@ popd pushd optional_plugins/varianter_yaml_to_mux %py3_build popd -pushd optional_plugins/loader_yaml - %py3_build -popd pushd optional_plugins/golang %py3_build popd @@ -119,9 +116,6 @@ popd pushd optional_plugins/result_upload %py3_build popd -pushd optional_plugins/glib - %py3_build -popd rst2man man/avocado.rst man/avocado.1 %install @@ -130,11 +124,14 @@ for exe in \ avocado \ avocado-runner \ avocado-runner-noop \ - avocado-runner-exec \ + avocado-runner-dry-run \ avocado-runner-exec-test \ avocado-runner-python-unittest \ avocado-runner-avocado-instrumented \ avocado-runner-tap \ + avocado-runner-requirement-asset \ + avocado-runner-requirement-package \ + avocado-runner-sysinfo \ avocado-software-manager do mv %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} @@ -160,9 +157,6 @@ popd pushd optional_plugins/varianter_yaml_to_mux %py3_install popd -pushd optional_plugins/loader_yaml - %py3_install -popd pushd optional_plugins/golang %py3_install popd @@ -175,9 +169,6 @@ popd pushd optional_plugins/result_upload %py3_install popd -pushd optional_plugins/glib - %py3_install -popd # cleanup plugin test cruft rm -rf %{buildroot}%{python3_sitelib}/tests mkdir -p %{buildroot}%{_sysconfdir}/avocado @@ -203,7 +194,6 @@ cp -r examples/varianter_cit %{buildroot}%{_docdir}/avocado/varianter_cit cp -r examples/varianter_pict %{buildroot}%{_docdir}/avocado/varianter_pict cp -r examples/wrappers %{buildroot}%{_docdir}/avocado/wrappers cp -r examples/yaml_to_mux %{buildroot}%{_docdir}/avocado/yaml_to_mux -cp -r examples/yaml_to_mux_loader %{buildroot}%{_docdir}/avocado/yaml_to_mux_loader find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec chmod -c -x {} ';' @@ -218,7 +208,9 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec chmod -c -x {} '; PYTHONPATH=%{buildroot}%{python3_sitelib}:. \ LANG=en_US.UTF-8 \ AVOCADO_CHECK_LEVEL=0 \ - %{python3} selftests/run + %{python3} selftests/check.py --job-api --nrunner-interface \ + --unit --jobs --functional --optional-plugins \ + --disable-plugin-checks robot %endif @@ -250,9 +242,9 @@ these days a framework) to perform automated testing. %{_bindir}/avocado-runner-noop-%{python3_version} %{_bindir}/avocado-runner-noop-3 %{_bindir}/avocado-runner-noop -%{_bindir}/avocado-runner-exec-%{python3_version} -%{_bindir}/avocado-runner-exec-3 -%{_bindir}/avocado-runner-exec +%{_bindir}/avocado-runner-dry-run-%{python3_version} +%{_bindir}/avocado-runner-dry-run-3 +%{_bindir}/avocado-runner-dry-run %{_bindir}/avocado-runner-exec-test-%{python3_version} %{_bindir}/avocado-runner-exec-test-3 %{_bindir}/avocado-runner-exec-test @@ -265,6 +257,15 @@ these days a framework) to perform automated testing. %{_bindir}/avocado-runner-tap-%{python3_version} %{_bindir}/avocado-runner-tap-3 %{_bindir}/avocado-runner-tap +%{_bindir}/avocado-runner-requirement-asset-%{python3_version} +%{_bindir}/avocado-runner-requirement-asset-3 +%{_bindir}/avocado-runner-requirement-asset +%{_bindir}/avocado-runner-requirement-package-%{python3_version} +%{_bindir}/avocado-runner-requirement-package-3 +%{_bindir}/avocado-runner-requirement-package +%{_bindir}/avocado-runner-sysinfo-%{python3_version} +%{_bindir}/avocado-runner-sysinfo-3 +%{_bindir}/avocado-runner-sysinfo %{_bindir}/avocado-software-manager-%{python3_version} %{_bindir}/avocado-software-manager-3 %{_bindir}/avocado-software-manager @@ -341,20 +342,6 @@ defined in a yaml file(s). %{python3_sitelib}/avocado_framework_plugin_varianter_yaml_to_mux-%{version}-py%{python3_version}.egg-info -%package -n python3-avocado-plugins-loader-yaml -Summary: Avocado plugin that loads tests from YAML files -License: GPLv2+ -Requires: python3-avocado-plugins-varianter-yaml-to-mux == %{version}-%{release} - -%description -n python3-avocado-plugins-loader-yaml -Can be used to produce a test suite from definitions in a YAML file, -similar to the one used in the yaml_to_mux varianter plugin. - -%files -n python3-avocado-plugins-loader-yaml -%{python3_sitelib}/avocado_loader_yaml/ -%{python3_sitelib}/avocado_framework_plugin_loader_yaml-%{version}-py%{python3_version}.egg-info - - %package -n python3-avocado-plugins-golang Summary: Avocado plugin for execution of golang tests License: GPLv2+ @@ -368,6 +355,7 @@ also run them. %files -n python3-avocado-plugins-golang %{python3_sitelib}/avocado_golang/ %{python3_sitelib}/avocado_framework_plugin_golang-%{version}-py%{python3_version}.egg-info +%{_bindir}/avocado-runner-golang %package -n python3-avocado-plugins-varianter-pict @@ -413,20 +401,6 @@ a dedicated sever. %{python3_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python3_version}.egg-info -%package -n python3-avocado-plugins-glib -Summary: Avocado plugin for execution of GLib Test Framework tests -License: GPLv2+ -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-glib -This optional plugin is intended to list and run tests written in the -GLib Test Framework. - -%files -n python3-avocado-plugins-glib -%{python3_sitelib}/avocado_glib/ -%{python3_sitelib}/avocado_framework_plugin_glib-%{version}-py%{python3_version}.egg-info - - %package -n python-avocado-examples Summary: Avocado Test Framework Example Tests License: GPLv2+ @@ -448,7 +422,6 @@ examples of how to write tests on your own. %{_docdir}/avocado/varianter_pict %{_docdir}/avocado/wrappers %{_docdir}/avocado/yaml_to_mux -%{_docdir}/avocado/yaml_to_mux_loader %package -n python-avocado-bash @@ -471,6 +444,14 @@ Again Shell code (and possibly other similar shells). %changelog +* Tue Aug 9 2022 Cleber Rosa - 92.0-1 +- Use selftests/check.py job instead of more limited selftests/run +- Included avocado-runner-sysinfo, avocado-runner-requirement-package, + avocado-runner-requirement-asset and avocado-runner-dry-run and + avocado-runner-golang executables +- Removed avocado-runner-exec executable +- Removed loader_yaml and glib plugin packages + * Fri Jul 22 2022 Fedora Release Engineering - 82.0-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild diff --git a/sources b/sources index 4721c3f..4e0c9f3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-82.0.tar.gz) = 099ab131b2b941602550e71507e4ca517d5d2cd5152b255edace0473c9de93aac8163a61689414b5b58f9211f58981c3c30c1c3ca8a191283f609722ce07f173 +SHA512 (avocado-92.0.tar.gz) = 87d424098b26d12cbe14ffc509616c2114c7b549801582593568f94ca181373f0398290cb9569645c40d514f1ae29f77bfad94f6efb2025b1f9b8c5f2a5b7822 From 92e1215793321a5361da5cdd12f6a6eee06c5c8d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 20 Jan 2023 11:24:35 +0000 Subject: [PATCH 30/51] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 3a493d7..c7832c6 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.0 -Release: 1%{?gitrel}%{?dist} +Release: 2%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -444,6 +444,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Jan 20 2023 Fedora Release Engineering - 92.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Tue Aug 9 2022 Cleber Rosa - 92.0-1 - Use selftests/check.py job instead of more limited selftests/run - Included avocado-runner-sysinfo, avocado-runner-requirement-package, From 1a301b62685523f8e23eaf142fd6656d4cc81ebc Mon Sep 17 00:00:00 2001 From: Python Maint Date: Wed, 14 Jun 2023 20:21:36 +0200 Subject: [PATCH 31/51] Rebuilt for Python 3.12 --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index c7832c6..243e291 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.0 -Release: 2%{?gitrel}%{?dist} +Release: 3%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -444,6 +444,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Wed Jun 14 2023 Python Maint - 92.0-3 +- Rebuilt for Python 3.12 + * Fri Jan 20 2023 Fedora Release Engineering - 92.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From a4811c461cd607bcafd96c707b9205a26f5fce70 Mon Sep 17 00:00:00 2001 From: Cleber Rosa Date: Mon, 17 Jul 2023 13:44:25 -0400 Subject: [PATCH 32/51] Update to version 92.1 This also enables the build/usage under Python 3.12, making it suitable for Fedora 39. Reference: https://bugzilla.redhat.com/show_bug.cgi?id=2220126 Reference: https://bugzilla.redhat.com/show_bug.cgi?id=2155457 Signed-off-by: Cleber Rosa --- .gitignore | 2 ++ python-avocado.spec | 10 ++++++++-- sources | 3 ++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index e0e0a9a..b5a1b5d 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ /avocado-80.0.tar.gz /avocado-82.0.tar.gz /avocado-92.0.tar.gz +/avocado-92.1.tar.gz +/avocado-92.1-python312.patch diff --git a/python-avocado.spec b/python-avocado.spec index 243e291..32a25f1 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -34,8 +34,8 @@ %endif Name: python-avocado -Version: 92.0 -Release: 3%{?gitrel}%{?dist} +Version: 92.1 +Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -49,6 +49,7 @@ License: GPLv2+ and GPLv2 and MIT URL: https://avocado-framework.github.io/ Source0: https://github.com/avocado-framework/avocado/archive/%{gitref}/%{gittar} BuildArch: noarch +Patch0: avocado-92.1-python312.patch BuildRequires: kmod BuildRequires: procps-ng @@ -83,6 +84,7 @@ these days a framework) to perform automated testing. %prep %setup -q -n avocado-%{gitref} +%patch 0 -p 1 %if 0%{?rhel} sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to_mux/setup.py %endif @@ -444,6 +446,10 @@ Again Shell code (and possibly other similar shells). %changelog +* Mon Jul 17 2023 Cleber Rosa - 92.1-1 +- Updated to 92.1 +- Support building and running under Python 3.12 for F39 + * Wed Jun 14 2023 Python Maint - 92.0-3 - Rebuilt for Python 3.12 diff --git a/sources b/sources index 4e0c9f3..aae30a3 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -SHA512 (avocado-92.0.tar.gz) = 87d424098b26d12cbe14ffc509616c2114c7b549801582593568f94ca181373f0398290cb9569645c40d514f1ae29f77bfad94f6efb2025b1f9b8c5f2a5b7822 +SHA512 (avocado-92.1.tar.gz) = b775ebd014f4c91aae2b13e1aa350940ce7e277eb63ebf7c325f6dd020c10eb21390942080468804ceadd923f52970cb2f2ca214c7855df435d442e99a499ceb +SHA512 (avocado-92.1-python312.patch) = fc94e23c84653b317ba3d9a6a52d99d2e136c2fa50621b5ce36b2b10bbcb8cceac36d12dd715820ebe5ae266768bf3384fcb15b6f4614d4a4dd60415c1821901 From d9406a60f25e6f84e9de151625b2b9b62187bef2 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 21 Jul 2023 07:31:24 +0000 Subject: [PATCH 33/51] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 32a25f1..f3354aa 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.1 -Release: 1%{?gitrel}%{?dist} +Release: 2%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -446,6 +446,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Jul 21 2023 Fedora Release Engineering - 92.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Mon Jul 17 2023 Cleber Rosa - 92.1-1 - Updated to 92.1 - Support building and running under Python 3.12 for F39 From 5bb1ce77be60739aaf8625fcf52391484d9b7ca4 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 21 Jan 2024 23:29:41 +0000 Subject: [PATCH 34/51] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index f3354aa..b6d724c 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.1 -Release: 2%{?gitrel}%{?dist} +Release: 3%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -446,6 +446,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Sun Jan 21 2024 Fedora Release Engineering - 92.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jul 21 2023 Fedora Release Engineering - 92.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 9e4eb9164338ce75838345f5cf81019dd6b5390f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 26 Jan 2024 01:30:07 +0000 Subject: [PATCH 35/51] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index b6d724c..1342efc 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.1 -Release: 3%{?gitrel}%{?dist} +Release: 4%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -446,6 +446,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Jan 26 2024 Fedora Release Engineering - 92.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Sun Jan 21 2024 Fedora Release Engineering - 92.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 81494bf6112afec8f71a7d1d9cd7e1d495260483 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 29 Jan 2024 11:09:26 +0000 Subject: [PATCH 36/51] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 1342efc..96b18ee 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.1 -Release: 4%{?gitrel}%{?dist} +Release: 5%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -446,6 +446,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Mon Jan 29 2024 Fedora Release Engineering - 92.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 26 2024 Fedora Release Engineering - 92.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 3c3eeac4322573bcae72212cb2e774808541c5f4 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 7 Jun 2024 18:57:17 +0200 Subject: [PATCH 37/51] Rebuilt for Python 3.13 --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 96b18ee..1b0bc20 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.1 -Release: 5%{?gitrel}%{?dist} +Release: 6%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -446,6 +446,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Jun 07 2024 Python Maint - 92.1-6 +- Rebuilt for Python 3.13 + * Mon Jan 29 2024 Fedora Release Engineering - 92.1-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 42c94b1fece3c83e4ae427d0ee4c53e97839e8e4 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jul 2024 09:39:48 +0000 Subject: [PATCH 38/51] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 1b0bc20..0e8b43b 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.1 -Release: 6%{?gitrel}%{?dist} +Release: 7%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -446,6 +446,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Jul 19 2024 Fedora Release Engineering - 92.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Fri Jun 07 2024 Python Maint - 92.1-6 - Rebuilt for Python 3.13 From 5e41ae22a867fcdf2875629e1c35fe3d438ca25f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Fri, 26 Jul 2024 02:15:51 +0200 Subject: [PATCH 39/51] convert GPLv2+ license to SPDX This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4 --- python-avocado.spec | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/python-avocado.spec b/python-avocado.spec index 0e8b43b..f7835cd 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.1 -Release: 7%{?gitrel}%{?dist} +Release: 8%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -275,7 +275,8 @@ these days a framework) to perform automated testing. %package -n python-avocado-common Summary: Avocado common files -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later %description -n python-avocado-common Common files (such as configuration) for the Avocado Testing Framework. @@ -316,7 +317,8 @@ arbitrary filesystem location. %if %{with_resultsdb} %package -n python3-avocado-plugins-resultsdb Summary: Avocado plugin to propagate job results to ResultsDB -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-resultsdb @@ -332,7 +334,8 @@ server. %package -n python3-avocado-plugins-varianter-yaml-to-mux Summary: Avocado plugin to generate variants out of yaml files -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-varianter-yaml-to-mux @@ -346,7 +349,8 @@ defined in a yaml file(s). %package -n python3-avocado-plugins-golang Summary: Avocado plugin for execution of golang tests -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later Requires: python3-avocado == %{version}-%{release} Requires: golang @@ -362,7 +366,8 @@ also run them. %package -n python3-avocado-plugins-varianter-pict Summary: Varianter with combinatorial capabilities by PICT -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-varianter-pict @@ -376,7 +381,8 @@ Pair-Wise algorithms, also known as Combinatorial Independent Testing. %package -n python3-avocado-plugins-varianter-cit Summary: Varianter with Combinatorial Independent Testing capabilities -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-varianter-cit @@ -391,7 +397,8 @@ collaboration with CVUT Prague. %package -n python3-avocado-plugins-result-upload Summary: Avocado plugin propagate job results to a remote host -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-result-upload @@ -405,7 +412,8 @@ a dedicated sever. %package -n python-avocado-examples Summary: Avocado Test Framework Example Tests -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later # documentation does not require main package, but needs to be in lock-step if present Conflicts: python3-avocado < %{version}-%{release}, python3-avocado > %{version}-%{release} @@ -446,6 +454,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Jul 26 2024 Miroslav Suchý - 92.1-8 +- convert license to SPDX + * Fri Jul 19 2024 Fedora Release Engineering - 92.1-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 6e6d0dac8901425fee83143780b0de70cc965ea0 Mon Sep 17 00:00:00 2001 From: Cleber Rosa Date: Mon, 19 Aug 2024 10:08:22 -0400 Subject: [PATCH 40/51] Update to version 92.3 This update to a minor release on the 92LTS series, allowing for building and running under F42. Signed-off-by: Cleber Rosa --- .gitignore | 1 + python-avocado.spec | 15 +++++++++------ sources | 3 +-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index b5a1b5d..bd8b053 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ /avocado-92.0.tar.gz /avocado-92.1.tar.gz /avocado-92.1-python312.patch +/avocado-92.3.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index f7835cd..0c6d6f7 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -9,10 +9,10 @@ %global gittar avocado-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit 08ac79fa4ecaee60d7d5211d9634568b5545bdcd + %global commit 5b21f030001d6eed69c0357cc45b6128c73dc860 %endif %if ! 0%{?commit_date:1} - %global commit_date 20211019 + %global commit_date 20240819 %endif %global shortcommit %(c=%{commit};echo ${c:0:9}) %global gitrel .%{commit_date}git%{shortcommit} @@ -34,8 +34,8 @@ %endif Name: python-avocado -Version: 92.1 -Release: 8%{?gitrel}%{?dist} +Version: 92.3 +Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -49,7 +49,6 @@ License: GPLv2+ and GPLv2 and MIT URL: https://avocado-framework.github.io/ Source0: https://github.com/avocado-framework/avocado/archive/%{gitref}/%{gittar} BuildArch: noarch -Patch0: avocado-92.1-python312.patch BuildRequires: kmod BuildRequires: procps-ng @@ -84,7 +83,6 @@ these days a framework) to perform automated testing. %prep %setup -q -n avocado-%{gitref} -%patch 0 -p 1 %if 0%{?rhel} sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to_mux/setup.py %endif @@ -454,6 +452,11 @@ Again Shell code (and possibly other similar shells). %changelog +* Mon Aug 19 2024 Cleber Rosa - 92.3-1 +- Updated to 92.3 +- Support building and running under Python 3.13 for F42 +- Removed patch from 92.1 as its present in 92.3 + * Fri Jul 26 2024 Miroslav Suchý - 92.1-8 - convert license to SPDX diff --git a/sources b/sources index aae30a3..4a738a2 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (avocado-92.1.tar.gz) = b775ebd014f4c91aae2b13e1aa350940ce7e277eb63ebf7c325f6dd020c10eb21390942080468804ceadd923f52970cb2f2ca214c7855df435d442e99a499ceb -SHA512 (avocado-92.1-python312.patch) = fc94e23c84653b317ba3d9a6a52d99d2e136c2fa50621b5ce36b2b10bbcb8cceac36d12dd715820ebe5ae266768bf3384fcb15b6f4614d4a4dd60415c1821901 +SHA512 (avocado-92.3.tar.gz) = 97a0c113bc826537a02ebf6efcd7cf49b505a93e5fd9686c3a4c7e70902f2d367f78eb2fb23ddf9253b97f45e27b2e328fd6bd1c420ecbeb59e25e991b29c262 From fbd8b0d95c0cf3e59b443a8e31850d1ed21626df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Mon, 7 Oct 2024 10:28:42 +0000 Subject: [PATCH 41/51] Migrate to SPDX license This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4 If there will be no comments in two weeks, I will merge this. --- python-avocado.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 0c6d6f7..b7a4d55 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -45,7 +45,7 @@ Summary: Framework with tools and libraries for Automated Testing # optional_plugins/html/avocado_result_html/templates/bootstrap.min.js: MIT # selftests/.data/jenkins-junit.xsd: MIT # Other files: GPLv2 and GPLv2+ -License: GPLv2+ and GPLv2 and MIT +License: GPL-2.0-or-later AND GPL-2.0-only AND MIT URL: https://avocado-framework.github.io/ Source0: https://github.com/avocado-framework/avocado/archive/%{gitref}/%{gittar} BuildArch: noarch From a50932740bcd04cfe9fc9958201989c8971a7b17 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 18 Jan 2025 12:05:43 +0000 Subject: [PATCH 42/51] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index b7a4d55..77eb88c 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.3 -Release: 1%{?gitrel}%{?dist} +Release: 2%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -452,6 +452,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Sat Jan 18 2025 Fedora Release Engineering - 92.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Mon Aug 19 2024 Cleber Rosa - 92.3-1 - Updated to 92.3 - Support building and running under Python 3.13 for F42 From c84a1c5f931a3f6f54d7e95f145dbbf6b6b24676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Thu, 16 Jan 2025 08:53:14 +0100 Subject: [PATCH 43/51] migrate license to SPDX This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4 Signed-off-by: Cleber Rosa --- python-avocado.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/python-avocado.spec b/python-avocado.spec index 77eb88c..d3ee34a 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.3 -Release: 2%{?gitrel}%{?dist} +Release: 3%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -299,7 +299,7 @@ Common files (such as configuration) for the Avocado Testing Framework. %package -n python3-avocado-plugins-output-html Summary: Avocado HTML report plugin -License: GPLv2+ and MIT +License: GPL-2.0-or-later AND MIT Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-output-html @@ -434,7 +434,7 @@ examples of how to write tests on your own. %package -n python-avocado-bash Summary: Avocado Test Framework Bash Utilities -License: GPLv2+ and GPLv2 +License: GPL-2.0-or-later AND GPL-2.0-only Requires: python-avocado-common == %{version}-%{release} %description -n python-avocado-bash @@ -452,6 +452,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Mon Jan 20 2025 Cleber Rosa - 92.3-3 +- convert remaining licenses to SPDX + * Sat Jan 18 2025 Fedora Release Engineering - 92.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From d84ef63709c47c3a5d91a688cb2cd10c7e12ba26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Fri, 3 Jan 2025 15:47:29 +0100 Subject: [PATCH 44/51] Loosen the PyYAML version requirement in python3-avocado-plugins-varianter-yaml-to-mux Upstream has pinned this for Debian reasons: https://github.com/avocado-framework/avocado/commit/f130c763be3eb33dda196e57efe16705523242e9 Signed-off-by: Cleber Rosa --- python-avocado.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index d3ee34a..12c3f7b 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.3 -Release: 3%{?gitrel}%{?dist} +Release: 4%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -90,6 +90,8 @@ sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to sed -e "s/'markupsafe<2.0.0', //" -i optional_plugins/html/setup.py # loosen jinja2 version requirement sed -e "s/'jinja2<3.0.0'/'jinja2'/" -i optional_plugins/html/setup.py +# loosen pyyaml version requirement +sed -e "s/'PyYAML>=4.2b2,<6.0.2'/'PyYAML>=4.2b2'/" -i optional_plugins/varianter_yaml_to_mux/setup.py %build %py3_build @@ -452,6 +454,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Mon Jan 20 2025 Miro Hrončok - 92.3-4 +- Loosen the PyYAML version requirement in python3-avocado-plugins-varianter-yaml-to-mux + * Mon Jan 20 2025 Cleber Rosa - 92.3-3 - convert remaining licenses to SPDX From 54d20e2b89c3faa5283306c568dc8905ef1b1b6a Mon Sep 17 00:00:00 2001 From: Python Maint Date: Tue, 3 Jun 2025 15:32:47 +0200 Subject: [PATCH 45/51] Rebuilt for Python 3.14 --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index 12c3f7b..f6f1142 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.3 -Release: 4%{?gitrel}%{?dist} +Release: 5%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -454,6 +454,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Tue Jun 03 2025 Python Maint - 92.3-5 +- Rebuilt for Python 3.14 + * Mon Jan 20 2025 Miro Hrončok - 92.3-4 - Loosen the PyYAML version requirement in python3-avocado-plugins-varianter-yaml-to-mux From 71b50479dd5ce4edc7a504b0c14d902a4dc26f87 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 06:46:47 +0000 Subject: [PATCH 46/51] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- python-avocado.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-avocado.spec b/python-avocado.spec index f6f1142..4c1803a 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -35,7 +35,7 @@ Name: python-avocado Version: 92.3 -Release: 5%{?gitrel}%{?dist} +Release: 6%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -454,6 +454,9 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Jul 25 2025 Fedora Release Engineering - 92.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Tue Jun 03 2025 Python Maint - 92.3-5 - Rebuilt for Python 3.14 From a12e378e73f22824d667a46028563c98bc0cc50b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Tue, 19 Aug 2025 11:56:28 +0200 Subject: [PATCH 47/51] Retired: Fails to install: https://pagure.io/releng/issue/12871 --- .gitignore | 34 -- dead.package | 1 + python-avocado.spec | 699 ------------------------------- sources | 1 - tests/gdbtest.py | 347 --------------- tests/gdbtest.py.data/return99.c | 47 --- tests/gdbtest.py.data/segfault.c | 9 - tests/tests.yml | 25 -- 8 files changed, 1 insertion(+), 1162 deletions(-) delete mode 100644 .gitignore create mode 100644 dead.package delete mode 100644 python-avocado.spec delete mode 100644 sources delete mode 100755 tests/gdbtest.py delete mode 100644 tests/gdbtest.py.data/return99.c delete mode 100644 tests/gdbtest.py.data/segfault.c delete mode 100644 tests/tests.yml diff --git a/.gitignore b/.gitignore deleted file mode 100644 index bd8b053..0000000 --- a/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -/avocado-43.0.tar.gz -/avocado-46.0.tar.gz -/avocado-47.0.tar.gz -/avocado-48.0.tar.gz -/avocado-49.0.tar.gz -/avocado-50.0.tar.gz -/avocado-51.0.tar.gz -/avocado-52.0.tar.gz -/avocado-52.1.tar.gz -/avocado-61.0.tar.gz -/avocado-62.0.tar.gz -/avocado-63.0.tar.gz -/avocado-64.0.tar.gz -/avocado-65.0.tar.gz -/avocado-66.0.tar.gz -/avocado-67.0.tar.gz -/avocado-68.0.tar.gz -/avocado-69.0.tar.gz -/avocado-70.0.tar.gz -/avocado-71.0.tar.gz -/avocado-72.0.tar.gz -/avocado-73.0.tar.gz -/avocado-74.0.tar.gz -/avocado-75.1.tar.gz -/avocado-76.0.tar.gz -/avocado-77.0.tar.gz -/avocado-78.0.tar.gz -/avocado-79.0.tar.gz -/avocado-80.0.tar.gz -/avocado-82.0.tar.gz -/avocado-92.0.tar.gz -/avocado-92.1.tar.gz -/avocado-92.1-python312.patch -/avocado-92.3.tar.gz diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..37f0d8e --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Retired: Fails to install: https://pagure.io/releng/issue/12871 diff --git a/python-avocado.spec b/python-avocado.spec deleted file mode 100644 index 4c1803a..0000000 --- a/python-avocado.spec +++ /dev/null @@ -1,699 +0,0 @@ -# Conditional for release vs. snapshot builds. Set to 1 for release build. -%if ! 0%{?rel_build:1} - %global rel_build 1 -%endif - -# Settings used for build from snapshots. -%if 0%{?rel_build} - %global gitref %{version} - %global gittar avocado-%{version}.tar.gz -%else - %if ! 0%{?commit:1} - %global commit 5b21f030001d6eed69c0357cc45b6128c73dc860 - %endif - %if ! 0%{?commit_date:1} - %global commit_date 20240819 - %endif - %global shortcommit %(c=%{commit};echo ${c:0:9}) - %global gitrel .%{commit_date}git%{shortcommit} - %global gitref %{commit} - %global gittar avocado-%{shortcommit}.tar.gz -%endif - -# Selftests are provided but may need to be skipped because many of -# the functional tests are time and resource sensitive and can -# cause race conditions and random build failures. They are -# enabled by default. -%global with_tests 1 - -# resultsdb is not available for RHEL -%if ! 0%{?rhel} -%global with_resultsdb 1 -%else -%global with_resultsdb 0 -%endif - -Name: python-avocado -Version: 92.3 -Release: 6%{?gitrel}%{?dist} -Summary: Framework with tools and libraries for Automated Testing -# Found licenses: -# avocado/core/tapparser.py: MIT -# avocado/utils/external/gdbmi_parser.py: MIT -# avocado/utils/external/spark.py: MIT -# optional_plugins/html/avocado_result_html/templates/bootstrap.min.css: MIT -# optional_plugins/html/avocado_result_html/templates/bootstrap.min.js: MIT -# selftests/.data/jenkins-junit.xsd: MIT -# Other files: GPLv2 and GPLv2+ -License: GPL-2.0-or-later AND GPL-2.0-only AND MIT -URL: https://avocado-framework.github.io/ -Source0: https://github.com/avocado-framework/avocado/archive/%{gitref}/%{gittar} -BuildArch: noarch - -BuildRequires: kmod -BuildRequires: procps-ng -BuildRequires: python3-devel -BuildRequires: python3-docutils -BuildRequires: python3-jinja2 -BuildRequires: python3-lxml -BuildRequires: python3-psutil -BuildRequires: python3-setuptools -%if %{with_resultsdb} -BuildRequires: python3-resultsdb_api -BuildRequires: python3-pycdlib -%endif - -%if 0%{?with_tests} -BuildRequires: genisoimage -BuildRequires: libcdio -BuildRequires: psmisc -%if ! 0%{?rhel} -BuildRequires: perl-Test-Harness -%endif -BuildRequires: glibc-all-langpacks -BuildRequires: python3-netifaces -BuildRequires: python3-yaml -%endif -# with_tests - -%description -Avocado is a set of tools and libraries (what people call -these days a framework) to perform automated testing. - - -%prep -%setup -q -n avocado-%{gitref} -%if 0%{?rhel} -sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to_mux/setup.py -%endif -# drop unnecessary install requirement -sed -e "s/'markupsafe<2.0.0', //" -i optional_plugins/html/setup.py -# loosen jinja2 version requirement -sed -e "s/'jinja2<3.0.0'/'jinja2'/" -i optional_plugins/html/setup.py -# loosen pyyaml version requirement -sed -e "s/'PyYAML>=4.2b2,<6.0.2'/'PyYAML>=4.2b2'/" -i optional_plugins/varianter_yaml_to_mux/setup.py - -%build -%py3_build -pushd optional_plugins/html - %py3_build -popd -%if %{with_resultsdb} -pushd optional_plugins/resultsdb - %py3_build -popd -%endif -pushd optional_plugins/varianter_yaml_to_mux - %py3_build -popd -pushd optional_plugins/golang - %py3_build -popd -pushd optional_plugins/varianter_pict - %py3_build -popd -pushd optional_plugins/varianter_cit - %py3_build -popd -pushd optional_plugins/result_upload - %py3_build -popd -rst2man man/avocado.rst man/avocado.1 - -%install -%py3_install -for exe in \ - avocado \ - avocado-runner \ - avocado-runner-noop \ - avocado-runner-dry-run \ - avocado-runner-exec-test \ - avocado-runner-python-unittest \ - avocado-runner-avocado-instrumented \ - avocado-runner-tap \ - avocado-runner-requirement-asset \ - avocado-runner-requirement-package \ - avocado-runner-sysinfo \ - avocado-software-manager -do - mv %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} - ln -s $exe-%{python3_version} %{buildroot}%{_bindir}/$exe-3 - ln -s $exe-%{python3_version} %{buildroot}%{_bindir}/$exe -done -# configuration is held at /etc/avocado only and part of the -# python-avocado-common package -rm -rf %{buildroot}%{python3_sitelib}/avocado/etc -# ditto for libexec files -rm -rf %{buildroot}%{python3_sitelib}/avocado/libexec -# adjust permissions for file containing shebang line needed for -# spawning tasks in podman containers -chmod -c +x %{buildroot}%{python3_sitelib}/avocado/core/nrunner.py -pushd optional_plugins/html - %py3_install -popd -%if %{with_resultsdb} -pushd optional_plugins/resultsdb - %py3_install -popd -%endif -pushd optional_plugins/varianter_yaml_to_mux - %py3_install -popd -pushd optional_plugins/golang - %py3_install -popd -pushd optional_plugins/varianter_pict - %py3_install -popd -pushd optional_plugins/varianter_cit - %py3_install -popd -pushd optional_plugins/result_upload - %py3_install -popd -# cleanup plugin test cruft -rm -rf %{buildroot}%{python3_sitelib}/tests -mkdir -p %{buildroot}%{_sysconfdir}/avocado -cp -r avocado/etc/avocado/scripts %{buildroot}%{_sysconfdir}/avocado/scripts -cp -r avocado/etc/avocado/sysinfo %{buildroot}%{_sysconfdir}/avocado/sysinfo -mkdir -p %{buildroot}%{_libexecdir}/avocado -cp avocado/libexec/avocado-bash-utils %{buildroot}%{_libexecdir}/avocado/avocado-bash-utils -cp avocado/libexec/avocado_debug %{buildroot}%{_libexecdir}/avocado/avocado_debug -cp avocado/libexec/avocado_error %{buildroot}%{_libexecdir}/avocado/avocado_error -cp avocado/libexec/avocado_info %{buildroot}%{_libexecdir}/avocado/avocado_info -cp avocado/libexec/avocado_warn %{buildroot}%{_libexecdir}/avocado/avocado_warn -mkdir -p %{buildroot}%{_mandir}/man1 -install -m 0644 man/avocado.1 %{buildroot}%{_mandir}/man1/avocado.1 -mkdir -p %{buildroot}%{_pkgdocdir} -install -m 0644 README.rst %{buildroot}%{_pkgdocdir} -install -d -m 0755 %{buildroot}%{_sharedstatedir}/avocado/data -# place examples in documentation directory -install -d -m 0755 %{buildroot}%{_docdir}/avocado -cp -r examples/gdb-prerun-scripts %{buildroot}%{_docdir}/avocado/gdb-prerun-scripts -cp -r examples/plugins %{buildroot}%{_docdir}/avocado/plugins -cp -r examples/tests %{buildroot}%{_docdir}/avocado/tests -cp -r examples/varianter_cit %{buildroot}%{_docdir}/avocado/varianter_cit -cp -r examples/varianter_pict %{buildroot}%{_docdir}/avocado/varianter_pict -cp -r examples/wrappers %{buildroot}%{_docdir}/avocado/wrappers -cp -r examples/yaml_to_mux %{buildroot}%{_docdir}/avocado/yaml_to_mux -find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec chmod -c -x {} ';' - - -%if 0%{?with_tests} -%check - # LANG: to make the results predictable, we pin the language - # that is used during test execution. - # AVOCADO_CHECK_LEVEL: package build environments have the least - # amount of resources we have observed so far. Let's avoid tests that - # require too much resources or are time sensitive - PATH=%{buildroot}%{_bindir}:%{buildroot}%{_libexecdir}/avocado:$PATH \ - PYTHONPATH=%{buildroot}%{python3_sitelib}:. \ - LANG=en_US.UTF-8 \ - AVOCADO_CHECK_LEVEL=0 \ - %{python3} selftests/check.py --job-api --nrunner-interface \ - --unit --jobs --functional --optional-plugins \ - --disable-plugin-checks robot -%endif - - -%package -n python3-avocado -Summary: %{summary} -Requires: python-avocado-common == %{version}-%{release} -Requires: gdb -Requires: gdb-gdbserver -Requires: procps-ng -%if ! 0%{?rhel} -Requires: python3-pycdlib -%endif - -%description -n python3-avocado -Avocado is a set of tools and libraries (what people call -these days a framework) to perform automated testing. - -%files -n python3-avocado -%license LICENSE -%{_pkgdocdir}/README.rst -%{python3_sitelib}/avocado/ -%{python3_sitelib}/avocado_framework-%{version}-py%{python3_version}.egg-info -%{_bindir}/avocado-%{python3_version} -%{_bindir}/avocado-3 -%{_bindir}/avocado -%{_bindir}/avocado-runner-%{python3_version} -%{_bindir}/avocado-runner-3 -%{_bindir}/avocado-runner -%{_bindir}/avocado-runner-noop-%{python3_version} -%{_bindir}/avocado-runner-noop-3 -%{_bindir}/avocado-runner-noop -%{_bindir}/avocado-runner-dry-run-%{python3_version} -%{_bindir}/avocado-runner-dry-run-3 -%{_bindir}/avocado-runner-dry-run -%{_bindir}/avocado-runner-exec-test-%{python3_version} -%{_bindir}/avocado-runner-exec-test-3 -%{_bindir}/avocado-runner-exec-test -%{_bindir}/avocado-runner-python-unittest-%{python3_version} -%{_bindir}/avocado-runner-python-unittest-3 -%{_bindir}/avocado-runner-python-unittest -%{_bindir}/avocado-runner-avocado-instrumented-%{python3_version} -%{_bindir}/avocado-runner-avocado-instrumented-3 -%{_bindir}/avocado-runner-avocado-instrumented -%{_bindir}/avocado-runner-tap-%{python3_version} -%{_bindir}/avocado-runner-tap-3 -%{_bindir}/avocado-runner-tap -%{_bindir}/avocado-runner-requirement-asset-%{python3_version} -%{_bindir}/avocado-runner-requirement-asset-3 -%{_bindir}/avocado-runner-requirement-asset -%{_bindir}/avocado-runner-requirement-package-%{python3_version} -%{_bindir}/avocado-runner-requirement-package-3 -%{_bindir}/avocado-runner-requirement-package -%{_bindir}/avocado-runner-sysinfo-%{python3_version} -%{_bindir}/avocado-runner-sysinfo-3 -%{_bindir}/avocado-runner-sysinfo -%{_bindir}/avocado-software-manager-%{python3_version} -%{_bindir}/avocado-software-manager-3 -%{_bindir}/avocado-software-manager - - -%package -n python-avocado-common -Summary: Avocado common files -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later - -%description -n python-avocado-common -Common files (such as configuration) for the Avocado Testing Framework. - -%files -n python-avocado-common -%license LICENSE -%{_mandir}/man1/avocado.1.gz -%dir %{_docdir}/avocado -%dir %{_sharedstatedir}/avocado -%dir %{_sysconfdir}/avocado -%dir %{_sysconfdir}/avocado/sysinfo -%dir %{_sysconfdir}/avocado/scripts -%dir %{_sysconfdir}/avocado/scripts/job -%dir %{_sysconfdir}/avocado/scripts/job/pre.d -%dir %{_sysconfdir}/avocado/scripts/job/post.d -%config(noreplace) %{_sysconfdir}/avocado/sysinfo/commands -%config(noreplace) %{_sysconfdir}/avocado/sysinfo/files -%config(noreplace) %{_sysconfdir}/avocado/sysinfo/profilers -%{_sysconfdir}/avocado/scripts/job/pre.d/README -%{_sysconfdir}/avocado/scripts/job/post.d/README - - -%package -n python3-avocado-plugins-output-html -Summary: Avocado HTML report plugin -License: GPL-2.0-or-later AND MIT -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-output-html -Adds to avocado the ability to generate an HTML report at every job results -directory. It also gives the user the ability to write a report on an -arbitrary filesystem location. - -%files -n python3-avocado-plugins-output-html -%{python3_sitelib}/avocado_result_html/ -%{python3_sitelib}/avocado_framework_plugin_result_html-%{version}-py%{python3_version}.egg-info - - -%if %{with_resultsdb} -%package -n python3-avocado-plugins-resultsdb -Summary: Avocado plugin to propagate job results to ResultsDB -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-resultsdb -Allows Avocado to send job results directly to a ResultsDB -server. - -%files -n python3-avocado-plugins-resultsdb -%{python3_sitelib}/avocado_resultsdb/ -%{python3_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python3_version}.egg-info -%endif -# with_resultsdb - - -%package -n python3-avocado-plugins-varianter-yaml-to-mux -Summary: Avocado plugin to generate variants out of yaml files -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-varianter-yaml-to-mux -Can be used to produce multiple test variants with test parameters -defined in a yaml file(s). - -%files -n python3-avocado-plugins-varianter-yaml-to-mux -%{python3_sitelib}/avocado_varianter_yaml_to_mux/ -%{python3_sitelib}/avocado_framework_plugin_varianter_yaml_to_mux-%{version}-py%{python3_version}.egg-info - - -%package -n python3-avocado-plugins-golang -Summary: Avocado plugin for execution of golang tests -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} -Requires: golang - -%description -n python3-avocado-plugins-golang -Allows Avocado to list golang tests, and if golang is installed, -also run them. - -%files -n python3-avocado-plugins-golang -%{python3_sitelib}/avocado_golang/ -%{python3_sitelib}/avocado_framework_plugin_golang-%{version}-py%{python3_version}.egg-info -%{_bindir}/avocado-runner-golang - - -%package -n python3-avocado-plugins-varianter-pict -Summary: Varianter with combinatorial capabilities by PICT -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-varianter-pict -This plugin uses a third-party tool to provide variants created by -Pair-Wise algorithms, also known as Combinatorial Independent Testing. - -%files -n python3-avocado-plugins-varianter-pict -%{python3_sitelib}/avocado_varianter_pict/ -%{python3_sitelib}/avocado_framework_plugin_varianter_pict-%{version}-py%{python3_version}.egg-info - - -%package -n python3-avocado-plugins-varianter-cit -Summary: Varianter with Combinatorial Independent Testing capabilities -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-varianter-cit -A varianter plugin that generates variants using Combinatorial -Independent Testing (AKA Pair-Wise) algorithm developed in -collaboration with CVUT Prague. - -%files -n python3-avocado-plugins-varianter-cit -%{python3_sitelib}/avocado_varianter_cit/ -%{python3_sitelib}/avocado_framework_plugin_varianter_cit-%{version}-py%{python3_version}.egg-info - - -%package -n python3-avocado-plugins-result-upload -Summary: Avocado plugin propagate job results to a remote host -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-result-upload -This optional plugin is intended to upload the Avocado Job results to -a dedicated sever. - -%files -n python3-avocado-plugins-result-upload -%{python3_sitelib}/avocado_result_upload/ -%{python3_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python3_version}.egg-info - - -%package -n python-avocado-examples -Summary: Avocado Test Framework Example Tests -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -# documentation does not require main package, but needs to be in lock-step if present -Conflicts: python3-avocado < %{version}-%{release}, python3-avocado > %{version}-%{release} - -%description -n python-avocado-examples -The set of example tests present in the upstream tree of the Avocado framework. -Some of them are used as functional tests of the framework, others serve as -examples of how to write tests on your own. - -%files -n python-avocado-examples -%license LICENSE -%dir %{_docdir}/avocado -%{_docdir}/avocado/gdb-prerun-scripts -%{_docdir}/avocado/plugins -%{_docdir}/avocado/tests -%{_docdir}/avocado/varianter_cit -%{_docdir}/avocado/varianter_pict -%{_docdir}/avocado/wrappers -%{_docdir}/avocado/yaml_to_mux - - -%package -n python-avocado-bash -Summary: Avocado Test Framework Bash Utilities -License: GPL-2.0-or-later AND GPL-2.0-only -Requires: python-avocado-common == %{version}-%{release} - -%description -n python-avocado-bash -A small set of utilities to interact with Avocado from the Bourne -Again Shell code (and possibly other similar shells). - -%files -n python-avocado-bash -%license LICENSE -%dir %{_libexecdir}/avocado -%{_libexecdir}/avocado/avocado-bash-utils -%{_libexecdir}/avocado/avocado_debug -%{_libexecdir}/avocado/avocado_error -%{_libexecdir}/avocado/avocado_info -%{_libexecdir}/avocado/avocado_warn - - -%changelog -* Fri Jul 25 2025 Fedora Release Engineering - 92.3-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Tue Jun 03 2025 Python Maint - 92.3-5 -- Rebuilt for Python 3.14 - -* Mon Jan 20 2025 Miro Hrončok - 92.3-4 -- Loosen the PyYAML version requirement in python3-avocado-plugins-varianter-yaml-to-mux - -* Mon Jan 20 2025 Cleber Rosa - 92.3-3 -- convert remaining licenses to SPDX - -* Sat Jan 18 2025 Fedora Release Engineering - 92.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Mon Aug 19 2024 Cleber Rosa - 92.3-1 -- Updated to 92.3 -- Support building and running under Python 3.13 for F42 -- Removed patch from 92.1 as its present in 92.3 - -* Fri Jul 26 2024 Miroslav Suchý - 92.1-8 -- convert license to SPDX - -* Fri Jul 19 2024 Fedora Release Engineering - 92.1-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Fri Jun 07 2024 Python Maint - 92.1-6 -- Rebuilt for Python 3.13 - -* Mon Jan 29 2024 Fedora Release Engineering - 92.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 26 2024 Fedora Release Engineering - 92.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 92.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jul 21 2023 Fedora Release Engineering - 92.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Mon Jul 17 2023 Cleber Rosa - 92.1-1 -- Updated to 92.1 -- Support building and running under Python 3.12 for F39 - -* Wed Jun 14 2023 Python Maint - 92.0-3 -- Rebuilt for Python 3.12 - -* Fri Jan 20 2023 Fedora Release Engineering - 92.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Tue Aug 9 2022 Cleber Rosa - 92.0-1 -- Use selftests/check.py job instead of more limited selftests/run -- Included avocado-runner-sysinfo, avocado-runner-requirement-package, - avocado-runner-requirement-asset and avocado-runner-dry-run and - avocado-runner-golang executables -- Removed avocado-runner-exec executable -- Removed loader_yaml and glib plugin packages - -* Fri Jul 22 2022 Fedora Release Engineering - 82.0-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Tue Jun 21 2022 Python Maint - 82.0-6 -- Rebuilt for Python 3.11 - -* Fri Jan 21 2022 Fedora Release Engineering - 82.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Wed Jul 28 2021 Merlin Mathesius - 82.0-4 -- Loosen jinja2 version requirement to fix FTBFS in Rawhide - -* Fri Jul 23 2021 Fedora Release Engineering - 82.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Thu Mar 18 2021 Merlin Mathesius - 82.0-2 -- Drop obsolete packages from BuildRequires -- Generate man page directly using 'rst2man' rather than requiring 'make' -- Adjust PATH to make sure self-tests find internal modules -- Spec file cleanup following package review. - -* Mon Sep 14 2020 Cleber Rosa - 82.0-1 -- Sync with upstream release 82.0. -- Removed python libvirt depedency as the vm runner has been removed - upstream -- Dropped configuration files to sync with upstream which made them - optional and doesn't ship them anymore -- Add on extra character to short commit to sync with upstream - -* Sat Jun 6 2020 Cleber Rosa - 80.0-1 -- Sync with upstream release 80.0. -- Dropped use of custom avocado command for tests -- Do not build deprecated runners - -* Tue May 12 2020 Cleber Rosa - 79.0-1 -- Sync with upstream release 79.0. -- Added Python's user base bin dir to the PATH environment variable - while running tests, so that avocado-runner-* scripts can be found -- Moved comment to new lines closing the conditionals, to avoid - errors from rpmlint and rpmbuild - -* Wed Apr 15 2020 Merlin Mathesius - 78.0-1 -- Sync with upstream release 78.0. - -* Tue Mar 17 2020 Merlin Mathesius - 77.0-1 -- Sync with upstream release 77.0. - -* Mon Mar 09 2020 Merlin Mathesius - 76.0-1 -- Sync with upstream release 76.0. - -* Mon Jan 20 2020 Merlin Mathesius - 75.1-1 -- Sync with upstream release 75.1. - -* Mon Dec 23 2019 Merlin Mathesius - 74.0-1 -- Sync with upstream release 74.0. - -* Wed Nov 27 2019 Merlin Mathesius - 73.0-1 -- Sync with upstream release 73.0. -- Adjustments to build for RHEL 8. - -* Wed Oct 02 2019 Merlin Mathesius - 72.0-1 -- Sync with upstream release 72.0. - -* Wed Aug 28 2019 Merlin Mathesius - 71.0-1 -- Sync with upstream release 71.0. - -* Wed Jun 26 2019 Merlin Mathesius - 70.0-1 -- Sync with upstream release 70.0. -- Drop all Python 2 support from SPEC file. - -* Wed May 22 2019 Merlin Mathesius - 69.0-4 -- pyliblzma is Python 2-only and no longer available as of F31. -- Unversioned executables should now be Python 3. - -* Mon May 20 2019 Merlin Mathesius - 69.0-3 -- Drop Python 2 support from F31 and RHEL8 onward. -- Disable components dependent upon Fiber in Fedora 31 and later, - since avocado is currently incompatible with the new Fiber API. - -* Tue Mar 19 2019 Merlin Mathesius - 69.0-2 -- python2-sphinx is no longer available or needed as of F31 - -* Wed Feb 27 2019 Merlin Mathesius - 69.0-1 -- Sync with upstream release 69.0. - -* Fri Feb 22 2019 Merlin Mathesius - 68.0-1 -- Sync with upstream release 68.0. - -* Thu Jan 31 2019 Merlin Mathesius - 67.0-1 -- Sync with upstream release 67.0. -- genisoimage, libcdio, and psmisc added as build deps so iso9660 tests run. -- Replace pystache requirement with jinja2. -- glibc-all-langpacks added as build dep for F30+ so vmimage tests run. -- python2-resultsdb_api package has been removed in F30 so - python2-avocado-plugins-resultsdb was also disabled. - -* Wed Nov 21 2018 Merlin Mathesius - 66.0-1 -- Sync with upstream release 66.0. -- python2-pycdlib package has been removed in F30 as part of - https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal - -* Thu Oct 04 2018 Merlin Mathesius - 65.0-1 -- Sync with upstream release 65.0. - -* Tue Aug 28 2018 Merlin Mathesius - 64.0-1 -- Sync with upstream release 64.0. - -* Thu Jul 26 2018 Merlin Mathesius - 63.0-2 -- Added missing python[2]-enum34 requirement. - -* Mon Jul 23 2018 Merlin Mathesius - 63.0-1 -- Sync with upstream release 63.0. (BZ#1602175) - Include upstream patches needed to build for Rawhide. - -* Wed Jun 13 2018 Merlin Mathesius - 62.0-1 -- Sync with upstream release 62.0. (BZ#1590572) -- Correct libvirt dependency for EPEL7/RHEL7 - -* Thu May 17 2018 Merlin Mathesius - 61.0-1 -- Sync with upstream release 61.0. -- Packaging updates for Python 3. -- Reorganize SPEC file. - -* Mon Apr 9 2018 Cleber Rosa - 52.1-2 -- Added Fedora CI tests - -* Tue Apr 03 2018 Merlin Mathesius - 52.1-1 -- Sync with upstream release 52.1 (LTS series). -- Correct deprecated use of unversioned python. - -* Mon Mar 26 2018 Iryna Shcherbina - 52.0-5 -- Update Python 2 dependency declarations to new packaging standards - (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) - -* Fri Feb 09 2018 Fedora Release Engineering - 52.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Wed Aug 09 2017 Merlin Mathesius - 52.0-3 -- Fix FTBFS error by disabling selfcheck producing false failures -- Update SPEC to use pkgname instead of srcname macro where appropriate - -* Thu Jul 27 2017 Fedora Release Engineering - 52.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Thu Jun 29 2017 Merlin Mathesius - 52.0-1 -- Sync with upstream release 52.0. (BZ#1465409) - -* Wed Jun 14 2017 Merlin Mathesius - 51.0-1 -- Sync with upstream release 51.0. (BZ#1460837) -- Disable selftests when libvirt may not be available. - -* Wed May 17 2017 Merlin Mathesius - 50.0-1 -- Sync with upstream release 50.0. (BZ#1431413) -- Be explicit about selftest level run on check. - -* Tue Apr 25 2017 Merlin Mathesius - 49.0-1 -- Sync with upstream release 49.0. (BZ#1431413) - -* Tue Apr 18 2017 Merlin Mathesius - 48.0-1 -- Sync with upstream release 48.0. (BZ#1431413) -- Allow rel_build macro to be defined outside of the SPEC file. - -* Mon Mar 27 2017 Merlin Mathesius - 47.0-1 -- Sync with upstream release 47.0. -- Enable self-tests during build. -- Add example test to be run by Taskotron. - -* Mon Feb 27 2017 Merlin Mathesius - 46.0-2 -- Incorporate upstream SPEC file changes to split plugins into subpackages. -- Remove obsolete CC-BY-SA license, which went away with the halflings font. - -* Tue Feb 14 2017 Merlin Mathesius - 46.0-1 -- Sync with upstream release 46.0. -- Remove halflings license since font was removed from upstream. -- SPEC updates to easily switch between release and snapshot builds. - -* Sat Feb 11 2017 Fedora Release Engineering - 43.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Tue Jan 10 2017 Merlin Mathesius - 43.0-7 -- SPEC updates to build and install for EPEL. - -* Mon Nov 21 2016 Merlin Mathesius - 43.0-6 -- Initial packaging for Fedora. diff --git a/sources b/sources deleted file mode 100644 index 4a738a2..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -SHA512 (avocado-92.3.tar.gz) = 97a0c113bc826537a02ebf6efcd7cf49b505a93e5fd9686c3a4c7e70902f2d367f78eb2fb23ddf9253b97f45e27b2e328fd6bd1c420ecbeb59e25e991b29c262 diff --git a/tests/gdbtest.py b/tests/gdbtest.py deleted file mode 100755 index c0cdc55..0000000 --- a/tests/gdbtest.py +++ /dev/null @@ -1,347 +0,0 @@ -import os - -from avocado import Test -from avocado.utils import gdb, genio, process - - -class GdbTest(Test): - - """ - Execute the gdb test - - :avocado: tags=requires_c_compiler - """ - - VALID_CMDS = ["-list-target-features", - "-break-info", - "-break-list", - "-thread-info", - "-stack-info-frame", - "-stack-info-depth"] - - INVALID_CMDS = ["-foobar", - "-magic8ball", - "-find-me-the-bug", - "-auto-debug-it"] - - def setUp(self): - self.return99_binary_path = os.path.join(self.teststmpdir, 'return99') - if not os.path.exists(self.return99_binary_path): - return99_source_path = self.get_data('return99.c') - if return99_source_path is None: - self.cancel('Test is missing data file "return99.c"') - process.system(f'gcc -O0 -g {return99_source_path} -o {self.return99_binary_path}') - - self.segfault_binary_path = os.path.join(self.teststmpdir, 'segfault') - if not os.path.exists(self.segfault_binary_path): - segfault_source_path = self.get_data('segfault.c') - if segfault_source_path is None: - self.cancel('Test is missing data file "segfault.c"') - process.system(f'gcc -O0 -g {segfault_source_path} -o {self.segfault_binary_path}') - - @staticmethod - def is_process_alive(process): # pylint: disable=W0621 - """ - Checks if a process is still alive - - :param process: a :class:`subprocess.POpen` instance - :type process: :class:`subprocess.POpen` - :returns: True or False - :rtype: bool - """ - return process.poll() is None - - def test_start_exit(self): - """ - Tests execution of multiple GDB instances without any blocking or race - """ - self.log.info("Testing execution of multiple GDB instances") - process_count = 10 - gdb_instances = [] - for i in range(0, process_count): - gdb_instances.append(gdb.GDB()) - - for i in range(0, process_count): - self.assertEqual(gdb_instances[i].exit(), 0) - - def test_existing_commands_raw(self): - """ - Tests the GDB response to commands that exist and to those that do not - """ - g = gdb.GDB() - self.log.info("Testing existing (valid) GDB commands using raw commands") - for cmd in self.VALID_CMDS: - info_cmd = f"-info-gdb-mi-command {cmd[1:]}" - r = g.cmd(info_cmd) - self.assertEqual(r.result.result.command.exists, 'true') - - self.log.info("Testing non-existing (invalid) GDB commands using raw " - "commands") - for cmd in self.INVALID_CMDS: - info_cmd = f"-info-gdb-mi-command {cmd[1:]}" - r = g.cmd(info_cmd) - self.assertEqual(r.result.result.command.exists, 'false') - - def test_existing_commands(self): - g = gdb.GDB() - - self.log.info("Testing existing (valid) GDB commands using utility " - "methods") - for cmd in self.VALID_CMDS: - self.assertTrue(g.cmd_exists(cmd)) - g.cmd(cmd) - - self.log.info("Testing non-existing (invalid) GDB commands using " - "utility methods") - for cmd in self.INVALID_CMDS: - self.assertFalse(g.cmd_exists(cmd)) - - def test_load_set_breakpoint_run_exit_raw(self): - """ - Test a common GDB cycle using raw commands: load, set break, run, exit - """ - self.log.info("Testing that GDB loads a file and sets a breakpoint") - g = gdb.GDB() - - file_cmd = f"-file-exec-and-symbols {self.return99_binary_path}" - r = g.cmd(file_cmd) - self.assertEqual(r.result.class_, 'done') - - break_cmd = "-break-insert 5" - r = g.cmd(break_cmd) - self.assertEqual(r.result.class_, 'done') - self.assertEqual(r.result.result.bkpt.number, '1') - self.assertEqual(r.result.result.bkpt.enabled, 'y') - - break_del_cmd = "-break-delete 1" - r = g.cmd(break_del_cmd) - self.assertEqual(r.result.class_, 'done') - - run_cmd = "-exec-run" - r = g.cmd(run_cmd) - self.assertEqual(r.result.class_, 'running') - - g.cmd("-gdb-exit") - self.assertEqual(g.process.wait(), 0) - - def test_load_set_breakpoint_run_exit(self): - """ - Test a common GDB cycle: load, set break, delete break, run, exit - """ - self.log.info("Testing a common GDB cycle") - g = gdb.GDB() - g.set_file(self.return99_binary_path) - g.set_break("5") - g.del_break(1) - g.run() - g.exit() - - def test_generate_core(self): - """ - Load a file that will cause a segfault and produce a core dump - """ - self.log.info("Testing that a core dump will be generated") - - g = gdb.GDB() - file_cmd = f"-file-exec-and-symbols {self.segfault_binary_path}" - r = g.cmd(file_cmd) - self.assertEqual(r.result.class_, 'done') - - run_cmd = "-exec-run" - r = g.cmd(run_cmd) - self.assertEqual(r.result.class_, 'running') - - other_messages = g.read_until_break() - core_path = None - for msg in other_messages: - parsed_msg = gdb.parse_mi(msg.decode()) - if (hasattr(parsed_msg, 'class_') and - (parsed_msg.class_ == 'stopped') and - (parsed_msg.result.signal_name == 'SIGSEGV')): - core_path = f"{self.segfault_binary_path}.core" - gcore_cmd = f'gcore {core_path}' - gcore_cmd = gdb.encode_mi_cli(gcore_cmd) - r = g.cmd(gcore_cmd) - self.assertEqual(r.result.class_, 'done') - - self.assertTrue(os.path.exists(core_path)) - g.exit() - - def test_set_multiple_break(self): - """ - Tests that multiple breakpoints do not interfere with each other - """ - self.log.info("Testing setting multiple breakpoints") - g = gdb.GDB() - g.set_file(self.return99_binary_path) - g.set_break('empty') - g.set_break('7') - g.exit() - - def test_disconnect_raw(self): - """ - Connect/disconnect repeatedly from a remote debugger using raw commands - """ - self.log.info("Testing connecting and disconnecting repeatedly using " - "raw commands") - s = gdb.GDBServer() - g = gdb.GDB() - - # Do 100 cycle of target (kind of connects) and disconnects - for _ in range(0, 100): - cmd = f'-target-select extended-remote :{s.port}' - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'connected') - r = g.cmd('-target-disconnect') - self.assertEqual(r.result.class_, 'done') - - # manual server shutdown - cmd = f'-target-select extended-remote :{s.port}' - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'connected') - r = g.cli_cmd('monitor exit') - self.assertEqual(r.result.class_, 'done') - - g.exit() - s.exit() - - def test_disconnect(self): - """ - Connect/disconnect repeatedly from a remote debugger using utilities - """ - self.log.info("Testing connecting and disconnecting repeatedly") - s = gdb.GDBServer() - g = gdb.GDB() - - for _ in range(0, 100): - r = g.connect(s.port) - self.assertEqual(r.result.class_, 'connected') - r = g.disconnect() - self.assertEqual(r.result.class_, 'done') - - g.exit() - s.exit() - - def test_remote_exec(self): - """ - Tests execution on a remote target - """ - self.log.info("Testing execution on a remote target") - hit_breakpoint = False - - s = gdb.GDBServer() - g = gdb.GDB() - - cmd = f'-file-exec-and-symbols {self.return99_binary_path}' - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'done') - - cmd = f'set remote exec-file {self.return99_binary_path}' - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'done') - - cmd = f"-break-insert {'main'}" - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'done') - - r = g.cmd('-exec-run') - - other_messages = g.read_until_break() - for msg in other_messages: - parsed_msg = gdb.parse_mi(msg.decode()) - if (hasattr(parsed_msg, 'class_') and - parsed_msg.class_ == 'stopped' and - parsed_msg.result.reason == 'breakpoint-hit'): - hit_breakpoint = True - - self.assertTrue(hit_breakpoint) - g.exit() - s.exit() - - def test_stream_messages(self): - """ - Tests if the expected response appears in the result stream messages - """ - self.log.info("Testing that messages appears in the result stream") - g = gdb.GDB() - r = g.cmd("-gdb-version") - self.assertIn("GNU GPL version", r.get_stream_messages_text()) - - def test_connect_multiple_clients(self): - """ - Tests two or more connections to the same server raise an exception - """ - self.log.info("Testing that multiple clients cannot connect at once") - s = gdb.GDBServer() - c1 = gdb.GDB() - c1.connect(s.port) - c2 = gdb.GDB() - with self.assertRaises(gdb.UnexpectedResponseError): - c2.connect(s.port) - s.exit() - - def test_server_exit(self): - """ - Tests that the server is shutdown by using a monitor exit command - """ - self.log.info("Testing that a single server exits cleanly") - s = gdb.GDBServer() - s.exit() - self.assertFalse(self.is_process_alive(s.process)) - - def test_multiple_servers(self): - """ - Tests multiple server instances without any blocking or race condition - """ - self.log.info("Testing execution of multiple GDB server instances") - process_count = 10 - server_instances = [] - for i in range(0, process_count): - s = gdb.GDBServer() - c = gdb.GDB() - c.connect(s.port) - c.cmd('show-version') - c.disconnect() - server_instances.append(s) - - for i in range(0, process_count): - self.assertTrue(self.is_process_alive(server_instances[i].process)) - server_instances[i].exit() - self.assertFalse(self.is_process_alive(server_instances[i].process)) - - def test_server_stderr(self): - self.log.info('Testing server stderr collection') - s = gdb.GDBServer() - s.exit() - self.assertTrue(os.path.exists(s.stderr_path)) - - stderr_lines = genio.read_all_lines(s.stderr_path) - listening_line = f"Listening on port {s.port}" - self.assertIn(listening_line, stderr_lines) - - def test_server_stdout(self): - self.log.info('Testing server stdout/stderr collection') - s = gdb.GDBServer() - c = gdb.GDB() - c.connect(s.port) - c.set_file(self.return99_binary_path) - c.run() - s.exit() - - self.assertTrue(os.path.exists(s.stdout_path)) - self.assertTrue(os.path.exists(s.stderr_path)) - - stdout_lines = genio.read_all_lines(s.stdout_path) - self.assertIn("return 99", stdout_lines) - - @staticmethod - def test_remote(): - """ - Tests GDBRemote interaction with a GDBServer - """ - s = gdb.GDBServer() - r = gdb.GDBRemote('127.0.0.1', s.port) - r.connect() - r.cmd(b"qSupported") - r.cmd(b"qfThreadInfo") - s.exit() diff --git a/tests/gdbtest.py.data/return99.c b/tests/gdbtest.py.data/return99.c deleted file mode 100644 index bf14935..0000000 --- a/tests/gdbtest.py.data/return99.c +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include - -void empty() -{ -} - -void write_stdout() -{ - fprintf(stdout, "testing output to stdout\n"); -} - -void write_stderr() -{ - fprintf(stderr, "testing output to stderr\n"); -} - -int forkme() -{ - int pid; - - pid = fork(); - if (pid != 0) - pid = fork(); - if (pid != 0) - pid = fork(); - - return pid; -} - -int main(int argc, char *argv[]) -{ - int exit_status = 99; - - if (argc > 1) - exit_status = atoi(argv[1]); - - empty(); - write_stdout(); - write_stderr(); - - if (forkme()) { - fprintf(stdout, "return %i\n", exit_status); - } - - return exit_status; -} diff --git a/tests/gdbtest.py.data/segfault.c b/tests/gdbtest.py.data/segfault.c deleted file mode 100644 index a685f86..0000000 --- a/tests/gdbtest.py.data/segfault.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -int main() -{ - int *p = NULL; - *p = 0xdead; - - return 0; -} diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 7ff61ce..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,25 +0,0 @@ -- hosts: localhost - roles: - - role: standard-test-avocado - tests: - - gdbtest.py:GdbTest.test_start_exit - - gdbtest.py:GdbTest.test_existing_commands_raw - - gdbtest.py:GdbTest.test_existing_commands - - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit_raw - - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit - - gdbtest.py:GdbTest.test_generate_core - - gdbtest.py:GdbTest.test_set_multiple_break - - gdbtest.py:GdbTest.test_disconnect_raw - - gdbtest.py:GdbTest.test_disconnect - - gdbtest.py:GdbTest.test_remote_exec - - gdbtest.py:GdbTest.test_stream_messages - - gdbtest.py:GdbTest.test_connect_multiple_clients - - gdbtest.py:GdbTest.test_server_exit - - gdbtest.py:GdbTest.test_multiple_servers - - gdbtest.py:GdbTest.test_server_stderr - - gdbtest.py:GdbTest.test_server_stdout - - gdbtest.py:GdbTest.test_remote - required_packages: - - gcc - - gdb - - gdb-gdbserver From 947ceab00c742a35169285d6466f46f7c2b2b4c2 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 28 Aug 2025 06:18:04 +0000 Subject: [PATCH 48/51] Unretirement request: pagure.io/releng/issue/12907 Revert "Retired: Fails to install: https://pagure.io/releng/issue/12871" This reverts commit a12e378e73f22824d667a46028563c98bc0cc50b. Signed-off-by: Fedora Release Engineering --- .gitignore | 34 ++ dead.package | 1 - python-avocado.spec | 699 +++++++++++++++++++++++++++++++ sources | 1 + tests/gdbtest.py | 347 +++++++++++++++ tests/gdbtest.py.data/return99.c | 47 +++ tests/gdbtest.py.data/segfault.c | 9 + tests/tests.yml | 25 ++ 8 files changed, 1162 insertions(+), 1 deletion(-) create mode 100644 .gitignore delete mode 100644 dead.package create mode 100644 python-avocado.spec create mode 100644 sources create mode 100755 tests/gdbtest.py create mode 100644 tests/gdbtest.py.data/return99.c create mode 100644 tests/gdbtest.py.data/segfault.c create mode 100644 tests/tests.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bd8b053 --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +/avocado-43.0.tar.gz +/avocado-46.0.tar.gz +/avocado-47.0.tar.gz +/avocado-48.0.tar.gz +/avocado-49.0.tar.gz +/avocado-50.0.tar.gz +/avocado-51.0.tar.gz +/avocado-52.0.tar.gz +/avocado-52.1.tar.gz +/avocado-61.0.tar.gz +/avocado-62.0.tar.gz +/avocado-63.0.tar.gz +/avocado-64.0.tar.gz +/avocado-65.0.tar.gz +/avocado-66.0.tar.gz +/avocado-67.0.tar.gz +/avocado-68.0.tar.gz +/avocado-69.0.tar.gz +/avocado-70.0.tar.gz +/avocado-71.0.tar.gz +/avocado-72.0.tar.gz +/avocado-73.0.tar.gz +/avocado-74.0.tar.gz +/avocado-75.1.tar.gz +/avocado-76.0.tar.gz +/avocado-77.0.tar.gz +/avocado-78.0.tar.gz +/avocado-79.0.tar.gz +/avocado-80.0.tar.gz +/avocado-82.0.tar.gz +/avocado-92.0.tar.gz +/avocado-92.1.tar.gz +/avocado-92.1-python312.patch +/avocado-92.3.tar.gz diff --git a/dead.package b/dead.package deleted file mode 100644 index 37f0d8e..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Retired: Fails to install: https://pagure.io/releng/issue/12871 diff --git a/python-avocado.spec b/python-avocado.spec new file mode 100644 index 0000000..4c1803a --- /dev/null +++ b/python-avocado.spec @@ -0,0 +1,699 @@ +# Conditional for release vs. snapshot builds. Set to 1 for release build. +%if ! 0%{?rel_build:1} + %global rel_build 1 +%endif + +# Settings used for build from snapshots. +%if 0%{?rel_build} + %global gitref %{version} + %global gittar avocado-%{version}.tar.gz +%else + %if ! 0%{?commit:1} + %global commit 5b21f030001d6eed69c0357cc45b6128c73dc860 + %endif + %if ! 0%{?commit_date:1} + %global commit_date 20240819 + %endif + %global shortcommit %(c=%{commit};echo ${c:0:9}) + %global gitrel .%{commit_date}git%{shortcommit} + %global gitref %{commit} + %global gittar avocado-%{shortcommit}.tar.gz +%endif + +# Selftests are provided but may need to be skipped because many of +# the functional tests are time and resource sensitive and can +# cause race conditions and random build failures. They are +# enabled by default. +%global with_tests 1 + +# resultsdb is not available for RHEL +%if ! 0%{?rhel} +%global with_resultsdb 1 +%else +%global with_resultsdb 0 +%endif + +Name: python-avocado +Version: 92.3 +Release: 6%{?gitrel}%{?dist} +Summary: Framework with tools and libraries for Automated Testing +# Found licenses: +# avocado/core/tapparser.py: MIT +# avocado/utils/external/gdbmi_parser.py: MIT +# avocado/utils/external/spark.py: MIT +# optional_plugins/html/avocado_result_html/templates/bootstrap.min.css: MIT +# optional_plugins/html/avocado_result_html/templates/bootstrap.min.js: MIT +# selftests/.data/jenkins-junit.xsd: MIT +# Other files: GPLv2 and GPLv2+ +License: GPL-2.0-or-later AND GPL-2.0-only AND MIT +URL: https://avocado-framework.github.io/ +Source0: https://github.com/avocado-framework/avocado/archive/%{gitref}/%{gittar} +BuildArch: noarch + +BuildRequires: kmod +BuildRequires: procps-ng +BuildRequires: python3-devel +BuildRequires: python3-docutils +BuildRequires: python3-jinja2 +BuildRequires: python3-lxml +BuildRequires: python3-psutil +BuildRequires: python3-setuptools +%if %{with_resultsdb} +BuildRequires: python3-resultsdb_api +BuildRequires: python3-pycdlib +%endif + +%if 0%{?with_tests} +BuildRequires: genisoimage +BuildRequires: libcdio +BuildRequires: psmisc +%if ! 0%{?rhel} +BuildRequires: perl-Test-Harness +%endif +BuildRequires: glibc-all-langpacks +BuildRequires: python3-netifaces +BuildRequires: python3-yaml +%endif +# with_tests + +%description +Avocado is a set of tools and libraries (what people call +these days a framework) to perform automated testing. + + +%prep +%setup -q -n avocado-%{gitref} +%if 0%{?rhel} +sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to_mux/setup.py +%endif +# drop unnecessary install requirement +sed -e "s/'markupsafe<2.0.0', //" -i optional_plugins/html/setup.py +# loosen jinja2 version requirement +sed -e "s/'jinja2<3.0.0'/'jinja2'/" -i optional_plugins/html/setup.py +# loosen pyyaml version requirement +sed -e "s/'PyYAML>=4.2b2,<6.0.2'/'PyYAML>=4.2b2'/" -i optional_plugins/varianter_yaml_to_mux/setup.py + +%build +%py3_build +pushd optional_plugins/html + %py3_build +popd +%if %{with_resultsdb} +pushd optional_plugins/resultsdb + %py3_build +popd +%endif +pushd optional_plugins/varianter_yaml_to_mux + %py3_build +popd +pushd optional_plugins/golang + %py3_build +popd +pushd optional_plugins/varianter_pict + %py3_build +popd +pushd optional_plugins/varianter_cit + %py3_build +popd +pushd optional_plugins/result_upload + %py3_build +popd +rst2man man/avocado.rst man/avocado.1 + +%install +%py3_install +for exe in \ + avocado \ + avocado-runner \ + avocado-runner-noop \ + avocado-runner-dry-run \ + avocado-runner-exec-test \ + avocado-runner-python-unittest \ + avocado-runner-avocado-instrumented \ + avocado-runner-tap \ + avocado-runner-requirement-asset \ + avocado-runner-requirement-package \ + avocado-runner-sysinfo \ + avocado-software-manager +do + mv %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} + ln -s $exe-%{python3_version} %{buildroot}%{_bindir}/$exe-3 + ln -s $exe-%{python3_version} %{buildroot}%{_bindir}/$exe +done +# configuration is held at /etc/avocado only and part of the +# python-avocado-common package +rm -rf %{buildroot}%{python3_sitelib}/avocado/etc +# ditto for libexec files +rm -rf %{buildroot}%{python3_sitelib}/avocado/libexec +# adjust permissions for file containing shebang line needed for +# spawning tasks in podman containers +chmod -c +x %{buildroot}%{python3_sitelib}/avocado/core/nrunner.py +pushd optional_plugins/html + %py3_install +popd +%if %{with_resultsdb} +pushd optional_plugins/resultsdb + %py3_install +popd +%endif +pushd optional_plugins/varianter_yaml_to_mux + %py3_install +popd +pushd optional_plugins/golang + %py3_install +popd +pushd optional_plugins/varianter_pict + %py3_install +popd +pushd optional_plugins/varianter_cit + %py3_install +popd +pushd optional_plugins/result_upload + %py3_install +popd +# cleanup plugin test cruft +rm -rf %{buildroot}%{python3_sitelib}/tests +mkdir -p %{buildroot}%{_sysconfdir}/avocado +cp -r avocado/etc/avocado/scripts %{buildroot}%{_sysconfdir}/avocado/scripts +cp -r avocado/etc/avocado/sysinfo %{buildroot}%{_sysconfdir}/avocado/sysinfo +mkdir -p %{buildroot}%{_libexecdir}/avocado +cp avocado/libexec/avocado-bash-utils %{buildroot}%{_libexecdir}/avocado/avocado-bash-utils +cp avocado/libexec/avocado_debug %{buildroot}%{_libexecdir}/avocado/avocado_debug +cp avocado/libexec/avocado_error %{buildroot}%{_libexecdir}/avocado/avocado_error +cp avocado/libexec/avocado_info %{buildroot}%{_libexecdir}/avocado/avocado_info +cp avocado/libexec/avocado_warn %{buildroot}%{_libexecdir}/avocado/avocado_warn +mkdir -p %{buildroot}%{_mandir}/man1 +install -m 0644 man/avocado.1 %{buildroot}%{_mandir}/man1/avocado.1 +mkdir -p %{buildroot}%{_pkgdocdir} +install -m 0644 README.rst %{buildroot}%{_pkgdocdir} +install -d -m 0755 %{buildroot}%{_sharedstatedir}/avocado/data +# place examples in documentation directory +install -d -m 0755 %{buildroot}%{_docdir}/avocado +cp -r examples/gdb-prerun-scripts %{buildroot}%{_docdir}/avocado/gdb-prerun-scripts +cp -r examples/plugins %{buildroot}%{_docdir}/avocado/plugins +cp -r examples/tests %{buildroot}%{_docdir}/avocado/tests +cp -r examples/varianter_cit %{buildroot}%{_docdir}/avocado/varianter_cit +cp -r examples/varianter_pict %{buildroot}%{_docdir}/avocado/varianter_pict +cp -r examples/wrappers %{buildroot}%{_docdir}/avocado/wrappers +cp -r examples/yaml_to_mux %{buildroot}%{_docdir}/avocado/yaml_to_mux +find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec chmod -c -x {} ';' + + +%if 0%{?with_tests} +%check + # LANG: to make the results predictable, we pin the language + # that is used during test execution. + # AVOCADO_CHECK_LEVEL: package build environments have the least + # amount of resources we have observed so far. Let's avoid tests that + # require too much resources or are time sensitive + PATH=%{buildroot}%{_bindir}:%{buildroot}%{_libexecdir}/avocado:$PATH \ + PYTHONPATH=%{buildroot}%{python3_sitelib}:. \ + LANG=en_US.UTF-8 \ + AVOCADO_CHECK_LEVEL=0 \ + %{python3} selftests/check.py --job-api --nrunner-interface \ + --unit --jobs --functional --optional-plugins \ + --disable-plugin-checks robot +%endif + + +%package -n python3-avocado +Summary: %{summary} +Requires: python-avocado-common == %{version}-%{release} +Requires: gdb +Requires: gdb-gdbserver +Requires: procps-ng +%if ! 0%{?rhel} +Requires: python3-pycdlib +%endif + +%description -n python3-avocado +Avocado is a set of tools and libraries (what people call +these days a framework) to perform automated testing. + +%files -n python3-avocado +%license LICENSE +%{_pkgdocdir}/README.rst +%{python3_sitelib}/avocado/ +%{python3_sitelib}/avocado_framework-%{version}-py%{python3_version}.egg-info +%{_bindir}/avocado-%{python3_version} +%{_bindir}/avocado-3 +%{_bindir}/avocado +%{_bindir}/avocado-runner-%{python3_version} +%{_bindir}/avocado-runner-3 +%{_bindir}/avocado-runner +%{_bindir}/avocado-runner-noop-%{python3_version} +%{_bindir}/avocado-runner-noop-3 +%{_bindir}/avocado-runner-noop +%{_bindir}/avocado-runner-dry-run-%{python3_version} +%{_bindir}/avocado-runner-dry-run-3 +%{_bindir}/avocado-runner-dry-run +%{_bindir}/avocado-runner-exec-test-%{python3_version} +%{_bindir}/avocado-runner-exec-test-3 +%{_bindir}/avocado-runner-exec-test +%{_bindir}/avocado-runner-python-unittest-%{python3_version} +%{_bindir}/avocado-runner-python-unittest-3 +%{_bindir}/avocado-runner-python-unittest +%{_bindir}/avocado-runner-avocado-instrumented-%{python3_version} +%{_bindir}/avocado-runner-avocado-instrumented-3 +%{_bindir}/avocado-runner-avocado-instrumented +%{_bindir}/avocado-runner-tap-%{python3_version} +%{_bindir}/avocado-runner-tap-3 +%{_bindir}/avocado-runner-tap +%{_bindir}/avocado-runner-requirement-asset-%{python3_version} +%{_bindir}/avocado-runner-requirement-asset-3 +%{_bindir}/avocado-runner-requirement-asset +%{_bindir}/avocado-runner-requirement-package-%{python3_version} +%{_bindir}/avocado-runner-requirement-package-3 +%{_bindir}/avocado-runner-requirement-package +%{_bindir}/avocado-runner-sysinfo-%{python3_version} +%{_bindir}/avocado-runner-sysinfo-3 +%{_bindir}/avocado-runner-sysinfo +%{_bindir}/avocado-software-manager-%{python3_version} +%{_bindir}/avocado-software-manager-3 +%{_bindir}/avocado-software-manager + + +%package -n python-avocado-common +Summary: Avocado common files +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later + +%description -n python-avocado-common +Common files (such as configuration) for the Avocado Testing Framework. + +%files -n python-avocado-common +%license LICENSE +%{_mandir}/man1/avocado.1.gz +%dir %{_docdir}/avocado +%dir %{_sharedstatedir}/avocado +%dir %{_sysconfdir}/avocado +%dir %{_sysconfdir}/avocado/sysinfo +%dir %{_sysconfdir}/avocado/scripts +%dir %{_sysconfdir}/avocado/scripts/job +%dir %{_sysconfdir}/avocado/scripts/job/pre.d +%dir %{_sysconfdir}/avocado/scripts/job/post.d +%config(noreplace) %{_sysconfdir}/avocado/sysinfo/commands +%config(noreplace) %{_sysconfdir}/avocado/sysinfo/files +%config(noreplace) %{_sysconfdir}/avocado/sysinfo/profilers +%{_sysconfdir}/avocado/scripts/job/pre.d/README +%{_sysconfdir}/avocado/scripts/job/post.d/README + + +%package -n python3-avocado-plugins-output-html +Summary: Avocado HTML report plugin +License: GPL-2.0-or-later AND MIT +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-output-html +Adds to avocado the ability to generate an HTML report at every job results +directory. It also gives the user the ability to write a report on an +arbitrary filesystem location. + +%files -n python3-avocado-plugins-output-html +%{python3_sitelib}/avocado_result_html/ +%{python3_sitelib}/avocado_framework_plugin_result_html-%{version}-py%{python3_version}.egg-info + + +%if %{with_resultsdb} +%package -n python3-avocado-plugins-resultsdb +Summary: Avocado plugin to propagate job results to ResultsDB +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-resultsdb +Allows Avocado to send job results directly to a ResultsDB +server. + +%files -n python3-avocado-plugins-resultsdb +%{python3_sitelib}/avocado_resultsdb/ +%{python3_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python3_version}.egg-info +%endif +# with_resultsdb + + +%package -n python3-avocado-plugins-varianter-yaml-to-mux +Summary: Avocado plugin to generate variants out of yaml files +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-varianter-yaml-to-mux +Can be used to produce multiple test variants with test parameters +defined in a yaml file(s). + +%files -n python3-avocado-plugins-varianter-yaml-to-mux +%{python3_sitelib}/avocado_varianter_yaml_to_mux/ +%{python3_sitelib}/avocado_framework_plugin_varianter_yaml_to_mux-%{version}-py%{python3_version}.egg-info + + +%package -n python3-avocado-plugins-golang +Summary: Avocado plugin for execution of golang tests +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} +Requires: golang + +%description -n python3-avocado-plugins-golang +Allows Avocado to list golang tests, and if golang is installed, +also run them. + +%files -n python3-avocado-plugins-golang +%{python3_sitelib}/avocado_golang/ +%{python3_sitelib}/avocado_framework_plugin_golang-%{version}-py%{python3_version}.egg-info +%{_bindir}/avocado-runner-golang + + +%package -n python3-avocado-plugins-varianter-pict +Summary: Varianter with combinatorial capabilities by PICT +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-varianter-pict +This plugin uses a third-party tool to provide variants created by +Pair-Wise algorithms, also known as Combinatorial Independent Testing. + +%files -n python3-avocado-plugins-varianter-pict +%{python3_sitelib}/avocado_varianter_pict/ +%{python3_sitelib}/avocado_framework_plugin_varianter_pict-%{version}-py%{python3_version}.egg-info + + +%package -n python3-avocado-plugins-varianter-cit +Summary: Varianter with Combinatorial Independent Testing capabilities +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-varianter-cit +A varianter plugin that generates variants using Combinatorial +Independent Testing (AKA Pair-Wise) algorithm developed in +collaboration with CVUT Prague. + +%files -n python3-avocado-plugins-varianter-cit +%{python3_sitelib}/avocado_varianter_cit/ +%{python3_sitelib}/avocado_framework_plugin_varianter_cit-%{version}-py%{python3_version}.egg-info + + +%package -n python3-avocado-plugins-result-upload +Summary: Avocado plugin propagate job results to a remote host +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-result-upload +This optional plugin is intended to upload the Avocado Job results to +a dedicated sever. + +%files -n python3-avocado-plugins-result-upload +%{python3_sitelib}/avocado_result_upload/ +%{python3_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python3_version}.egg-info + + +%package -n python-avocado-examples +Summary: Avocado Test Framework Example Tests +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +# documentation does not require main package, but needs to be in lock-step if present +Conflicts: python3-avocado < %{version}-%{release}, python3-avocado > %{version}-%{release} + +%description -n python-avocado-examples +The set of example tests present in the upstream tree of the Avocado framework. +Some of them are used as functional tests of the framework, others serve as +examples of how to write tests on your own. + +%files -n python-avocado-examples +%license LICENSE +%dir %{_docdir}/avocado +%{_docdir}/avocado/gdb-prerun-scripts +%{_docdir}/avocado/plugins +%{_docdir}/avocado/tests +%{_docdir}/avocado/varianter_cit +%{_docdir}/avocado/varianter_pict +%{_docdir}/avocado/wrappers +%{_docdir}/avocado/yaml_to_mux + + +%package -n python-avocado-bash +Summary: Avocado Test Framework Bash Utilities +License: GPL-2.0-or-later AND GPL-2.0-only +Requires: python-avocado-common == %{version}-%{release} + +%description -n python-avocado-bash +A small set of utilities to interact with Avocado from the Bourne +Again Shell code (and possibly other similar shells). + +%files -n python-avocado-bash +%license LICENSE +%dir %{_libexecdir}/avocado +%{_libexecdir}/avocado/avocado-bash-utils +%{_libexecdir}/avocado/avocado_debug +%{_libexecdir}/avocado/avocado_error +%{_libexecdir}/avocado/avocado_info +%{_libexecdir}/avocado/avocado_warn + + +%changelog +* Fri Jul 25 2025 Fedora Release Engineering - 92.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Jun 03 2025 Python Maint - 92.3-5 +- Rebuilt for Python 3.14 + +* Mon Jan 20 2025 Miro Hrončok - 92.3-4 +- Loosen the PyYAML version requirement in python3-avocado-plugins-varianter-yaml-to-mux + +* Mon Jan 20 2025 Cleber Rosa - 92.3-3 +- convert remaining licenses to SPDX + +* Sat Jan 18 2025 Fedora Release Engineering - 92.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Mon Aug 19 2024 Cleber Rosa - 92.3-1 +- Updated to 92.3 +- Support building and running under Python 3.13 for F42 +- Removed patch from 92.1 as its present in 92.3 + +* Fri Jul 26 2024 Miroslav Suchý - 92.1-8 +- convert license to SPDX + +* Fri Jul 19 2024 Fedora Release Engineering - 92.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jun 07 2024 Python Maint - 92.1-6 +- Rebuilt for Python 3.13 + +* Mon Jan 29 2024 Fedora Release Engineering - 92.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 26 2024 Fedora Release Engineering - 92.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 92.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jul 21 2023 Fedora Release Engineering - 92.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Mon Jul 17 2023 Cleber Rosa - 92.1-1 +- Updated to 92.1 +- Support building and running under Python 3.12 for F39 + +* Wed Jun 14 2023 Python Maint - 92.0-3 +- Rebuilt for Python 3.12 + +* Fri Jan 20 2023 Fedora Release Engineering - 92.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Aug 9 2022 Cleber Rosa - 92.0-1 +- Use selftests/check.py job instead of more limited selftests/run +- Included avocado-runner-sysinfo, avocado-runner-requirement-package, + avocado-runner-requirement-asset and avocado-runner-dry-run and + avocado-runner-golang executables +- Removed avocado-runner-exec executable +- Removed loader_yaml and glib plugin packages + +* Fri Jul 22 2022 Fedora Release Engineering - 82.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jun 21 2022 Python Maint - 82.0-6 +- Rebuilt for Python 3.11 + +* Fri Jan 21 2022 Fedora Release Engineering - 82.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 28 2021 Merlin Mathesius - 82.0-4 +- Loosen jinja2 version requirement to fix FTBFS in Rawhide + +* Fri Jul 23 2021 Fedora Release Engineering - 82.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Mar 18 2021 Merlin Mathesius - 82.0-2 +- Drop obsolete packages from BuildRequires +- Generate man page directly using 'rst2man' rather than requiring 'make' +- Adjust PATH to make sure self-tests find internal modules +- Spec file cleanup following package review. + +* Mon Sep 14 2020 Cleber Rosa - 82.0-1 +- Sync with upstream release 82.0. +- Removed python libvirt depedency as the vm runner has been removed + upstream +- Dropped configuration files to sync with upstream which made them + optional and doesn't ship them anymore +- Add on extra character to short commit to sync with upstream + +* Sat Jun 6 2020 Cleber Rosa - 80.0-1 +- Sync with upstream release 80.0. +- Dropped use of custom avocado command for tests +- Do not build deprecated runners + +* Tue May 12 2020 Cleber Rosa - 79.0-1 +- Sync with upstream release 79.0. +- Added Python's user base bin dir to the PATH environment variable + while running tests, so that avocado-runner-* scripts can be found +- Moved comment to new lines closing the conditionals, to avoid + errors from rpmlint and rpmbuild + +* Wed Apr 15 2020 Merlin Mathesius - 78.0-1 +- Sync with upstream release 78.0. + +* Tue Mar 17 2020 Merlin Mathesius - 77.0-1 +- Sync with upstream release 77.0. + +* Mon Mar 09 2020 Merlin Mathesius - 76.0-1 +- Sync with upstream release 76.0. + +* Mon Jan 20 2020 Merlin Mathesius - 75.1-1 +- Sync with upstream release 75.1. + +* Mon Dec 23 2019 Merlin Mathesius - 74.0-1 +- Sync with upstream release 74.0. + +* Wed Nov 27 2019 Merlin Mathesius - 73.0-1 +- Sync with upstream release 73.0. +- Adjustments to build for RHEL 8. + +* Wed Oct 02 2019 Merlin Mathesius - 72.0-1 +- Sync with upstream release 72.0. + +* Wed Aug 28 2019 Merlin Mathesius - 71.0-1 +- Sync with upstream release 71.0. + +* Wed Jun 26 2019 Merlin Mathesius - 70.0-1 +- Sync with upstream release 70.0. +- Drop all Python 2 support from SPEC file. + +* Wed May 22 2019 Merlin Mathesius - 69.0-4 +- pyliblzma is Python 2-only and no longer available as of F31. +- Unversioned executables should now be Python 3. + +* Mon May 20 2019 Merlin Mathesius - 69.0-3 +- Drop Python 2 support from F31 and RHEL8 onward. +- Disable components dependent upon Fiber in Fedora 31 and later, + since avocado is currently incompatible with the new Fiber API. + +* Tue Mar 19 2019 Merlin Mathesius - 69.0-2 +- python2-sphinx is no longer available or needed as of F31 + +* Wed Feb 27 2019 Merlin Mathesius - 69.0-1 +- Sync with upstream release 69.0. + +* Fri Feb 22 2019 Merlin Mathesius - 68.0-1 +- Sync with upstream release 68.0. + +* Thu Jan 31 2019 Merlin Mathesius - 67.0-1 +- Sync with upstream release 67.0. +- genisoimage, libcdio, and psmisc added as build deps so iso9660 tests run. +- Replace pystache requirement with jinja2. +- glibc-all-langpacks added as build dep for F30+ so vmimage tests run. +- python2-resultsdb_api package has been removed in F30 so + python2-avocado-plugins-resultsdb was also disabled. + +* Wed Nov 21 2018 Merlin Mathesius - 66.0-1 +- Sync with upstream release 66.0. +- python2-pycdlib package has been removed in F30 as part of + https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal + +* Thu Oct 04 2018 Merlin Mathesius - 65.0-1 +- Sync with upstream release 65.0. + +* Tue Aug 28 2018 Merlin Mathesius - 64.0-1 +- Sync with upstream release 64.0. + +* Thu Jul 26 2018 Merlin Mathesius - 63.0-2 +- Added missing python[2]-enum34 requirement. + +* Mon Jul 23 2018 Merlin Mathesius - 63.0-1 +- Sync with upstream release 63.0. (BZ#1602175) + Include upstream patches needed to build for Rawhide. + +* Wed Jun 13 2018 Merlin Mathesius - 62.0-1 +- Sync with upstream release 62.0. (BZ#1590572) +- Correct libvirt dependency for EPEL7/RHEL7 + +* Thu May 17 2018 Merlin Mathesius - 61.0-1 +- Sync with upstream release 61.0. +- Packaging updates for Python 3. +- Reorganize SPEC file. + +* Mon Apr 9 2018 Cleber Rosa - 52.1-2 +- Added Fedora CI tests + +* Tue Apr 03 2018 Merlin Mathesius - 52.1-1 +- Sync with upstream release 52.1 (LTS series). +- Correct deprecated use of unversioned python. + +* Mon Mar 26 2018 Iryna Shcherbina - 52.0-5 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Fri Feb 09 2018 Fedora Release Engineering - 52.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Aug 09 2017 Merlin Mathesius - 52.0-3 +- Fix FTBFS error by disabling selfcheck producing false failures +- Update SPEC to use pkgname instead of srcname macro where appropriate + +* Thu Jul 27 2017 Fedora Release Engineering - 52.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Jun 29 2017 Merlin Mathesius - 52.0-1 +- Sync with upstream release 52.0. (BZ#1465409) + +* Wed Jun 14 2017 Merlin Mathesius - 51.0-1 +- Sync with upstream release 51.0. (BZ#1460837) +- Disable selftests when libvirt may not be available. + +* Wed May 17 2017 Merlin Mathesius - 50.0-1 +- Sync with upstream release 50.0. (BZ#1431413) +- Be explicit about selftest level run on check. + +* Tue Apr 25 2017 Merlin Mathesius - 49.0-1 +- Sync with upstream release 49.0. (BZ#1431413) + +* Tue Apr 18 2017 Merlin Mathesius - 48.0-1 +- Sync with upstream release 48.0. (BZ#1431413) +- Allow rel_build macro to be defined outside of the SPEC file. + +* Mon Mar 27 2017 Merlin Mathesius - 47.0-1 +- Sync with upstream release 47.0. +- Enable self-tests during build. +- Add example test to be run by Taskotron. + +* Mon Feb 27 2017 Merlin Mathesius - 46.0-2 +- Incorporate upstream SPEC file changes to split plugins into subpackages. +- Remove obsolete CC-BY-SA license, which went away with the halflings font. + +* Tue Feb 14 2017 Merlin Mathesius - 46.0-1 +- Sync with upstream release 46.0. +- Remove halflings license since font was removed from upstream. +- SPEC updates to easily switch between release and snapshot builds. + +* Sat Feb 11 2017 Fedora Release Engineering - 43.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jan 10 2017 Merlin Mathesius - 43.0-7 +- SPEC updates to build and install for EPEL. + +* Mon Nov 21 2016 Merlin Mathesius - 43.0-6 +- Initial packaging for Fedora. diff --git a/sources b/sources new file mode 100644 index 0000000..4a738a2 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (avocado-92.3.tar.gz) = 97a0c113bc826537a02ebf6efcd7cf49b505a93e5fd9686c3a4c7e70902f2d367f78eb2fb23ddf9253b97f45e27b2e328fd6bd1c420ecbeb59e25e991b29c262 diff --git a/tests/gdbtest.py b/tests/gdbtest.py new file mode 100755 index 0000000..c0cdc55 --- /dev/null +++ b/tests/gdbtest.py @@ -0,0 +1,347 @@ +import os + +from avocado import Test +from avocado.utils import gdb, genio, process + + +class GdbTest(Test): + + """ + Execute the gdb test + + :avocado: tags=requires_c_compiler + """ + + VALID_CMDS = ["-list-target-features", + "-break-info", + "-break-list", + "-thread-info", + "-stack-info-frame", + "-stack-info-depth"] + + INVALID_CMDS = ["-foobar", + "-magic8ball", + "-find-me-the-bug", + "-auto-debug-it"] + + def setUp(self): + self.return99_binary_path = os.path.join(self.teststmpdir, 'return99') + if not os.path.exists(self.return99_binary_path): + return99_source_path = self.get_data('return99.c') + if return99_source_path is None: + self.cancel('Test is missing data file "return99.c"') + process.system(f'gcc -O0 -g {return99_source_path} -o {self.return99_binary_path}') + + self.segfault_binary_path = os.path.join(self.teststmpdir, 'segfault') + if not os.path.exists(self.segfault_binary_path): + segfault_source_path = self.get_data('segfault.c') + if segfault_source_path is None: + self.cancel('Test is missing data file "segfault.c"') + process.system(f'gcc -O0 -g {segfault_source_path} -o {self.segfault_binary_path}') + + @staticmethod + def is_process_alive(process): # pylint: disable=W0621 + """ + Checks if a process is still alive + + :param process: a :class:`subprocess.POpen` instance + :type process: :class:`subprocess.POpen` + :returns: True or False + :rtype: bool + """ + return process.poll() is None + + def test_start_exit(self): + """ + Tests execution of multiple GDB instances without any blocking or race + """ + self.log.info("Testing execution of multiple GDB instances") + process_count = 10 + gdb_instances = [] + for i in range(0, process_count): + gdb_instances.append(gdb.GDB()) + + for i in range(0, process_count): + self.assertEqual(gdb_instances[i].exit(), 0) + + def test_existing_commands_raw(self): + """ + Tests the GDB response to commands that exist and to those that do not + """ + g = gdb.GDB() + self.log.info("Testing existing (valid) GDB commands using raw commands") + for cmd in self.VALID_CMDS: + info_cmd = f"-info-gdb-mi-command {cmd[1:]}" + r = g.cmd(info_cmd) + self.assertEqual(r.result.result.command.exists, 'true') + + self.log.info("Testing non-existing (invalid) GDB commands using raw " + "commands") + for cmd in self.INVALID_CMDS: + info_cmd = f"-info-gdb-mi-command {cmd[1:]}" + r = g.cmd(info_cmd) + self.assertEqual(r.result.result.command.exists, 'false') + + def test_existing_commands(self): + g = gdb.GDB() + + self.log.info("Testing existing (valid) GDB commands using utility " + "methods") + for cmd in self.VALID_CMDS: + self.assertTrue(g.cmd_exists(cmd)) + g.cmd(cmd) + + self.log.info("Testing non-existing (invalid) GDB commands using " + "utility methods") + for cmd in self.INVALID_CMDS: + self.assertFalse(g.cmd_exists(cmd)) + + def test_load_set_breakpoint_run_exit_raw(self): + """ + Test a common GDB cycle using raw commands: load, set break, run, exit + """ + self.log.info("Testing that GDB loads a file and sets a breakpoint") + g = gdb.GDB() + + file_cmd = f"-file-exec-and-symbols {self.return99_binary_path}" + r = g.cmd(file_cmd) + self.assertEqual(r.result.class_, 'done') + + break_cmd = "-break-insert 5" + r = g.cmd(break_cmd) + self.assertEqual(r.result.class_, 'done') + self.assertEqual(r.result.result.bkpt.number, '1') + self.assertEqual(r.result.result.bkpt.enabled, 'y') + + break_del_cmd = "-break-delete 1" + r = g.cmd(break_del_cmd) + self.assertEqual(r.result.class_, 'done') + + run_cmd = "-exec-run" + r = g.cmd(run_cmd) + self.assertEqual(r.result.class_, 'running') + + g.cmd("-gdb-exit") + self.assertEqual(g.process.wait(), 0) + + def test_load_set_breakpoint_run_exit(self): + """ + Test a common GDB cycle: load, set break, delete break, run, exit + """ + self.log.info("Testing a common GDB cycle") + g = gdb.GDB() + g.set_file(self.return99_binary_path) + g.set_break("5") + g.del_break(1) + g.run() + g.exit() + + def test_generate_core(self): + """ + Load a file that will cause a segfault and produce a core dump + """ + self.log.info("Testing that a core dump will be generated") + + g = gdb.GDB() + file_cmd = f"-file-exec-and-symbols {self.segfault_binary_path}" + r = g.cmd(file_cmd) + self.assertEqual(r.result.class_, 'done') + + run_cmd = "-exec-run" + r = g.cmd(run_cmd) + self.assertEqual(r.result.class_, 'running') + + other_messages = g.read_until_break() + core_path = None + for msg in other_messages: + parsed_msg = gdb.parse_mi(msg.decode()) + if (hasattr(parsed_msg, 'class_') and + (parsed_msg.class_ == 'stopped') and + (parsed_msg.result.signal_name == 'SIGSEGV')): + core_path = f"{self.segfault_binary_path}.core" + gcore_cmd = f'gcore {core_path}' + gcore_cmd = gdb.encode_mi_cli(gcore_cmd) + r = g.cmd(gcore_cmd) + self.assertEqual(r.result.class_, 'done') + + self.assertTrue(os.path.exists(core_path)) + g.exit() + + def test_set_multiple_break(self): + """ + Tests that multiple breakpoints do not interfere with each other + """ + self.log.info("Testing setting multiple breakpoints") + g = gdb.GDB() + g.set_file(self.return99_binary_path) + g.set_break('empty') + g.set_break('7') + g.exit() + + def test_disconnect_raw(self): + """ + Connect/disconnect repeatedly from a remote debugger using raw commands + """ + self.log.info("Testing connecting and disconnecting repeatedly using " + "raw commands") + s = gdb.GDBServer() + g = gdb.GDB() + + # Do 100 cycle of target (kind of connects) and disconnects + for _ in range(0, 100): + cmd = f'-target-select extended-remote :{s.port}' + r = g.cmd(cmd) + self.assertEqual(r.result.class_, 'connected') + r = g.cmd('-target-disconnect') + self.assertEqual(r.result.class_, 'done') + + # manual server shutdown + cmd = f'-target-select extended-remote :{s.port}' + r = g.cmd(cmd) + self.assertEqual(r.result.class_, 'connected') + r = g.cli_cmd('monitor exit') + self.assertEqual(r.result.class_, 'done') + + g.exit() + s.exit() + + def test_disconnect(self): + """ + Connect/disconnect repeatedly from a remote debugger using utilities + """ + self.log.info("Testing connecting and disconnecting repeatedly") + s = gdb.GDBServer() + g = gdb.GDB() + + for _ in range(0, 100): + r = g.connect(s.port) + self.assertEqual(r.result.class_, 'connected') + r = g.disconnect() + self.assertEqual(r.result.class_, 'done') + + g.exit() + s.exit() + + def test_remote_exec(self): + """ + Tests execution on a remote target + """ + self.log.info("Testing execution on a remote target") + hit_breakpoint = False + + s = gdb.GDBServer() + g = gdb.GDB() + + cmd = f'-file-exec-and-symbols {self.return99_binary_path}' + r = g.cmd(cmd) + self.assertEqual(r.result.class_, 'done') + + cmd = f'set remote exec-file {self.return99_binary_path}' + r = g.cmd(cmd) + self.assertEqual(r.result.class_, 'done') + + cmd = f"-break-insert {'main'}" + r = g.cmd(cmd) + self.assertEqual(r.result.class_, 'done') + + r = g.cmd('-exec-run') + + other_messages = g.read_until_break() + for msg in other_messages: + parsed_msg = gdb.parse_mi(msg.decode()) + if (hasattr(parsed_msg, 'class_') and + parsed_msg.class_ == 'stopped' and + parsed_msg.result.reason == 'breakpoint-hit'): + hit_breakpoint = True + + self.assertTrue(hit_breakpoint) + g.exit() + s.exit() + + def test_stream_messages(self): + """ + Tests if the expected response appears in the result stream messages + """ + self.log.info("Testing that messages appears in the result stream") + g = gdb.GDB() + r = g.cmd("-gdb-version") + self.assertIn("GNU GPL version", r.get_stream_messages_text()) + + def test_connect_multiple_clients(self): + """ + Tests two or more connections to the same server raise an exception + """ + self.log.info("Testing that multiple clients cannot connect at once") + s = gdb.GDBServer() + c1 = gdb.GDB() + c1.connect(s.port) + c2 = gdb.GDB() + with self.assertRaises(gdb.UnexpectedResponseError): + c2.connect(s.port) + s.exit() + + def test_server_exit(self): + """ + Tests that the server is shutdown by using a monitor exit command + """ + self.log.info("Testing that a single server exits cleanly") + s = gdb.GDBServer() + s.exit() + self.assertFalse(self.is_process_alive(s.process)) + + def test_multiple_servers(self): + """ + Tests multiple server instances without any blocking or race condition + """ + self.log.info("Testing execution of multiple GDB server instances") + process_count = 10 + server_instances = [] + for i in range(0, process_count): + s = gdb.GDBServer() + c = gdb.GDB() + c.connect(s.port) + c.cmd('show-version') + c.disconnect() + server_instances.append(s) + + for i in range(0, process_count): + self.assertTrue(self.is_process_alive(server_instances[i].process)) + server_instances[i].exit() + self.assertFalse(self.is_process_alive(server_instances[i].process)) + + def test_server_stderr(self): + self.log.info('Testing server stderr collection') + s = gdb.GDBServer() + s.exit() + self.assertTrue(os.path.exists(s.stderr_path)) + + stderr_lines = genio.read_all_lines(s.stderr_path) + listening_line = f"Listening on port {s.port}" + self.assertIn(listening_line, stderr_lines) + + def test_server_stdout(self): + self.log.info('Testing server stdout/stderr collection') + s = gdb.GDBServer() + c = gdb.GDB() + c.connect(s.port) + c.set_file(self.return99_binary_path) + c.run() + s.exit() + + self.assertTrue(os.path.exists(s.stdout_path)) + self.assertTrue(os.path.exists(s.stderr_path)) + + stdout_lines = genio.read_all_lines(s.stdout_path) + self.assertIn("return 99", stdout_lines) + + @staticmethod + def test_remote(): + """ + Tests GDBRemote interaction with a GDBServer + """ + s = gdb.GDBServer() + r = gdb.GDBRemote('127.0.0.1', s.port) + r.connect() + r.cmd(b"qSupported") + r.cmd(b"qfThreadInfo") + s.exit() diff --git a/tests/gdbtest.py.data/return99.c b/tests/gdbtest.py.data/return99.c new file mode 100644 index 0000000..bf14935 --- /dev/null +++ b/tests/gdbtest.py.data/return99.c @@ -0,0 +1,47 @@ +#include +#include + +void empty() +{ +} + +void write_stdout() +{ + fprintf(stdout, "testing output to stdout\n"); +} + +void write_stderr() +{ + fprintf(stderr, "testing output to stderr\n"); +} + +int forkme() +{ + int pid; + + pid = fork(); + if (pid != 0) + pid = fork(); + if (pid != 0) + pid = fork(); + + return pid; +} + +int main(int argc, char *argv[]) +{ + int exit_status = 99; + + if (argc > 1) + exit_status = atoi(argv[1]); + + empty(); + write_stdout(); + write_stderr(); + + if (forkme()) { + fprintf(stdout, "return %i\n", exit_status); + } + + return exit_status; +} diff --git a/tests/gdbtest.py.data/segfault.c b/tests/gdbtest.py.data/segfault.c new file mode 100644 index 0000000..a685f86 --- /dev/null +++ b/tests/gdbtest.py.data/segfault.c @@ -0,0 +1,9 @@ +#include + +int main() +{ + int *p = NULL; + *p = 0xdead; + + return 0; +} diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..7ff61ce --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,25 @@ +- hosts: localhost + roles: + - role: standard-test-avocado + tests: + - gdbtest.py:GdbTest.test_start_exit + - gdbtest.py:GdbTest.test_existing_commands_raw + - gdbtest.py:GdbTest.test_existing_commands + - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit_raw + - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit + - gdbtest.py:GdbTest.test_generate_core + - gdbtest.py:GdbTest.test_set_multiple_break + - gdbtest.py:GdbTest.test_disconnect_raw + - gdbtest.py:GdbTest.test_disconnect + - gdbtest.py:GdbTest.test_remote_exec + - gdbtest.py:GdbTest.test_stream_messages + - gdbtest.py:GdbTest.test_connect_multiple_clients + - gdbtest.py:GdbTest.test_server_exit + - gdbtest.py:GdbTest.test_multiple_servers + - gdbtest.py:GdbTest.test_server_stderr + - gdbtest.py:GdbTest.test_server_stdout + - gdbtest.py:GdbTest.test_remote + required_packages: + - gcc + - gdb + - gdb-gdbserver From e350a6d8232ff6a11ed1240ebeab01c374125592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Tue, 30 Sep 2025 20:59:45 +0200 Subject: [PATCH 49/51] Retired: Fails to install: https://pagure.io/releng/issue/12969 --- .gitignore | 34 -- dead.package | 1 + python-avocado.spec | 699 ------------------------------- sources | 1 - tests/gdbtest.py | 347 --------------- tests/gdbtest.py.data/return99.c | 47 --- tests/gdbtest.py.data/segfault.c | 9 - tests/tests.yml | 25 -- 8 files changed, 1 insertion(+), 1162 deletions(-) delete mode 100644 .gitignore create mode 100644 dead.package delete mode 100644 python-avocado.spec delete mode 100644 sources delete mode 100755 tests/gdbtest.py delete mode 100644 tests/gdbtest.py.data/return99.c delete mode 100644 tests/gdbtest.py.data/segfault.c delete mode 100644 tests/tests.yml diff --git a/.gitignore b/.gitignore deleted file mode 100644 index bd8b053..0000000 --- a/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -/avocado-43.0.tar.gz -/avocado-46.0.tar.gz -/avocado-47.0.tar.gz -/avocado-48.0.tar.gz -/avocado-49.0.tar.gz -/avocado-50.0.tar.gz -/avocado-51.0.tar.gz -/avocado-52.0.tar.gz -/avocado-52.1.tar.gz -/avocado-61.0.tar.gz -/avocado-62.0.tar.gz -/avocado-63.0.tar.gz -/avocado-64.0.tar.gz -/avocado-65.0.tar.gz -/avocado-66.0.tar.gz -/avocado-67.0.tar.gz -/avocado-68.0.tar.gz -/avocado-69.0.tar.gz -/avocado-70.0.tar.gz -/avocado-71.0.tar.gz -/avocado-72.0.tar.gz -/avocado-73.0.tar.gz -/avocado-74.0.tar.gz -/avocado-75.1.tar.gz -/avocado-76.0.tar.gz -/avocado-77.0.tar.gz -/avocado-78.0.tar.gz -/avocado-79.0.tar.gz -/avocado-80.0.tar.gz -/avocado-82.0.tar.gz -/avocado-92.0.tar.gz -/avocado-92.1.tar.gz -/avocado-92.1-python312.patch -/avocado-92.3.tar.gz diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..505b74d --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Retired: Fails to install: https://pagure.io/releng/issue/12969 diff --git a/python-avocado.spec b/python-avocado.spec deleted file mode 100644 index 4c1803a..0000000 --- a/python-avocado.spec +++ /dev/null @@ -1,699 +0,0 @@ -# Conditional for release vs. snapshot builds. Set to 1 for release build. -%if ! 0%{?rel_build:1} - %global rel_build 1 -%endif - -# Settings used for build from snapshots. -%if 0%{?rel_build} - %global gitref %{version} - %global gittar avocado-%{version}.tar.gz -%else - %if ! 0%{?commit:1} - %global commit 5b21f030001d6eed69c0357cc45b6128c73dc860 - %endif - %if ! 0%{?commit_date:1} - %global commit_date 20240819 - %endif - %global shortcommit %(c=%{commit};echo ${c:0:9}) - %global gitrel .%{commit_date}git%{shortcommit} - %global gitref %{commit} - %global gittar avocado-%{shortcommit}.tar.gz -%endif - -# Selftests are provided but may need to be skipped because many of -# the functional tests are time and resource sensitive and can -# cause race conditions and random build failures. They are -# enabled by default. -%global with_tests 1 - -# resultsdb is not available for RHEL -%if ! 0%{?rhel} -%global with_resultsdb 1 -%else -%global with_resultsdb 0 -%endif - -Name: python-avocado -Version: 92.3 -Release: 6%{?gitrel}%{?dist} -Summary: Framework with tools and libraries for Automated Testing -# Found licenses: -# avocado/core/tapparser.py: MIT -# avocado/utils/external/gdbmi_parser.py: MIT -# avocado/utils/external/spark.py: MIT -# optional_plugins/html/avocado_result_html/templates/bootstrap.min.css: MIT -# optional_plugins/html/avocado_result_html/templates/bootstrap.min.js: MIT -# selftests/.data/jenkins-junit.xsd: MIT -# Other files: GPLv2 and GPLv2+ -License: GPL-2.0-or-later AND GPL-2.0-only AND MIT -URL: https://avocado-framework.github.io/ -Source0: https://github.com/avocado-framework/avocado/archive/%{gitref}/%{gittar} -BuildArch: noarch - -BuildRequires: kmod -BuildRequires: procps-ng -BuildRequires: python3-devel -BuildRequires: python3-docutils -BuildRequires: python3-jinja2 -BuildRequires: python3-lxml -BuildRequires: python3-psutil -BuildRequires: python3-setuptools -%if %{with_resultsdb} -BuildRequires: python3-resultsdb_api -BuildRequires: python3-pycdlib -%endif - -%if 0%{?with_tests} -BuildRequires: genisoimage -BuildRequires: libcdio -BuildRequires: psmisc -%if ! 0%{?rhel} -BuildRequires: perl-Test-Harness -%endif -BuildRequires: glibc-all-langpacks -BuildRequires: python3-netifaces -BuildRequires: python3-yaml -%endif -# with_tests - -%description -Avocado is a set of tools and libraries (what people call -these days a framework) to perform automated testing. - - -%prep -%setup -q -n avocado-%{gitref} -%if 0%{?rhel} -sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to_mux/setup.py -%endif -# drop unnecessary install requirement -sed -e "s/'markupsafe<2.0.0', //" -i optional_plugins/html/setup.py -# loosen jinja2 version requirement -sed -e "s/'jinja2<3.0.0'/'jinja2'/" -i optional_plugins/html/setup.py -# loosen pyyaml version requirement -sed -e "s/'PyYAML>=4.2b2,<6.0.2'/'PyYAML>=4.2b2'/" -i optional_plugins/varianter_yaml_to_mux/setup.py - -%build -%py3_build -pushd optional_plugins/html - %py3_build -popd -%if %{with_resultsdb} -pushd optional_plugins/resultsdb - %py3_build -popd -%endif -pushd optional_plugins/varianter_yaml_to_mux - %py3_build -popd -pushd optional_plugins/golang - %py3_build -popd -pushd optional_plugins/varianter_pict - %py3_build -popd -pushd optional_plugins/varianter_cit - %py3_build -popd -pushd optional_plugins/result_upload - %py3_build -popd -rst2man man/avocado.rst man/avocado.1 - -%install -%py3_install -for exe in \ - avocado \ - avocado-runner \ - avocado-runner-noop \ - avocado-runner-dry-run \ - avocado-runner-exec-test \ - avocado-runner-python-unittest \ - avocado-runner-avocado-instrumented \ - avocado-runner-tap \ - avocado-runner-requirement-asset \ - avocado-runner-requirement-package \ - avocado-runner-sysinfo \ - avocado-software-manager -do - mv %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} - ln -s $exe-%{python3_version} %{buildroot}%{_bindir}/$exe-3 - ln -s $exe-%{python3_version} %{buildroot}%{_bindir}/$exe -done -# configuration is held at /etc/avocado only and part of the -# python-avocado-common package -rm -rf %{buildroot}%{python3_sitelib}/avocado/etc -# ditto for libexec files -rm -rf %{buildroot}%{python3_sitelib}/avocado/libexec -# adjust permissions for file containing shebang line needed for -# spawning tasks in podman containers -chmod -c +x %{buildroot}%{python3_sitelib}/avocado/core/nrunner.py -pushd optional_plugins/html - %py3_install -popd -%if %{with_resultsdb} -pushd optional_plugins/resultsdb - %py3_install -popd -%endif -pushd optional_plugins/varianter_yaml_to_mux - %py3_install -popd -pushd optional_plugins/golang - %py3_install -popd -pushd optional_plugins/varianter_pict - %py3_install -popd -pushd optional_plugins/varianter_cit - %py3_install -popd -pushd optional_plugins/result_upload - %py3_install -popd -# cleanup plugin test cruft -rm -rf %{buildroot}%{python3_sitelib}/tests -mkdir -p %{buildroot}%{_sysconfdir}/avocado -cp -r avocado/etc/avocado/scripts %{buildroot}%{_sysconfdir}/avocado/scripts -cp -r avocado/etc/avocado/sysinfo %{buildroot}%{_sysconfdir}/avocado/sysinfo -mkdir -p %{buildroot}%{_libexecdir}/avocado -cp avocado/libexec/avocado-bash-utils %{buildroot}%{_libexecdir}/avocado/avocado-bash-utils -cp avocado/libexec/avocado_debug %{buildroot}%{_libexecdir}/avocado/avocado_debug -cp avocado/libexec/avocado_error %{buildroot}%{_libexecdir}/avocado/avocado_error -cp avocado/libexec/avocado_info %{buildroot}%{_libexecdir}/avocado/avocado_info -cp avocado/libexec/avocado_warn %{buildroot}%{_libexecdir}/avocado/avocado_warn -mkdir -p %{buildroot}%{_mandir}/man1 -install -m 0644 man/avocado.1 %{buildroot}%{_mandir}/man1/avocado.1 -mkdir -p %{buildroot}%{_pkgdocdir} -install -m 0644 README.rst %{buildroot}%{_pkgdocdir} -install -d -m 0755 %{buildroot}%{_sharedstatedir}/avocado/data -# place examples in documentation directory -install -d -m 0755 %{buildroot}%{_docdir}/avocado -cp -r examples/gdb-prerun-scripts %{buildroot}%{_docdir}/avocado/gdb-prerun-scripts -cp -r examples/plugins %{buildroot}%{_docdir}/avocado/plugins -cp -r examples/tests %{buildroot}%{_docdir}/avocado/tests -cp -r examples/varianter_cit %{buildroot}%{_docdir}/avocado/varianter_cit -cp -r examples/varianter_pict %{buildroot}%{_docdir}/avocado/varianter_pict -cp -r examples/wrappers %{buildroot}%{_docdir}/avocado/wrappers -cp -r examples/yaml_to_mux %{buildroot}%{_docdir}/avocado/yaml_to_mux -find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec chmod -c -x {} ';' - - -%if 0%{?with_tests} -%check - # LANG: to make the results predictable, we pin the language - # that is used during test execution. - # AVOCADO_CHECK_LEVEL: package build environments have the least - # amount of resources we have observed so far. Let's avoid tests that - # require too much resources or are time sensitive - PATH=%{buildroot}%{_bindir}:%{buildroot}%{_libexecdir}/avocado:$PATH \ - PYTHONPATH=%{buildroot}%{python3_sitelib}:. \ - LANG=en_US.UTF-8 \ - AVOCADO_CHECK_LEVEL=0 \ - %{python3} selftests/check.py --job-api --nrunner-interface \ - --unit --jobs --functional --optional-plugins \ - --disable-plugin-checks robot -%endif - - -%package -n python3-avocado -Summary: %{summary} -Requires: python-avocado-common == %{version}-%{release} -Requires: gdb -Requires: gdb-gdbserver -Requires: procps-ng -%if ! 0%{?rhel} -Requires: python3-pycdlib -%endif - -%description -n python3-avocado -Avocado is a set of tools and libraries (what people call -these days a framework) to perform automated testing. - -%files -n python3-avocado -%license LICENSE -%{_pkgdocdir}/README.rst -%{python3_sitelib}/avocado/ -%{python3_sitelib}/avocado_framework-%{version}-py%{python3_version}.egg-info -%{_bindir}/avocado-%{python3_version} -%{_bindir}/avocado-3 -%{_bindir}/avocado -%{_bindir}/avocado-runner-%{python3_version} -%{_bindir}/avocado-runner-3 -%{_bindir}/avocado-runner -%{_bindir}/avocado-runner-noop-%{python3_version} -%{_bindir}/avocado-runner-noop-3 -%{_bindir}/avocado-runner-noop -%{_bindir}/avocado-runner-dry-run-%{python3_version} -%{_bindir}/avocado-runner-dry-run-3 -%{_bindir}/avocado-runner-dry-run -%{_bindir}/avocado-runner-exec-test-%{python3_version} -%{_bindir}/avocado-runner-exec-test-3 -%{_bindir}/avocado-runner-exec-test -%{_bindir}/avocado-runner-python-unittest-%{python3_version} -%{_bindir}/avocado-runner-python-unittest-3 -%{_bindir}/avocado-runner-python-unittest -%{_bindir}/avocado-runner-avocado-instrumented-%{python3_version} -%{_bindir}/avocado-runner-avocado-instrumented-3 -%{_bindir}/avocado-runner-avocado-instrumented -%{_bindir}/avocado-runner-tap-%{python3_version} -%{_bindir}/avocado-runner-tap-3 -%{_bindir}/avocado-runner-tap -%{_bindir}/avocado-runner-requirement-asset-%{python3_version} -%{_bindir}/avocado-runner-requirement-asset-3 -%{_bindir}/avocado-runner-requirement-asset -%{_bindir}/avocado-runner-requirement-package-%{python3_version} -%{_bindir}/avocado-runner-requirement-package-3 -%{_bindir}/avocado-runner-requirement-package -%{_bindir}/avocado-runner-sysinfo-%{python3_version} -%{_bindir}/avocado-runner-sysinfo-3 -%{_bindir}/avocado-runner-sysinfo -%{_bindir}/avocado-software-manager-%{python3_version} -%{_bindir}/avocado-software-manager-3 -%{_bindir}/avocado-software-manager - - -%package -n python-avocado-common -Summary: Avocado common files -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later - -%description -n python-avocado-common -Common files (such as configuration) for the Avocado Testing Framework. - -%files -n python-avocado-common -%license LICENSE -%{_mandir}/man1/avocado.1.gz -%dir %{_docdir}/avocado -%dir %{_sharedstatedir}/avocado -%dir %{_sysconfdir}/avocado -%dir %{_sysconfdir}/avocado/sysinfo -%dir %{_sysconfdir}/avocado/scripts -%dir %{_sysconfdir}/avocado/scripts/job -%dir %{_sysconfdir}/avocado/scripts/job/pre.d -%dir %{_sysconfdir}/avocado/scripts/job/post.d -%config(noreplace) %{_sysconfdir}/avocado/sysinfo/commands -%config(noreplace) %{_sysconfdir}/avocado/sysinfo/files -%config(noreplace) %{_sysconfdir}/avocado/sysinfo/profilers -%{_sysconfdir}/avocado/scripts/job/pre.d/README -%{_sysconfdir}/avocado/scripts/job/post.d/README - - -%package -n python3-avocado-plugins-output-html -Summary: Avocado HTML report plugin -License: GPL-2.0-or-later AND MIT -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-output-html -Adds to avocado the ability to generate an HTML report at every job results -directory. It also gives the user the ability to write a report on an -arbitrary filesystem location. - -%files -n python3-avocado-plugins-output-html -%{python3_sitelib}/avocado_result_html/ -%{python3_sitelib}/avocado_framework_plugin_result_html-%{version}-py%{python3_version}.egg-info - - -%if %{with_resultsdb} -%package -n python3-avocado-plugins-resultsdb -Summary: Avocado plugin to propagate job results to ResultsDB -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-resultsdb -Allows Avocado to send job results directly to a ResultsDB -server. - -%files -n python3-avocado-plugins-resultsdb -%{python3_sitelib}/avocado_resultsdb/ -%{python3_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python3_version}.egg-info -%endif -# with_resultsdb - - -%package -n python3-avocado-plugins-varianter-yaml-to-mux -Summary: Avocado plugin to generate variants out of yaml files -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-varianter-yaml-to-mux -Can be used to produce multiple test variants with test parameters -defined in a yaml file(s). - -%files -n python3-avocado-plugins-varianter-yaml-to-mux -%{python3_sitelib}/avocado_varianter_yaml_to_mux/ -%{python3_sitelib}/avocado_framework_plugin_varianter_yaml_to_mux-%{version}-py%{python3_version}.egg-info - - -%package -n python3-avocado-plugins-golang -Summary: Avocado plugin for execution of golang tests -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} -Requires: golang - -%description -n python3-avocado-plugins-golang -Allows Avocado to list golang tests, and if golang is installed, -also run them. - -%files -n python3-avocado-plugins-golang -%{python3_sitelib}/avocado_golang/ -%{python3_sitelib}/avocado_framework_plugin_golang-%{version}-py%{python3_version}.egg-info -%{_bindir}/avocado-runner-golang - - -%package -n python3-avocado-plugins-varianter-pict -Summary: Varianter with combinatorial capabilities by PICT -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-varianter-pict -This plugin uses a third-party tool to provide variants created by -Pair-Wise algorithms, also known as Combinatorial Independent Testing. - -%files -n python3-avocado-plugins-varianter-pict -%{python3_sitelib}/avocado_varianter_pict/ -%{python3_sitelib}/avocado_framework_plugin_varianter_pict-%{version}-py%{python3_version}.egg-info - - -%package -n python3-avocado-plugins-varianter-cit -Summary: Varianter with Combinatorial Independent Testing capabilities -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-varianter-cit -A varianter plugin that generates variants using Combinatorial -Independent Testing (AKA Pair-Wise) algorithm developed in -collaboration with CVUT Prague. - -%files -n python3-avocado-plugins-varianter-cit -%{python3_sitelib}/avocado_varianter_cit/ -%{python3_sitelib}/avocado_framework_plugin_varianter_cit-%{version}-py%{python3_version}.egg-info - - -%package -n python3-avocado-plugins-result-upload -Summary: Avocado plugin propagate job results to a remote host -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -Requires: python3-avocado == %{version}-%{release} - -%description -n python3-avocado-plugins-result-upload -This optional plugin is intended to upload the Avocado Job results to -a dedicated sever. - -%files -n python3-avocado-plugins-result-upload -%{python3_sitelib}/avocado_result_upload/ -%{python3_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python3_version}.egg-info - - -%package -n python-avocado-examples -Summary: Avocado Test Framework Example Tests -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -# documentation does not require main package, but needs to be in lock-step if present -Conflicts: python3-avocado < %{version}-%{release}, python3-avocado > %{version}-%{release} - -%description -n python-avocado-examples -The set of example tests present in the upstream tree of the Avocado framework. -Some of them are used as functional tests of the framework, others serve as -examples of how to write tests on your own. - -%files -n python-avocado-examples -%license LICENSE -%dir %{_docdir}/avocado -%{_docdir}/avocado/gdb-prerun-scripts -%{_docdir}/avocado/plugins -%{_docdir}/avocado/tests -%{_docdir}/avocado/varianter_cit -%{_docdir}/avocado/varianter_pict -%{_docdir}/avocado/wrappers -%{_docdir}/avocado/yaml_to_mux - - -%package -n python-avocado-bash -Summary: Avocado Test Framework Bash Utilities -License: GPL-2.0-or-later AND GPL-2.0-only -Requires: python-avocado-common == %{version}-%{release} - -%description -n python-avocado-bash -A small set of utilities to interact with Avocado from the Bourne -Again Shell code (and possibly other similar shells). - -%files -n python-avocado-bash -%license LICENSE -%dir %{_libexecdir}/avocado -%{_libexecdir}/avocado/avocado-bash-utils -%{_libexecdir}/avocado/avocado_debug -%{_libexecdir}/avocado/avocado_error -%{_libexecdir}/avocado/avocado_info -%{_libexecdir}/avocado/avocado_warn - - -%changelog -* Fri Jul 25 2025 Fedora Release Engineering - 92.3-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Tue Jun 03 2025 Python Maint - 92.3-5 -- Rebuilt for Python 3.14 - -* Mon Jan 20 2025 Miro Hrončok - 92.3-4 -- Loosen the PyYAML version requirement in python3-avocado-plugins-varianter-yaml-to-mux - -* Mon Jan 20 2025 Cleber Rosa - 92.3-3 -- convert remaining licenses to SPDX - -* Sat Jan 18 2025 Fedora Release Engineering - 92.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Mon Aug 19 2024 Cleber Rosa - 92.3-1 -- Updated to 92.3 -- Support building and running under Python 3.13 for F42 -- Removed patch from 92.1 as its present in 92.3 - -* Fri Jul 26 2024 Miroslav Suchý - 92.1-8 -- convert license to SPDX - -* Fri Jul 19 2024 Fedora Release Engineering - 92.1-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Fri Jun 07 2024 Python Maint - 92.1-6 -- Rebuilt for Python 3.13 - -* Mon Jan 29 2024 Fedora Release Engineering - 92.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 26 2024 Fedora Release Engineering - 92.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 92.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jul 21 2023 Fedora Release Engineering - 92.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Mon Jul 17 2023 Cleber Rosa - 92.1-1 -- Updated to 92.1 -- Support building and running under Python 3.12 for F39 - -* Wed Jun 14 2023 Python Maint - 92.0-3 -- Rebuilt for Python 3.12 - -* Fri Jan 20 2023 Fedora Release Engineering - 92.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Tue Aug 9 2022 Cleber Rosa - 92.0-1 -- Use selftests/check.py job instead of more limited selftests/run -- Included avocado-runner-sysinfo, avocado-runner-requirement-package, - avocado-runner-requirement-asset and avocado-runner-dry-run and - avocado-runner-golang executables -- Removed avocado-runner-exec executable -- Removed loader_yaml and glib plugin packages - -* Fri Jul 22 2022 Fedora Release Engineering - 82.0-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Tue Jun 21 2022 Python Maint - 82.0-6 -- Rebuilt for Python 3.11 - -* Fri Jan 21 2022 Fedora Release Engineering - 82.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Wed Jul 28 2021 Merlin Mathesius - 82.0-4 -- Loosen jinja2 version requirement to fix FTBFS in Rawhide - -* Fri Jul 23 2021 Fedora Release Engineering - 82.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Thu Mar 18 2021 Merlin Mathesius - 82.0-2 -- Drop obsolete packages from BuildRequires -- Generate man page directly using 'rst2man' rather than requiring 'make' -- Adjust PATH to make sure self-tests find internal modules -- Spec file cleanup following package review. - -* Mon Sep 14 2020 Cleber Rosa - 82.0-1 -- Sync with upstream release 82.0. -- Removed python libvirt depedency as the vm runner has been removed - upstream -- Dropped configuration files to sync with upstream which made them - optional and doesn't ship them anymore -- Add on extra character to short commit to sync with upstream - -* Sat Jun 6 2020 Cleber Rosa - 80.0-1 -- Sync with upstream release 80.0. -- Dropped use of custom avocado command for tests -- Do not build deprecated runners - -* Tue May 12 2020 Cleber Rosa - 79.0-1 -- Sync with upstream release 79.0. -- Added Python's user base bin dir to the PATH environment variable - while running tests, so that avocado-runner-* scripts can be found -- Moved comment to new lines closing the conditionals, to avoid - errors from rpmlint and rpmbuild - -* Wed Apr 15 2020 Merlin Mathesius - 78.0-1 -- Sync with upstream release 78.0. - -* Tue Mar 17 2020 Merlin Mathesius - 77.0-1 -- Sync with upstream release 77.0. - -* Mon Mar 09 2020 Merlin Mathesius - 76.0-1 -- Sync with upstream release 76.0. - -* Mon Jan 20 2020 Merlin Mathesius - 75.1-1 -- Sync with upstream release 75.1. - -* Mon Dec 23 2019 Merlin Mathesius - 74.0-1 -- Sync with upstream release 74.0. - -* Wed Nov 27 2019 Merlin Mathesius - 73.0-1 -- Sync with upstream release 73.0. -- Adjustments to build for RHEL 8. - -* Wed Oct 02 2019 Merlin Mathesius - 72.0-1 -- Sync with upstream release 72.0. - -* Wed Aug 28 2019 Merlin Mathesius - 71.0-1 -- Sync with upstream release 71.0. - -* Wed Jun 26 2019 Merlin Mathesius - 70.0-1 -- Sync with upstream release 70.0. -- Drop all Python 2 support from SPEC file. - -* Wed May 22 2019 Merlin Mathesius - 69.0-4 -- pyliblzma is Python 2-only and no longer available as of F31. -- Unversioned executables should now be Python 3. - -* Mon May 20 2019 Merlin Mathesius - 69.0-3 -- Drop Python 2 support from F31 and RHEL8 onward. -- Disable components dependent upon Fiber in Fedora 31 and later, - since avocado is currently incompatible with the new Fiber API. - -* Tue Mar 19 2019 Merlin Mathesius - 69.0-2 -- python2-sphinx is no longer available or needed as of F31 - -* Wed Feb 27 2019 Merlin Mathesius - 69.0-1 -- Sync with upstream release 69.0. - -* Fri Feb 22 2019 Merlin Mathesius - 68.0-1 -- Sync with upstream release 68.0. - -* Thu Jan 31 2019 Merlin Mathesius - 67.0-1 -- Sync with upstream release 67.0. -- genisoimage, libcdio, and psmisc added as build deps so iso9660 tests run. -- Replace pystache requirement with jinja2. -- glibc-all-langpacks added as build dep for F30+ so vmimage tests run. -- python2-resultsdb_api package has been removed in F30 so - python2-avocado-plugins-resultsdb was also disabled. - -* Wed Nov 21 2018 Merlin Mathesius - 66.0-1 -- Sync with upstream release 66.0. -- python2-pycdlib package has been removed in F30 as part of - https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal - -* Thu Oct 04 2018 Merlin Mathesius - 65.0-1 -- Sync with upstream release 65.0. - -* Tue Aug 28 2018 Merlin Mathesius - 64.0-1 -- Sync with upstream release 64.0. - -* Thu Jul 26 2018 Merlin Mathesius - 63.0-2 -- Added missing python[2]-enum34 requirement. - -* Mon Jul 23 2018 Merlin Mathesius - 63.0-1 -- Sync with upstream release 63.0. (BZ#1602175) - Include upstream patches needed to build for Rawhide. - -* Wed Jun 13 2018 Merlin Mathesius - 62.0-1 -- Sync with upstream release 62.0. (BZ#1590572) -- Correct libvirt dependency for EPEL7/RHEL7 - -* Thu May 17 2018 Merlin Mathesius - 61.0-1 -- Sync with upstream release 61.0. -- Packaging updates for Python 3. -- Reorganize SPEC file. - -* Mon Apr 9 2018 Cleber Rosa - 52.1-2 -- Added Fedora CI tests - -* Tue Apr 03 2018 Merlin Mathesius - 52.1-1 -- Sync with upstream release 52.1 (LTS series). -- Correct deprecated use of unversioned python. - -* Mon Mar 26 2018 Iryna Shcherbina - 52.0-5 -- Update Python 2 dependency declarations to new packaging standards - (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) - -* Fri Feb 09 2018 Fedora Release Engineering - 52.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Wed Aug 09 2017 Merlin Mathesius - 52.0-3 -- Fix FTBFS error by disabling selfcheck producing false failures -- Update SPEC to use pkgname instead of srcname macro where appropriate - -* Thu Jul 27 2017 Fedora Release Engineering - 52.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Thu Jun 29 2017 Merlin Mathesius - 52.0-1 -- Sync with upstream release 52.0. (BZ#1465409) - -* Wed Jun 14 2017 Merlin Mathesius - 51.0-1 -- Sync with upstream release 51.0. (BZ#1460837) -- Disable selftests when libvirt may not be available. - -* Wed May 17 2017 Merlin Mathesius - 50.0-1 -- Sync with upstream release 50.0. (BZ#1431413) -- Be explicit about selftest level run on check. - -* Tue Apr 25 2017 Merlin Mathesius - 49.0-1 -- Sync with upstream release 49.0. (BZ#1431413) - -* Tue Apr 18 2017 Merlin Mathesius - 48.0-1 -- Sync with upstream release 48.0. (BZ#1431413) -- Allow rel_build macro to be defined outside of the SPEC file. - -* Mon Mar 27 2017 Merlin Mathesius - 47.0-1 -- Sync with upstream release 47.0. -- Enable self-tests during build. -- Add example test to be run by Taskotron. - -* Mon Feb 27 2017 Merlin Mathesius - 46.0-2 -- Incorporate upstream SPEC file changes to split plugins into subpackages. -- Remove obsolete CC-BY-SA license, which went away with the halflings font. - -* Tue Feb 14 2017 Merlin Mathesius - 46.0-1 -- Sync with upstream release 46.0. -- Remove halflings license since font was removed from upstream. -- SPEC updates to easily switch between release and snapshot builds. - -* Sat Feb 11 2017 Fedora Release Engineering - 43.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Tue Jan 10 2017 Merlin Mathesius - 43.0-7 -- SPEC updates to build and install for EPEL. - -* Mon Nov 21 2016 Merlin Mathesius - 43.0-6 -- Initial packaging for Fedora. diff --git a/sources b/sources deleted file mode 100644 index 4a738a2..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -SHA512 (avocado-92.3.tar.gz) = 97a0c113bc826537a02ebf6efcd7cf49b505a93e5fd9686c3a4c7e70902f2d367f78eb2fb23ddf9253b97f45e27b2e328fd6bd1c420ecbeb59e25e991b29c262 diff --git a/tests/gdbtest.py b/tests/gdbtest.py deleted file mode 100755 index c0cdc55..0000000 --- a/tests/gdbtest.py +++ /dev/null @@ -1,347 +0,0 @@ -import os - -from avocado import Test -from avocado.utils import gdb, genio, process - - -class GdbTest(Test): - - """ - Execute the gdb test - - :avocado: tags=requires_c_compiler - """ - - VALID_CMDS = ["-list-target-features", - "-break-info", - "-break-list", - "-thread-info", - "-stack-info-frame", - "-stack-info-depth"] - - INVALID_CMDS = ["-foobar", - "-magic8ball", - "-find-me-the-bug", - "-auto-debug-it"] - - def setUp(self): - self.return99_binary_path = os.path.join(self.teststmpdir, 'return99') - if not os.path.exists(self.return99_binary_path): - return99_source_path = self.get_data('return99.c') - if return99_source_path is None: - self.cancel('Test is missing data file "return99.c"') - process.system(f'gcc -O0 -g {return99_source_path} -o {self.return99_binary_path}') - - self.segfault_binary_path = os.path.join(self.teststmpdir, 'segfault') - if not os.path.exists(self.segfault_binary_path): - segfault_source_path = self.get_data('segfault.c') - if segfault_source_path is None: - self.cancel('Test is missing data file "segfault.c"') - process.system(f'gcc -O0 -g {segfault_source_path} -o {self.segfault_binary_path}') - - @staticmethod - def is_process_alive(process): # pylint: disable=W0621 - """ - Checks if a process is still alive - - :param process: a :class:`subprocess.POpen` instance - :type process: :class:`subprocess.POpen` - :returns: True or False - :rtype: bool - """ - return process.poll() is None - - def test_start_exit(self): - """ - Tests execution of multiple GDB instances without any blocking or race - """ - self.log.info("Testing execution of multiple GDB instances") - process_count = 10 - gdb_instances = [] - for i in range(0, process_count): - gdb_instances.append(gdb.GDB()) - - for i in range(0, process_count): - self.assertEqual(gdb_instances[i].exit(), 0) - - def test_existing_commands_raw(self): - """ - Tests the GDB response to commands that exist and to those that do not - """ - g = gdb.GDB() - self.log.info("Testing existing (valid) GDB commands using raw commands") - for cmd in self.VALID_CMDS: - info_cmd = f"-info-gdb-mi-command {cmd[1:]}" - r = g.cmd(info_cmd) - self.assertEqual(r.result.result.command.exists, 'true') - - self.log.info("Testing non-existing (invalid) GDB commands using raw " - "commands") - for cmd in self.INVALID_CMDS: - info_cmd = f"-info-gdb-mi-command {cmd[1:]}" - r = g.cmd(info_cmd) - self.assertEqual(r.result.result.command.exists, 'false') - - def test_existing_commands(self): - g = gdb.GDB() - - self.log.info("Testing existing (valid) GDB commands using utility " - "methods") - for cmd in self.VALID_CMDS: - self.assertTrue(g.cmd_exists(cmd)) - g.cmd(cmd) - - self.log.info("Testing non-existing (invalid) GDB commands using " - "utility methods") - for cmd in self.INVALID_CMDS: - self.assertFalse(g.cmd_exists(cmd)) - - def test_load_set_breakpoint_run_exit_raw(self): - """ - Test a common GDB cycle using raw commands: load, set break, run, exit - """ - self.log.info("Testing that GDB loads a file and sets a breakpoint") - g = gdb.GDB() - - file_cmd = f"-file-exec-and-symbols {self.return99_binary_path}" - r = g.cmd(file_cmd) - self.assertEqual(r.result.class_, 'done') - - break_cmd = "-break-insert 5" - r = g.cmd(break_cmd) - self.assertEqual(r.result.class_, 'done') - self.assertEqual(r.result.result.bkpt.number, '1') - self.assertEqual(r.result.result.bkpt.enabled, 'y') - - break_del_cmd = "-break-delete 1" - r = g.cmd(break_del_cmd) - self.assertEqual(r.result.class_, 'done') - - run_cmd = "-exec-run" - r = g.cmd(run_cmd) - self.assertEqual(r.result.class_, 'running') - - g.cmd("-gdb-exit") - self.assertEqual(g.process.wait(), 0) - - def test_load_set_breakpoint_run_exit(self): - """ - Test a common GDB cycle: load, set break, delete break, run, exit - """ - self.log.info("Testing a common GDB cycle") - g = gdb.GDB() - g.set_file(self.return99_binary_path) - g.set_break("5") - g.del_break(1) - g.run() - g.exit() - - def test_generate_core(self): - """ - Load a file that will cause a segfault and produce a core dump - """ - self.log.info("Testing that a core dump will be generated") - - g = gdb.GDB() - file_cmd = f"-file-exec-and-symbols {self.segfault_binary_path}" - r = g.cmd(file_cmd) - self.assertEqual(r.result.class_, 'done') - - run_cmd = "-exec-run" - r = g.cmd(run_cmd) - self.assertEqual(r.result.class_, 'running') - - other_messages = g.read_until_break() - core_path = None - for msg in other_messages: - parsed_msg = gdb.parse_mi(msg.decode()) - if (hasattr(parsed_msg, 'class_') and - (parsed_msg.class_ == 'stopped') and - (parsed_msg.result.signal_name == 'SIGSEGV')): - core_path = f"{self.segfault_binary_path}.core" - gcore_cmd = f'gcore {core_path}' - gcore_cmd = gdb.encode_mi_cli(gcore_cmd) - r = g.cmd(gcore_cmd) - self.assertEqual(r.result.class_, 'done') - - self.assertTrue(os.path.exists(core_path)) - g.exit() - - def test_set_multiple_break(self): - """ - Tests that multiple breakpoints do not interfere with each other - """ - self.log.info("Testing setting multiple breakpoints") - g = gdb.GDB() - g.set_file(self.return99_binary_path) - g.set_break('empty') - g.set_break('7') - g.exit() - - def test_disconnect_raw(self): - """ - Connect/disconnect repeatedly from a remote debugger using raw commands - """ - self.log.info("Testing connecting and disconnecting repeatedly using " - "raw commands") - s = gdb.GDBServer() - g = gdb.GDB() - - # Do 100 cycle of target (kind of connects) and disconnects - for _ in range(0, 100): - cmd = f'-target-select extended-remote :{s.port}' - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'connected') - r = g.cmd('-target-disconnect') - self.assertEqual(r.result.class_, 'done') - - # manual server shutdown - cmd = f'-target-select extended-remote :{s.port}' - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'connected') - r = g.cli_cmd('monitor exit') - self.assertEqual(r.result.class_, 'done') - - g.exit() - s.exit() - - def test_disconnect(self): - """ - Connect/disconnect repeatedly from a remote debugger using utilities - """ - self.log.info("Testing connecting and disconnecting repeatedly") - s = gdb.GDBServer() - g = gdb.GDB() - - for _ in range(0, 100): - r = g.connect(s.port) - self.assertEqual(r.result.class_, 'connected') - r = g.disconnect() - self.assertEqual(r.result.class_, 'done') - - g.exit() - s.exit() - - def test_remote_exec(self): - """ - Tests execution on a remote target - """ - self.log.info("Testing execution on a remote target") - hit_breakpoint = False - - s = gdb.GDBServer() - g = gdb.GDB() - - cmd = f'-file-exec-and-symbols {self.return99_binary_path}' - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'done') - - cmd = f'set remote exec-file {self.return99_binary_path}' - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'done') - - cmd = f"-break-insert {'main'}" - r = g.cmd(cmd) - self.assertEqual(r.result.class_, 'done') - - r = g.cmd('-exec-run') - - other_messages = g.read_until_break() - for msg in other_messages: - parsed_msg = gdb.parse_mi(msg.decode()) - if (hasattr(parsed_msg, 'class_') and - parsed_msg.class_ == 'stopped' and - parsed_msg.result.reason == 'breakpoint-hit'): - hit_breakpoint = True - - self.assertTrue(hit_breakpoint) - g.exit() - s.exit() - - def test_stream_messages(self): - """ - Tests if the expected response appears in the result stream messages - """ - self.log.info("Testing that messages appears in the result stream") - g = gdb.GDB() - r = g.cmd("-gdb-version") - self.assertIn("GNU GPL version", r.get_stream_messages_text()) - - def test_connect_multiple_clients(self): - """ - Tests two or more connections to the same server raise an exception - """ - self.log.info("Testing that multiple clients cannot connect at once") - s = gdb.GDBServer() - c1 = gdb.GDB() - c1.connect(s.port) - c2 = gdb.GDB() - with self.assertRaises(gdb.UnexpectedResponseError): - c2.connect(s.port) - s.exit() - - def test_server_exit(self): - """ - Tests that the server is shutdown by using a monitor exit command - """ - self.log.info("Testing that a single server exits cleanly") - s = gdb.GDBServer() - s.exit() - self.assertFalse(self.is_process_alive(s.process)) - - def test_multiple_servers(self): - """ - Tests multiple server instances without any blocking or race condition - """ - self.log.info("Testing execution of multiple GDB server instances") - process_count = 10 - server_instances = [] - for i in range(0, process_count): - s = gdb.GDBServer() - c = gdb.GDB() - c.connect(s.port) - c.cmd('show-version') - c.disconnect() - server_instances.append(s) - - for i in range(0, process_count): - self.assertTrue(self.is_process_alive(server_instances[i].process)) - server_instances[i].exit() - self.assertFalse(self.is_process_alive(server_instances[i].process)) - - def test_server_stderr(self): - self.log.info('Testing server stderr collection') - s = gdb.GDBServer() - s.exit() - self.assertTrue(os.path.exists(s.stderr_path)) - - stderr_lines = genio.read_all_lines(s.stderr_path) - listening_line = f"Listening on port {s.port}" - self.assertIn(listening_line, stderr_lines) - - def test_server_stdout(self): - self.log.info('Testing server stdout/stderr collection') - s = gdb.GDBServer() - c = gdb.GDB() - c.connect(s.port) - c.set_file(self.return99_binary_path) - c.run() - s.exit() - - self.assertTrue(os.path.exists(s.stdout_path)) - self.assertTrue(os.path.exists(s.stderr_path)) - - stdout_lines = genio.read_all_lines(s.stdout_path) - self.assertIn("return 99", stdout_lines) - - @staticmethod - def test_remote(): - """ - Tests GDBRemote interaction with a GDBServer - """ - s = gdb.GDBServer() - r = gdb.GDBRemote('127.0.0.1', s.port) - r.connect() - r.cmd(b"qSupported") - r.cmd(b"qfThreadInfo") - s.exit() diff --git a/tests/gdbtest.py.data/return99.c b/tests/gdbtest.py.data/return99.c deleted file mode 100644 index bf14935..0000000 --- a/tests/gdbtest.py.data/return99.c +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include - -void empty() -{ -} - -void write_stdout() -{ - fprintf(stdout, "testing output to stdout\n"); -} - -void write_stderr() -{ - fprintf(stderr, "testing output to stderr\n"); -} - -int forkme() -{ - int pid; - - pid = fork(); - if (pid != 0) - pid = fork(); - if (pid != 0) - pid = fork(); - - return pid; -} - -int main(int argc, char *argv[]) -{ - int exit_status = 99; - - if (argc > 1) - exit_status = atoi(argv[1]); - - empty(); - write_stdout(); - write_stderr(); - - if (forkme()) { - fprintf(stdout, "return %i\n", exit_status); - } - - return exit_status; -} diff --git a/tests/gdbtest.py.data/segfault.c b/tests/gdbtest.py.data/segfault.c deleted file mode 100644 index a685f86..0000000 --- a/tests/gdbtest.py.data/segfault.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -int main() -{ - int *p = NULL; - *p = 0xdead; - - return 0; -} diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 7ff61ce..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,25 +0,0 @@ -- hosts: localhost - roles: - - role: standard-test-avocado - tests: - - gdbtest.py:GdbTest.test_start_exit - - gdbtest.py:GdbTest.test_existing_commands_raw - - gdbtest.py:GdbTest.test_existing_commands - - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit_raw - - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit - - gdbtest.py:GdbTest.test_generate_core - - gdbtest.py:GdbTest.test_set_multiple_break - - gdbtest.py:GdbTest.test_disconnect_raw - - gdbtest.py:GdbTest.test_disconnect - - gdbtest.py:GdbTest.test_remote_exec - - gdbtest.py:GdbTest.test_stream_messages - - gdbtest.py:GdbTest.test_connect_multiple_clients - - gdbtest.py:GdbTest.test_server_exit - - gdbtest.py:GdbTest.test_multiple_servers - - gdbtest.py:GdbTest.test_server_stderr - - gdbtest.py:GdbTest.test_server_stdout - - gdbtest.py:GdbTest.test_remote - required_packages: - - gcc - - gdb - - gdb-gdbserver From a0f088ed1846292903e38e6e605bfbd5db4fffdf Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 9 Oct 2025 12:01:58 +0000 Subject: [PATCH 50/51] Unretirement request: pagure.io/releng/issue/13001 Revert "Retired: Fails to install: https://pagure.io/releng/issue/12969" This reverts commit e350a6d8232ff6a11ed1240ebeab01c374125592. Signed-off-by: Fedora Release Engineering --- .gitignore | 34 ++ dead.package | 1 - python-avocado.spec | 699 +++++++++++++++++++++++++++++++ sources | 1 + tests/gdbtest.py | 347 +++++++++++++++ tests/gdbtest.py.data/return99.c | 47 +++ tests/gdbtest.py.data/segfault.c | 9 + tests/tests.yml | 25 ++ 8 files changed, 1162 insertions(+), 1 deletion(-) create mode 100644 .gitignore delete mode 100644 dead.package create mode 100644 python-avocado.spec create mode 100644 sources create mode 100755 tests/gdbtest.py create mode 100644 tests/gdbtest.py.data/return99.c create mode 100644 tests/gdbtest.py.data/segfault.c create mode 100644 tests/tests.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bd8b053 --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +/avocado-43.0.tar.gz +/avocado-46.0.tar.gz +/avocado-47.0.tar.gz +/avocado-48.0.tar.gz +/avocado-49.0.tar.gz +/avocado-50.0.tar.gz +/avocado-51.0.tar.gz +/avocado-52.0.tar.gz +/avocado-52.1.tar.gz +/avocado-61.0.tar.gz +/avocado-62.0.tar.gz +/avocado-63.0.tar.gz +/avocado-64.0.tar.gz +/avocado-65.0.tar.gz +/avocado-66.0.tar.gz +/avocado-67.0.tar.gz +/avocado-68.0.tar.gz +/avocado-69.0.tar.gz +/avocado-70.0.tar.gz +/avocado-71.0.tar.gz +/avocado-72.0.tar.gz +/avocado-73.0.tar.gz +/avocado-74.0.tar.gz +/avocado-75.1.tar.gz +/avocado-76.0.tar.gz +/avocado-77.0.tar.gz +/avocado-78.0.tar.gz +/avocado-79.0.tar.gz +/avocado-80.0.tar.gz +/avocado-82.0.tar.gz +/avocado-92.0.tar.gz +/avocado-92.1.tar.gz +/avocado-92.1-python312.patch +/avocado-92.3.tar.gz diff --git a/dead.package b/dead.package deleted file mode 100644 index 505b74d..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Retired: Fails to install: https://pagure.io/releng/issue/12969 diff --git a/python-avocado.spec b/python-avocado.spec new file mode 100644 index 0000000..4c1803a --- /dev/null +++ b/python-avocado.spec @@ -0,0 +1,699 @@ +# Conditional for release vs. snapshot builds. Set to 1 for release build. +%if ! 0%{?rel_build:1} + %global rel_build 1 +%endif + +# Settings used for build from snapshots. +%if 0%{?rel_build} + %global gitref %{version} + %global gittar avocado-%{version}.tar.gz +%else + %if ! 0%{?commit:1} + %global commit 5b21f030001d6eed69c0357cc45b6128c73dc860 + %endif + %if ! 0%{?commit_date:1} + %global commit_date 20240819 + %endif + %global shortcommit %(c=%{commit};echo ${c:0:9}) + %global gitrel .%{commit_date}git%{shortcommit} + %global gitref %{commit} + %global gittar avocado-%{shortcommit}.tar.gz +%endif + +# Selftests are provided but may need to be skipped because many of +# the functional tests are time and resource sensitive and can +# cause race conditions and random build failures. They are +# enabled by default. +%global with_tests 1 + +# resultsdb is not available for RHEL +%if ! 0%{?rhel} +%global with_resultsdb 1 +%else +%global with_resultsdb 0 +%endif + +Name: python-avocado +Version: 92.3 +Release: 6%{?gitrel}%{?dist} +Summary: Framework with tools and libraries for Automated Testing +# Found licenses: +# avocado/core/tapparser.py: MIT +# avocado/utils/external/gdbmi_parser.py: MIT +# avocado/utils/external/spark.py: MIT +# optional_plugins/html/avocado_result_html/templates/bootstrap.min.css: MIT +# optional_plugins/html/avocado_result_html/templates/bootstrap.min.js: MIT +# selftests/.data/jenkins-junit.xsd: MIT +# Other files: GPLv2 and GPLv2+ +License: GPL-2.0-or-later AND GPL-2.0-only AND MIT +URL: https://avocado-framework.github.io/ +Source0: https://github.com/avocado-framework/avocado/archive/%{gitref}/%{gittar} +BuildArch: noarch + +BuildRequires: kmod +BuildRequires: procps-ng +BuildRequires: python3-devel +BuildRequires: python3-docutils +BuildRequires: python3-jinja2 +BuildRequires: python3-lxml +BuildRequires: python3-psutil +BuildRequires: python3-setuptools +%if %{with_resultsdb} +BuildRequires: python3-resultsdb_api +BuildRequires: python3-pycdlib +%endif + +%if 0%{?with_tests} +BuildRequires: genisoimage +BuildRequires: libcdio +BuildRequires: psmisc +%if ! 0%{?rhel} +BuildRequires: perl-Test-Harness +%endif +BuildRequires: glibc-all-langpacks +BuildRequires: python3-netifaces +BuildRequires: python3-yaml +%endif +# with_tests + +%description +Avocado is a set of tools and libraries (what people call +these days a framework) to perform automated testing. + + +%prep +%setup -q -n avocado-%{gitref} +%if 0%{?rhel} +sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to_mux/setup.py +%endif +# drop unnecessary install requirement +sed -e "s/'markupsafe<2.0.0', //" -i optional_plugins/html/setup.py +# loosen jinja2 version requirement +sed -e "s/'jinja2<3.0.0'/'jinja2'/" -i optional_plugins/html/setup.py +# loosen pyyaml version requirement +sed -e "s/'PyYAML>=4.2b2,<6.0.2'/'PyYAML>=4.2b2'/" -i optional_plugins/varianter_yaml_to_mux/setup.py + +%build +%py3_build +pushd optional_plugins/html + %py3_build +popd +%if %{with_resultsdb} +pushd optional_plugins/resultsdb + %py3_build +popd +%endif +pushd optional_plugins/varianter_yaml_to_mux + %py3_build +popd +pushd optional_plugins/golang + %py3_build +popd +pushd optional_plugins/varianter_pict + %py3_build +popd +pushd optional_plugins/varianter_cit + %py3_build +popd +pushd optional_plugins/result_upload + %py3_build +popd +rst2man man/avocado.rst man/avocado.1 + +%install +%py3_install +for exe in \ + avocado \ + avocado-runner \ + avocado-runner-noop \ + avocado-runner-dry-run \ + avocado-runner-exec-test \ + avocado-runner-python-unittest \ + avocado-runner-avocado-instrumented \ + avocado-runner-tap \ + avocado-runner-requirement-asset \ + avocado-runner-requirement-package \ + avocado-runner-sysinfo \ + avocado-software-manager +do + mv %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} + ln -s $exe-%{python3_version} %{buildroot}%{_bindir}/$exe-3 + ln -s $exe-%{python3_version} %{buildroot}%{_bindir}/$exe +done +# configuration is held at /etc/avocado only and part of the +# python-avocado-common package +rm -rf %{buildroot}%{python3_sitelib}/avocado/etc +# ditto for libexec files +rm -rf %{buildroot}%{python3_sitelib}/avocado/libexec +# adjust permissions for file containing shebang line needed for +# spawning tasks in podman containers +chmod -c +x %{buildroot}%{python3_sitelib}/avocado/core/nrunner.py +pushd optional_plugins/html + %py3_install +popd +%if %{with_resultsdb} +pushd optional_plugins/resultsdb + %py3_install +popd +%endif +pushd optional_plugins/varianter_yaml_to_mux + %py3_install +popd +pushd optional_plugins/golang + %py3_install +popd +pushd optional_plugins/varianter_pict + %py3_install +popd +pushd optional_plugins/varianter_cit + %py3_install +popd +pushd optional_plugins/result_upload + %py3_install +popd +# cleanup plugin test cruft +rm -rf %{buildroot}%{python3_sitelib}/tests +mkdir -p %{buildroot}%{_sysconfdir}/avocado +cp -r avocado/etc/avocado/scripts %{buildroot}%{_sysconfdir}/avocado/scripts +cp -r avocado/etc/avocado/sysinfo %{buildroot}%{_sysconfdir}/avocado/sysinfo +mkdir -p %{buildroot}%{_libexecdir}/avocado +cp avocado/libexec/avocado-bash-utils %{buildroot}%{_libexecdir}/avocado/avocado-bash-utils +cp avocado/libexec/avocado_debug %{buildroot}%{_libexecdir}/avocado/avocado_debug +cp avocado/libexec/avocado_error %{buildroot}%{_libexecdir}/avocado/avocado_error +cp avocado/libexec/avocado_info %{buildroot}%{_libexecdir}/avocado/avocado_info +cp avocado/libexec/avocado_warn %{buildroot}%{_libexecdir}/avocado/avocado_warn +mkdir -p %{buildroot}%{_mandir}/man1 +install -m 0644 man/avocado.1 %{buildroot}%{_mandir}/man1/avocado.1 +mkdir -p %{buildroot}%{_pkgdocdir} +install -m 0644 README.rst %{buildroot}%{_pkgdocdir} +install -d -m 0755 %{buildroot}%{_sharedstatedir}/avocado/data +# place examples in documentation directory +install -d -m 0755 %{buildroot}%{_docdir}/avocado +cp -r examples/gdb-prerun-scripts %{buildroot}%{_docdir}/avocado/gdb-prerun-scripts +cp -r examples/plugins %{buildroot}%{_docdir}/avocado/plugins +cp -r examples/tests %{buildroot}%{_docdir}/avocado/tests +cp -r examples/varianter_cit %{buildroot}%{_docdir}/avocado/varianter_cit +cp -r examples/varianter_pict %{buildroot}%{_docdir}/avocado/varianter_pict +cp -r examples/wrappers %{buildroot}%{_docdir}/avocado/wrappers +cp -r examples/yaml_to_mux %{buildroot}%{_docdir}/avocado/yaml_to_mux +find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec chmod -c -x {} ';' + + +%if 0%{?with_tests} +%check + # LANG: to make the results predictable, we pin the language + # that is used during test execution. + # AVOCADO_CHECK_LEVEL: package build environments have the least + # amount of resources we have observed so far. Let's avoid tests that + # require too much resources or are time sensitive + PATH=%{buildroot}%{_bindir}:%{buildroot}%{_libexecdir}/avocado:$PATH \ + PYTHONPATH=%{buildroot}%{python3_sitelib}:. \ + LANG=en_US.UTF-8 \ + AVOCADO_CHECK_LEVEL=0 \ + %{python3} selftests/check.py --job-api --nrunner-interface \ + --unit --jobs --functional --optional-plugins \ + --disable-plugin-checks robot +%endif + + +%package -n python3-avocado +Summary: %{summary} +Requires: python-avocado-common == %{version}-%{release} +Requires: gdb +Requires: gdb-gdbserver +Requires: procps-ng +%if ! 0%{?rhel} +Requires: python3-pycdlib +%endif + +%description -n python3-avocado +Avocado is a set of tools and libraries (what people call +these days a framework) to perform automated testing. + +%files -n python3-avocado +%license LICENSE +%{_pkgdocdir}/README.rst +%{python3_sitelib}/avocado/ +%{python3_sitelib}/avocado_framework-%{version}-py%{python3_version}.egg-info +%{_bindir}/avocado-%{python3_version} +%{_bindir}/avocado-3 +%{_bindir}/avocado +%{_bindir}/avocado-runner-%{python3_version} +%{_bindir}/avocado-runner-3 +%{_bindir}/avocado-runner +%{_bindir}/avocado-runner-noop-%{python3_version} +%{_bindir}/avocado-runner-noop-3 +%{_bindir}/avocado-runner-noop +%{_bindir}/avocado-runner-dry-run-%{python3_version} +%{_bindir}/avocado-runner-dry-run-3 +%{_bindir}/avocado-runner-dry-run +%{_bindir}/avocado-runner-exec-test-%{python3_version} +%{_bindir}/avocado-runner-exec-test-3 +%{_bindir}/avocado-runner-exec-test +%{_bindir}/avocado-runner-python-unittest-%{python3_version} +%{_bindir}/avocado-runner-python-unittest-3 +%{_bindir}/avocado-runner-python-unittest +%{_bindir}/avocado-runner-avocado-instrumented-%{python3_version} +%{_bindir}/avocado-runner-avocado-instrumented-3 +%{_bindir}/avocado-runner-avocado-instrumented +%{_bindir}/avocado-runner-tap-%{python3_version} +%{_bindir}/avocado-runner-tap-3 +%{_bindir}/avocado-runner-tap +%{_bindir}/avocado-runner-requirement-asset-%{python3_version} +%{_bindir}/avocado-runner-requirement-asset-3 +%{_bindir}/avocado-runner-requirement-asset +%{_bindir}/avocado-runner-requirement-package-%{python3_version} +%{_bindir}/avocado-runner-requirement-package-3 +%{_bindir}/avocado-runner-requirement-package +%{_bindir}/avocado-runner-sysinfo-%{python3_version} +%{_bindir}/avocado-runner-sysinfo-3 +%{_bindir}/avocado-runner-sysinfo +%{_bindir}/avocado-software-manager-%{python3_version} +%{_bindir}/avocado-software-manager-3 +%{_bindir}/avocado-software-manager + + +%package -n python-avocado-common +Summary: Avocado common files +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later + +%description -n python-avocado-common +Common files (such as configuration) for the Avocado Testing Framework. + +%files -n python-avocado-common +%license LICENSE +%{_mandir}/man1/avocado.1.gz +%dir %{_docdir}/avocado +%dir %{_sharedstatedir}/avocado +%dir %{_sysconfdir}/avocado +%dir %{_sysconfdir}/avocado/sysinfo +%dir %{_sysconfdir}/avocado/scripts +%dir %{_sysconfdir}/avocado/scripts/job +%dir %{_sysconfdir}/avocado/scripts/job/pre.d +%dir %{_sysconfdir}/avocado/scripts/job/post.d +%config(noreplace) %{_sysconfdir}/avocado/sysinfo/commands +%config(noreplace) %{_sysconfdir}/avocado/sysinfo/files +%config(noreplace) %{_sysconfdir}/avocado/sysinfo/profilers +%{_sysconfdir}/avocado/scripts/job/pre.d/README +%{_sysconfdir}/avocado/scripts/job/post.d/README + + +%package -n python3-avocado-plugins-output-html +Summary: Avocado HTML report plugin +License: GPL-2.0-or-later AND MIT +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-output-html +Adds to avocado the ability to generate an HTML report at every job results +directory. It also gives the user the ability to write a report on an +arbitrary filesystem location. + +%files -n python3-avocado-plugins-output-html +%{python3_sitelib}/avocado_result_html/ +%{python3_sitelib}/avocado_framework_plugin_result_html-%{version}-py%{python3_version}.egg-info + + +%if %{with_resultsdb} +%package -n python3-avocado-plugins-resultsdb +Summary: Avocado plugin to propagate job results to ResultsDB +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-resultsdb +Allows Avocado to send job results directly to a ResultsDB +server. + +%files -n python3-avocado-plugins-resultsdb +%{python3_sitelib}/avocado_resultsdb/ +%{python3_sitelib}/avocado_framework_plugin_resultsdb-%{version}-py%{python3_version}.egg-info +%endif +# with_resultsdb + + +%package -n python3-avocado-plugins-varianter-yaml-to-mux +Summary: Avocado plugin to generate variants out of yaml files +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-varianter-yaml-to-mux +Can be used to produce multiple test variants with test parameters +defined in a yaml file(s). + +%files -n python3-avocado-plugins-varianter-yaml-to-mux +%{python3_sitelib}/avocado_varianter_yaml_to_mux/ +%{python3_sitelib}/avocado_framework_plugin_varianter_yaml_to_mux-%{version}-py%{python3_version}.egg-info + + +%package -n python3-avocado-plugins-golang +Summary: Avocado plugin for execution of golang tests +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} +Requires: golang + +%description -n python3-avocado-plugins-golang +Allows Avocado to list golang tests, and if golang is installed, +also run them. + +%files -n python3-avocado-plugins-golang +%{python3_sitelib}/avocado_golang/ +%{python3_sitelib}/avocado_framework_plugin_golang-%{version}-py%{python3_version}.egg-info +%{_bindir}/avocado-runner-golang + + +%package -n python3-avocado-plugins-varianter-pict +Summary: Varianter with combinatorial capabilities by PICT +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-varianter-pict +This plugin uses a third-party tool to provide variants created by +Pair-Wise algorithms, also known as Combinatorial Independent Testing. + +%files -n python3-avocado-plugins-varianter-pict +%{python3_sitelib}/avocado_varianter_pict/ +%{python3_sitelib}/avocado_framework_plugin_varianter_pict-%{version}-py%{python3_version}.egg-info + + +%package -n python3-avocado-plugins-varianter-cit +Summary: Varianter with Combinatorial Independent Testing capabilities +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-varianter-cit +A varianter plugin that generates variants using Combinatorial +Independent Testing (AKA Pair-Wise) algorithm developed in +collaboration with CVUT Prague. + +%files -n python3-avocado-plugins-varianter-cit +%{python3_sitelib}/avocado_varianter_cit/ +%{python3_sitelib}/avocado_framework_plugin_varianter_cit-%{version}-py%{python3_version}.egg-info + + +%package -n python3-avocado-plugins-result-upload +Summary: Avocado plugin propagate job results to a remote host +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-result-upload +This optional plugin is intended to upload the Avocado Job results to +a dedicated sever. + +%files -n python3-avocado-plugins-result-upload +%{python3_sitelib}/avocado_result_upload/ +%{python3_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python3_version}.egg-info + + +%package -n python-avocado-examples +Summary: Avocado Test Framework Example Tests +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +# documentation does not require main package, but needs to be in lock-step if present +Conflicts: python3-avocado < %{version}-%{release}, python3-avocado > %{version}-%{release} + +%description -n python-avocado-examples +The set of example tests present in the upstream tree of the Avocado framework. +Some of them are used as functional tests of the framework, others serve as +examples of how to write tests on your own. + +%files -n python-avocado-examples +%license LICENSE +%dir %{_docdir}/avocado +%{_docdir}/avocado/gdb-prerun-scripts +%{_docdir}/avocado/plugins +%{_docdir}/avocado/tests +%{_docdir}/avocado/varianter_cit +%{_docdir}/avocado/varianter_pict +%{_docdir}/avocado/wrappers +%{_docdir}/avocado/yaml_to_mux + + +%package -n python-avocado-bash +Summary: Avocado Test Framework Bash Utilities +License: GPL-2.0-or-later AND GPL-2.0-only +Requires: python-avocado-common == %{version}-%{release} + +%description -n python-avocado-bash +A small set of utilities to interact with Avocado from the Bourne +Again Shell code (and possibly other similar shells). + +%files -n python-avocado-bash +%license LICENSE +%dir %{_libexecdir}/avocado +%{_libexecdir}/avocado/avocado-bash-utils +%{_libexecdir}/avocado/avocado_debug +%{_libexecdir}/avocado/avocado_error +%{_libexecdir}/avocado/avocado_info +%{_libexecdir}/avocado/avocado_warn + + +%changelog +* Fri Jul 25 2025 Fedora Release Engineering - 92.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Jun 03 2025 Python Maint - 92.3-5 +- Rebuilt for Python 3.14 + +* Mon Jan 20 2025 Miro Hrončok - 92.3-4 +- Loosen the PyYAML version requirement in python3-avocado-plugins-varianter-yaml-to-mux + +* Mon Jan 20 2025 Cleber Rosa - 92.3-3 +- convert remaining licenses to SPDX + +* Sat Jan 18 2025 Fedora Release Engineering - 92.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Mon Aug 19 2024 Cleber Rosa - 92.3-1 +- Updated to 92.3 +- Support building and running under Python 3.13 for F42 +- Removed patch from 92.1 as its present in 92.3 + +* Fri Jul 26 2024 Miroslav Suchý - 92.1-8 +- convert license to SPDX + +* Fri Jul 19 2024 Fedora Release Engineering - 92.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jun 07 2024 Python Maint - 92.1-6 +- Rebuilt for Python 3.13 + +* Mon Jan 29 2024 Fedora Release Engineering - 92.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 26 2024 Fedora Release Engineering - 92.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 92.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jul 21 2023 Fedora Release Engineering - 92.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Mon Jul 17 2023 Cleber Rosa - 92.1-1 +- Updated to 92.1 +- Support building and running under Python 3.12 for F39 + +* Wed Jun 14 2023 Python Maint - 92.0-3 +- Rebuilt for Python 3.12 + +* Fri Jan 20 2023 Fedora Release Engineering - 92.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Aug 9 2022 Cleber Rosa - 92.0-1 +- Use selftests/check.py job instead of more limited selftests/run +- Included avocado-runner-sysinfo, avocado-runner-requirement-package, + avocado-runner-requirement-asset and avocado-runner-dry-run and + avocado-runner-golang executables +- Removed avocado-runner-exec executable +- Removed loader_yaml and glib plugin packages + +* Fri Jul 22 2022 Fedora Release Engineering - 82.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jun 21 2022 Python Maint - 82.0-6 +- Rebuilt for Python 3.11 + +* Fri Jan 21 2022 Fedora Release Engineering - 82.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 28 2021 Merlin Mathesius - 82.0-4 +- Loosen jinja2 version requirement to fix FTBFS in Rawhide + +* Fri Jul 23 2021 Fedora Release Engineering - 82.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Mar 18 2021 Merlin Mathesius - 82.0-2 +- Drop obsolete packages from BuildRequires +- Generate man page directly using 'rst2man' rather than requiring 'make' +- Adjust PATH to make sure self-tests find internal modules +- Spec file cleanup following package review. + +* Mon Sep 14 2020 Cleber Rosa - 82.0-1 +- Sync with upstream release 82.0. +- Removed python libvirt depedency as the vm runner has been removed + upstream +- Dropped configuration files to sync with upstream which made them + optional and doesn't ship them anymore +- Add on extra character to short commit to sync with upstream + +* Sat Jun 6 2020 Cleber Rosa - 80.0-1 +- Sync with upstream release 80.0. +- Dropped use of custom avocado command for tests +- Do not build deprecated runners + +* Tue May 12 2020 Cleber Rosa - 79.0-1 +- Sync with upstream release 79.0. +- Added Python's user base bin dir to the PATH environment variable + while running tests, so that avocado-runner-* scripts can be found +- Moved comment to new lines closing the conditionals, to avoid + errors from rpmlint and rpmbuild + +* Wed Apr 15 2020 Merlin Mathesius - 78.0-1 +- Sync with upstream release 78.0. + +* Tue Mar 17 2020 Merlin Mathesius - 77.0-1 +- Sync with upstream release 77.0. + +* Mon Mar 09 2020 Merlin Mathesius - 76.0-1 +- Sync with upstream release 76.0. + +* Mon Jan 20 2020 Merlin Mathesius - 75.1-1 +- Sync with upstream release 75.1. + +* Mon Dec 23 2019 Merlin Mathesius - 74.0-1 +- Sync with upstream release 74.0. + +* Wed Nov 27 2019 Merlin Mathesius - 73.0-1 +- Sync with upstream release 73.0. +- Adjustments to build for RHEL 8. + +* Wed Oct 02 2019 Merlin Mathesius - 72.0-1 +- Sync with upstream release 72.0. + +* Wed Aug 28 2019 Merlin Mathesius - 71.0-1 +- Sync with upstream release 71.0. + +* Wed Jun 26 2019 Merlin Mathesius - 70.0-1 +- Sync with upstream release 70.0. +- Drop all Python 2 support from SPEC file. + +* Wed May 22 2019 Merlin Mathesius - 69.0-4 +- pyliblzma is Python 2-only and no longer available as of F31. +- Unversioned executables should now be Python 3. + +* Mon May 20 2019 Merlin Mathesius - 69.0-3 +- Drop Python 2 support from F31 and RHEL8 onward. +- Disable components dependent upon Fiber in Fedora 31 and later, + since avocado is currently incompatible with the new Fiber API. + +* Tue Mar 19 2019 Merlin Mathesius - 69.0-2 +- python2-sphinx is no longer available or needed as of F31 + +* Wed Feb 27 2019 Merlin Mathesius - 69.0-1 +- Sync with upstream release 69.0. + +* Fri Feb 22 2019 Merlin Mathesius - 68.0-1 +- Sync with upstream release 68.0. + +* Thu Jan 31 2019 Merlin Mathesius - 67.0-1 +- Sync with upstream release 67.0. +- genisoimage, libcdio, and psmisc added as build deps so iso9660 tests run. +- Replace pystache requirement with jinja2. +- glibc-all-langpacks added as build dep for F30+ so vmimage tests run. +- python2-resultsdb_api package has been removed in F30 so + python2-avocado-plugins-resultsdb was also disabled. + +* Wed Nov 21 2018 Merlin Mathesius - 66.0-1 +- Sync with upstream release 66.0. +- python2-pycdlib package has been removed in F30 as part of + https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal + +* Thu Oct 04 2018 Merlin Mathesius - 65.0-1 +- Sync with upstream release 65.0. + +* Tue Aug 28 2018 Merlin Mathesius - 64.0-1 +- Sync with upstream release 64.0. + +* Thu Jul 26 2018 Merlin Mathesius - 63.0-2 +- Added missing python[2]-enum34 requirement. + +* Mon Jul 23 2018 Merlin Mathesius - 63.0-1 +- Sync with upstream release 63.0. (BZ#1602175) + Include upstream patches needed to build for Rawhide. + +* Wed Jun 13 2018 Merlin Mathesius - 62.0-1 +- Sync with upstream release 62.0. (BZ#1590572) +- Correct libvirt dependency for EPEL7/RHEL7 + +* Thu May 17 2018 Merlin Mathesius - 61.0-1 +- Sync with upstream release 61.0. +- Packaging updates for Python 3. +- Reorganize SPEC file. + +* Mon Apr 9 2018 Cleber Rosa - 52.1-2 +- Added Fedora CI tests + +* Tue Apr 03 2018 Merlin Mathesius - 52.1-1 +- Sync with upstream release 52.1 (LTS series). +- Correct deprecated use of unversioned python. + +* Mon Mar 26 2018 Iryna Shcherbina - 52.0-5 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Fri Feb 09 2018 Fedora Release Engineering - 52.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Aug 09 2017 Merlin Mathesius - 52.0-3 +- Fix FTBFS error by disabling selfcheck producing false failures +- Update SPEC to use pkgname instead of srcname macro where appropriate + +* Thu Jul 27 2017 Fedora Release Engineering - 52.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Jun 29 2017 Merlin Mathesius - 52.0-1 +- Sync with upstream release 52.0. (BZ#1465409) + +* Wed Jun 14 2017 Merlin Mathesius - 51.0-1 +- Sync with upstream release 51.0. (BZ#1460837) +- Disable selftests when libvirt may not be available. + +* Wed May 17 2017 Merlin Mathesius - 50.0-1 +- Sync with upstream release 50.0. (BZ#1431413) +- Be explicit about selftest level run on check. + +* Tue Apr 25 2017 Merlin Mathesius - 49.0-1 +- Sync with upstream release 49.0. (BZ#1431413) + +* Tue Apr 18 2017 Merlin Mathesius - 48.0-1 +- Sync with upstream release 48.0. (BZ#1431413) +- Allow rel_build macro to be defined outside of the SPEC file. + +* Mon Mar 27 2017 Merlin Mathesius - 47.0-1 +- Sync with upstream release 47.0. +- Enable self-tests during build. +- Add example test to be run by Taskotron. + +* Mon Feb 27 2017 Merlin Mathesius - 46.0-2 +- Incorporate upstream SPEC file changes to split plugins into subpackages. +- Remove obsolete CC-BY-SA license, which went away with the halflings font. + +* Tue Feb 14 2017 Merlin Mathesius - 46.0-1 +- Sync with upstream release 46.0. +- Remove halflings license since font was removed from upstream. +- SPEC updates to easily switch between release and snapshot builds. + +* Sat Feb 11 2017 Fedora Release Engineering - 43.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jan 10 2017 Merlin Mathesius - 43.0-7 +- SPEC updates to build and install for EPEL. + +* Mon Nov 21 2016 Merlin Mathesius - 43.0-6 +- Initial packaging for Fedora. diff --git a/sources b/sources new file mode 100644 index 0000000..4a738a2 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (avocado-92.3.tar.gz) = 97a0c113bc826537a02ebf6efcd7cf49b505a93e5fd9686c3a4c7e70902f2d367f78eb2fb23ddf9253b97f45e27b2e328fd6bd1c420ecbeb59e25e991b29c262 diff --git a/tests/gdbtest.py b/tests/gdbtest.py new file mode 100755 index 0000000..c0cdc55 --- /dev/null +++ b/tests/gdbtest.py @@ -0,0 +1,347 @@ +import os + +from avocado import Test +from avocado.utils import gdb, genio, process + + +class GdbTest(Test): + + """ + Execute the gdb test + + :avocado: tags=requires_c_compiler + """ + + VALID_CMDS = ["-list-target-features", + "-break-info", + "-break-list", + "-thread-info", + "-stack-info-frame", + "-stack-info-depth"] + + INVALID_CMDS = ["-foobar", + "-magic8ball", + "-find-me-the-bug", + "-auto-debug-it"] + + def setUp(self): + self.return99_binary_path = os.path.join(self.teststmpdir, 'return99') + if not os.path.exists(self.return99_binary_path): + return99_source_path = self.get_data('return99.c') + if return99_source_path is None: + self.cancel('Test is missing data file "return99.c"') + process.system(f'gcc -O0 -g {return99_source_path} -o {self.return99_binary_path}') + + self.segfault_binary_path = os.path.join(self.teststmpdir, 'segfault') + if not os.path.exists(self.segfault_binary_path): + segfault_source_path = self.get_data('segfault.c') + if segfault_source_path is None: + self.cancel('Test is missing data file "segfault.c"') + process.system(f'gcc -O0 -g {segfault_source_path} -o {self.segfault_binary_path}') + + @staticmethod + def is_process_alive(process): # pylint: disable=W0621 + """ + Checks if a process is still alive + + :param process: a :class:`subprocess.POpen` instance + :type process: :class:`subprocess.POpen` + :returns: True or False + :rtype: bool + """ + return process.poll() is None + + def test_start_exit(self): + """ + Tests execution of multiple GDB instances without any blocking or race + """ + self.log.info("Testing execution of multiple GDB instances") + process_count = 10 + gdb_instances = [] + for i in range(0, process_count): + gdb_instances.append(gdb.GDB()) + + for i in range(0, process_count): + self.assertEqual(gdb_instances[i].exit(), 0) + + def test_existing_commands_raw(self): + """ + Tests the GDB response to commands that exist and to those that do not + """ + g = gdb.GDB() + self.log.info("Testing existing (valid) GDB commands using raw commands") + for cmd in self.VALID_CMDS: + info_cmd = f"-info-gdb-mi-command {cmd[1:]}" + r = g.cmd(info_cmd) + self.assertEqual(r.result.result.command.exists, 'true') + + self.log.info("Testing non-existing (invalid) GDB commands using raw " + "commands") + for cmd in self.INVALID_CMDS: + info_cmd = f"-info-gdb-mi-command {cmd[1:]}" + r = g.cmd(info_cmd) + self.assertEqual(r.result.result.command.exists, 'false') + + def test_existing_commands(self): + g = gdb.GDB() + + self.log.info("Testing existing (valid) GDB commands using utility " + "methods") + for cmd in self.VALID_CMDS: + self.assertTrue(g.cmd_exists(cmd)) + g.cmd(cmd) + + self.log.info("Testing non-existing (invalid) GDB commands using " + "utility methods") + for cmd in self.INVALID_CMDS: + self.assertFalse(g.cmd_exists(cmd)) + + def test_load_set_breakpoint_run_exit_raw(self): + """ + Test a common GDB cycle using raw commands: load, set break, run, exit + """ + self.log.info("Testing that GDB loads a file and sets a breakpoint") + g = gdb.GDB() + + file_cmd = f"-file-exec-and-symbols {self.return99_binary_path}" + r = g.cmd(file_cmd) + self.assertEqual(r.result.class_, 'done') + + break_cmd = "-break-insert 5" + r = g.cmd(break_cmd) + self.assertEqual(r.result.class_, 'done') + self.assertEqual(r.result.result.bkpt.number, '1') + self.assertEqual(r.result.result.bkpt.enabled, 'y') + + break_del_cmd = "-break-delete 1" + r = g.cmd(break_del_cmd) + self.assertEqual(r.result.class_, 'done') + + run_cmd = "-exec-run" + r = g.cmd(run_cmd) + self.assertEqual(r.result.class_, 'running') + + g.cmd("-gdb-exit") + self.assertEqual(g.process.wait(), 0) + + def test_load_set_breakpoint_run_exit(self): + """ + Test a common GDB cycle: load, set break, delete break, run, exit + """ + self.log.info("Testing a common GDB cycle") + g = gdb.GDB() + g.set_file(self.return99_binary_path) + g.set_break("5") + g.del_break(1) + g.run() + g.exit() + + def test_generate_core(self): + """ + Load a file that will cause a segfault and produce a core dump + """ + self.log.info("Testing that a core dump will be generated") + + g = gdb.GDB() + file_cmd = f"-file-exec-and-symbols {self.segfault_binary_path}" + r = g.cmd(file_cmd) + self.assertEqual(r.result.class_, 'done') + + run_cmd = "-exec-run" + r = g.cmd(run_cmd) + self.assertEqual(r.result.class_, 'running') + + other_messages = g.read_until_break() + core_path = None + for msg in other_messages: + parsed_msg = gdb.parse_mi(msg.decode()) + if (hasattr(parsed_msg, 'class_') and + (parsed_msg.class_ == 'stopped') and + (parsed_msg.result.signal_name == 'SIGSEGV')): + core_path = f"{self.segfault_binary_path}.core" + gcore_cmd = f'gcore {core_path}' + gcore_cmd = gdb.encode_mi_cli(gcore_cmd) + r = g.cmd(gcore_cmd) + self.assertEqual(r.result.class_, 'done') + + self.assertTrue(os.path.exists(core_path)) + g.exit() + + def test_set_multiple_break(self): + """ + Tests that multiple breakpoints do not interfere with each other + """ + self.log.info("Testing setting multiple breakpoints") + g = gdb.GDB() + g.set_file(self.return99_binary_path) + g.set_break('empty') + g.set_break('7') + g.exit() + + def test_disconnect_raw(self): + """ + Connect/disconnect repeatedly from a remote debugger using raw commands + """ + self.log.info("Testing connecting and disconnecting repeatedly using " + "raw commands") + s = gdb.GDBServer() + g = gdb.GDB() + + # Do 100 cycle of target (kind of connects) and disconnects + for _ in range(0, 100): + cmd = f'-target-select extended-remote :{s.port}' + r = g.cmd(cmd) + self.assertEqual(r.result.class_, 'connected') + r = g.cmd('-target-disconnect') + self.assertEqual(r.result.class_, 'done') + + # manual server shutdown + cmd = f'-target-select extended-remote :{s.port}' + r = g.cmd(cmd) + self.assertEqual(r.result.class_, 'connected') + r = g.cli_cmd('monitor exit') + self.assertEqual(r.result.class_, 'done') + + g.exit() + s.exit() + + def test_disconnect(self): + """ + Connect/disconnect repeatedly from a remote debugger using utilities + """ + self.log.info("Testing connecting and disconnecting repeatedly") + s = gdb.GDBServer() + g = gdb.GDB() + + for _ in range(0, 100): + r = g.connect(s.port) + self.assertEqual(r.result.class_, 'connected') + r = g.disconnect() + self.assertEqual(r.result.class_, 'done') + + g.exit() + s.exit() + + def test_remote_exec(self): + """ + Tests execution on a remote target + """ + self.log.info("Testing execution on a remote target") + hit_breakpoint = False + + s = gdb.GDBServer() + g = gdb.GDB() + + cmd = f'-file-exec-and-symbols {self.return99_binary_path}' + r = g.cmd(cmd) + self.assertEqual(r.result.class_, 'done') + + cmd = f'set remote exec-file {self.return99_binary_path}' + r = g.cmd(cmd) + self.assertEqual(r.result.class_, 'done') + + cmd = f"-break-insert {'main'}" + r = g.cmd(cmd) + self.assertEqual(r.result.class_, 'done') + + r = g.cmd('-exec-run') + + other_messages = g.read_until_break() + for msg in other_messages: + parsed_msg = gdb.parse_mi(msg.decode()) + if (hasattr(parsed_msg, 'class_') and + parsed_msg.class_ == 'stopped' and + parsed_msg.result.reason == 'breakpoint-hit'): + hit_breakpoint = True + + self.assertTrue(hit_breakpoint) + g.exit() + s.exit() + + def test_stream_messages(self): + """ + Tests if the expected response appears in the result stream messages + """ + self.log.info("Testing that messages appears in the result stream") + g = gdb.GDB() + r = g.cmd("-gdb-version") + self.assertIn("GNU GPL version", r.get_stream_messages_text()) + + def test_connect_multiple_clients(self): + """ + Tests two or more connections to the same server raise an exception + """ + self.log.info("Testing that multiple clients cannot connect at once") + s = gdb.GDBServer() + c1 = gdb.GDB() + c1.connect(s.port) + c2 = gdb.GDB() + with self.assertRaises(gdb.UnexpectedResponseError): + c2.connect(s.port) + s.exit() + + def test_server_exit(self): + """ + Tests that the server is shutdown by using a monitor exit command + """ + self.log.info("Testing that a single server exits cleanly") + s = gdb.GDBServer() + s.exit() + self.assertFalse(self.is_process_alive(s.process)) + + def test_multiple_servers(self): + """ + Tests multiple server instances without any blocking or race condition + """ + self.log.info("Testing execution of multiple GDB server instances") + process_count = 10 + server_instances = [] + for i in range(0, process_count): + s = gdb.GDBServer() + c = gdb.GDB() + c.connect(s.port) + c.cmd('show-version') + c.disconnect() + server_instances.append(s) + + for i in range(0, process_count): + self.assertTrue(self.is_process_alive(server_instances[i].process)) + server_instances[i].exit() + self.assertFalse(self.is_process_alive(server_instances[i].process)) + + def test_server_stderr(self): + self.log.info('Testing server stderr collection') + s = gdb.GDBServer() + s.exit() + self.assertTrue(os.path.exists(s.stderr_path)) + + stderr_lines = genio.read_all_lines(s.stderr_path) + listening_line = f"Listening on port {s.port}" + self.assertIn(listening_line, stderr_lines) + + def test_server_stdout(self): + self.log.info('Testing server stdout/stderr collection') + s = gdb.GDBServer() + c = gdb.GDB() + c.connect(s.port) + c.set_file(self.return99_binary_path) + c.run() + s.exit() + + self.assertTrue(os.path.exists(s.stdout_path)) + self.assertTrue(os.path.exists(s.stderr_path)) + + stdout_lines = genio.read_all_lines(s.stdout_path) + self.assertIn("return 99", stdout_lines) + + @staticmethod + def test_remote(): + """ + Tests GDBRemote interaction with a GDBServer + """ + s = gdb.GDBServer() + r = gdb.GDBRemote('127.0.0.1', s.port) + r.connect() + r.cmd(b"qSupported") + r.cmd(b"qfThreadInfo") + s.exit() diff --git a/tests/gdbtest.py.data/return99.c b/tests/gdbtest.py.data/return99.c new file mode 100644 index 0000000..bf14935 --- /dev/null +++ b/tests/gdbtest.py.data/return99.c @@ -0,0 +1,47 @@ +#include +#include + +void empty() +{ +} + +void write_stdout() +{ + fprintf(stdout, "testing output to stdout\n"); +} + +void write_stderr() +{ + fprintf(stderr, "testing output to stderr\n"); +} + +int forkme() +{ + int pid; + + pid = fork(); + if (pid != 0) + pid = fork(); + if (pid != 0) + pid = fork(); + + return pid; +} + +int main(int argc, char *argv[]) +{ + int exit_status = 99; + + if (argc > 1) + exit_status = atoi(argv[1]); + + empty(); + write_stdout(); + write_stderr(); + + if (forkme()) { + fprintf(stdout, "return %i\n", exit_status); + } + + return exit_status; +} diff --git a/tests/gdbtest.py.data/segfault.c b/tests/gdbtest.py.data/segfault.c new file mode 100644 index 0000000..a685f86 --- /dev/null +++ b/tests/gdbtest.py.data/segfault.c @@ -0,0 +1,9 @@ +#include + +int main() +{ + int *p = NULL; + *p = 0xdead; + + return 0; +} diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..7ff61ce --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,25 @@ +- hosts: localhost + roles: + - role: standard-test-avocado + tests: + - gdbtest.py:GdbTest.test_start_exit + - gdbtest.py:GdbTest.test_existing_commands_raw + - gdbtest.py:GdbTest.test_existing_commands + - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit_raw + - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit + - gdbtest.py:GdbTest.test_generate_core + - gdbtest.py:GdbTest.test_set_multiple_break + - gdbtest.py:GdbTest.test_disconnect_raw + - gdbtest.py:GdbTest.test_disconnect + - gdbtest.py:GdbTest.test_remote_exec + - gdbtest.py:GdbTest.test_stream_messages + - gdbtest.py:GdbTest.test_connect_multiple_clients + - gdbtest.py:GdbTest.test_server_exit + - gdbtest.py:GdbTest.test_multiple_servers + - gdbtest.py:GdbTest.test_server_stderr + - gdbtest.py:GdbTest.test_server_stdout + - gdbtest.py:GdbTest.test_remote + required_packages: + - gcc + - gdb + - gdb-gdbserver From ee5cf26e92cedda66aa656f5cb9dc608c114953d Mon Sep 17 00:00:00 2001 From: Cleber Rosa Date: Tue, 14 Oct 2025 12:55:50 -0400 Subject: [PATCH 51/51] Sync with upstream release 112.0 Signed-off-by: Cleber Rosa --- .gitignore | 1 + python-avocado.spec | 211 ++++++++++++++++++++++++++++++++------------ sources | 2 +- tests/tests.yml | 10 ++- 4 files changed, 163 insertions(+), 61 deletions(-) diff --git a/.gitignore b/.gitignore index bd8b053..00ef136 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ /avocado-92.1.tar.gz /avocado-92.1-python312.patch /avocado-92.3.tar.gz +/avocado-112.0.tar.gz diff --git a/python-avocado.spec b/python-avocado.spec index 4c1803a..8dd8cf4 100644 --- a/python-avocado.spec +++ b/python-avocado.spec @@ -9,10 +9,10 @@ %global gittar avocado-%{version}.tar.gz %else %if ! 0%{?commit:1} - %global commit 5b21f030001d6eed69c0357cc45b6128c73dc860 + %global commit e4ede79f097dcc1dbd30e43ffe3b7daf52d2204d %endif %if ! 0%{?commit_date:1} - %global commit_date 20240819 + %global commit_date 20251010 %endif %global shortcommit %(c=%{commit};echo ${c:0:9}) %global gitrel .%{commit_date}git%{shortcommit} @@ -24,18 +24,20 @@ # the functional tests are time and resource sensitive and can # cause race conditions and random build failures. They are # enabled by default. -%global with_tests 1 +# You can disable them with rpmbuild ... --without tests +%bcond_without tests -# resultsdb is not available for RHEL -%if ! 0%{?rhel} +# Only Fedora 36 and later have a suitable python3-resutlsdb_api +# package +%if 0%{?fedora} >= 36 %global with_resultsdb 1 %else %global with_resultsdb 0 %endif Name: python-avocado -Version: 92.3 -Release: 6%{?gitrel}%{?dist} +Version: 112.0 +Release: 1%{?gitrel}%{?dist} Summary: Framework with tools and libraries for Automated Testing # Found licenses: # avocado/core/tapparser.py: MIT @@ -45,7 +47,7 @@ Summary: Framework with tools and libraries for Automated Testing # optional_plugins/html/avocado_result_html/templates/bootstrap.min.js: MIT # selftests/.data/jenkins-junit.xsd: MIT # Other files: GPLv2 and GPLv2+ -License: GPL-2.0-or-later AND GPL-2.0-only AND MIT +License: GPLv2+ and GPLv2 and MIT URL: https://avocado-framework.github.io/ Source0: https://github.com/avocado-framework/avocado/archive/%{gitref}/%{gittar} BuildArch: noarch @@ -58,23 +60,35 @@ BuildRequires: python3-jinja2 BuildRequires: python3-lxml BuildRequires: python3-psutil BuildRequires: python3-setuptools +%if ! 0%{?rhel} +BuildRequires: python-aexpect +%endif %if %{with_resultsdb} BuildRequires: python3-resultsdb_api BuildRequires: python3-pycdlib %endif -%if 0%{?with_tests} +%if %{with tests} +BuildRequires: python3-jsonschema +%if ! 0%{?rhel} >= 9 BuildRequires: genisoimage +%endif BuildRequires: libcdio BuildRequires: psmisc %if ! 0%{?rhel} BuildRequires: perl-Test-Harness +BuildRequires: python3-xmlschema +BuildRequires: ansible-core %endif BuildRequires: glibc-all-langpacks BuildRequires: python3-netifaces BuildRequires: python3-yaml +BuildRequires: nmap-ncat +BuildRequires: gcc +BuildRequires: gdb +BuildRequires: gdb-gdbserver %endif -# with_tests +# with tests %description Avocado is a set of tools and libraries (what people call @@ -84,14 +98,12 @@ these days a framework) to perform automated testing. %prep %setup -q -n avocado-%{gitref} %if 0%{?rhel} -sed -e "s/'PyYAML>=4.2b2'/'PyYAML>=3.12'/" -i optional_plugins/varianter_yaml_to_mux/setup.py +sed -e 's/"PyYAML>=4.2b2"/"PyYAML>=3.12"/' -i optional_plugins/varianter_yaml_to_mux/setup.py +%endif +%if 0%{?fedora} >= 42 +sed -e '/"markupsafe<3.0.0"/d' -i optional_plugins/html/setup.py +sed -e '/"markupsafe<3.0.0"/d' -i optional_plugins/ansible/setup.py %endif -# drop unnecessary install requirement -sed -e "s/'markupsafe<2.0.0', //" -i optional_plugins/html/setup.py -# loosen jinja2 version requirement -sed -e "s/'jinja2<3.0.0'/'jinja2'/" -i optional_plugins/html/setup.py -# loosen pyyaml version requirement -sed -e "s/'PyYAML>=4.2b2,<6.0.2'/'PyYAML>=4.2b2'/" -i optional_plugins/varianter_yaml_to_mux/setup.py %build %py3_build @@ -109,6 +121,11 @@ popd pushd optional_plugins/golang %py3_build popd +%if ! 0%{?rhel} +pushd optional_plugins/ansible + %py3_build +popd +%endif pushd optional_plugins/varianter_pict %py3_build popd @@ -118,22 +135,33 @@ popd pushd optional_plugins/result_upload %py3_build popd +pushd optional_plugins/mail + %py3_build +popd +%if ! 0%{?rhel} +pushd optional_plugins/spawner_remote + %py3_build +popd +%endif rst2man man/avocado.rst man/avocado.1 %install %py3_install for exe in \ avocado \ - avocado-runner \ avocado-runner-noop \ avocado-runner-dry-run \ avocado-runner-exec-test \ avocado-runner-python-unittest \ avocado-runner-avocado-instrumented \ avocado-runner-tap \ - avocado-runner-requirement-asset \ - avocado-runner-requirement-package \ + avocado-runner-asset \ + avocado-runner-package \ + avocado-runner-pip \ + avocado-runner-podman-image \ avocado-runner-sysinfo \ + avocado-runner-vmimage \ + avocado-external-runner \ avocado-software-manager do mv %{buildroot}%{_bindir}/$exe %{buildroot}%{_bindir}/$exe-%{python3_version} @@ -145,9 +173,6 @@ done rm -rf %{buildroot}%{python3_sitelib}/avocado/etc # ditto for libexec files rm -rf %{buildroot}%{python3_sitelib}/avocado/libexec -# adjust permissions for file containing shebang line needed for -# spawning tasks in podman containers -chmod -c +x %{buildroot}%{python3_sitelib}/avocado/core/nrunner.py pushd optional_plugins/html %py3_install popd @@ -162,6 +187,11 @@ popd pushd optional_plugins/golang %py3_install popd +%if ! 0%{?rhel} +pushd optional_plugins/ansible + %py3_install +popd +%endif pushd optional_plugins/varianter_pict %py3_install popd @@ -171,6 +201,14 @@ popd pushd optional_plugins/result_upload %py3_install popd +pushd optional_plugins/mail + %py3_install +popd +%if ! 0%{?rhel} +pushd optional_plugins/spawner_remote + %py3_install +popd +%endif # cleanup plugin test cruft rm -rf %{buildroot}%{python3_sitelib}/tests mkdir -p %{buildroot}%{_sysconfdir}/avocado @@ -194,12 +232,12 @@ cp -r examples/plugins %{buildroot}%{_docdir}/avocado/plugins cp -r examples/tests %{buildroot}%{_docdir}/avocado/tests cp -r examples/varianter_cit %{buildroot}%{_docdir}/avocado/varianter_cit cp -r examples/varianter_pict %{buildroot}%{_docdir}/avocado/varianter_pict -cp -r examples/wrappers %{buildroot}%{_docdir}/avocado/wrappers cp -r examples/yaml_to_mux %{buildroot}%{_docdir}/avocado/yaml_to_mux +mkdir -p %{buildroot}%{_datarootdir}/avocado +mv %{buildroot}%{python3_sitelib}/avocado/schemas %{buildroot}%{_datarootdir}/avocado find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec chmod -c -x {} ';' - -%if 0%{?with_tests} +%if %{with tests} %check # LANG: to make the results predictable, we pin the language # that is used during test execution. @@ -210,9 +248,7 @@ find %{buildroot}%{_docdir}/avocado -type f -name '*.py' -exec chmod -c -x {} '; PYTHONPATH=%{buildroot}%{python3_sitelib}:. \ LANG=en_US.UTF-8 \ AVOCADO_CHECK_LEVEL=0 \ - %{python3} selftests/check.py --job-api --nrunner-interface \ - --unit --jobs --functional --optional-plugins \ - --disable-plugin-checks robot + %{python3} selftests/check.py --skip static-checks --disable-plugin-checks robot %endif @@ -238,9 +274,6 @@ these days a framework) to perform automated testing. %{_bindir}/avocado-%{python3_version} %{_bindir}/avocado-3 %{_bindir}/avocado -%{_bindir}/avocado-runner-%{python3_version} -%{_bindir}/avocado-runner-3 -%{_bindir}/avocado-runner %{_bindir}/avocado-runner-noop-%{python3_version} %{_bindir}/avocado-runner-noop-3 %{_bindir}/avocado-runner-noop @@ -259,24 +292,35 @@ these days a framework) to perform automated testing. %{_bindir}/avocado-runner-tap-%{python3_version} %{_bindir}/avocado-runner-tap-3 %{_bindir}/avocado-runner-tap -%{_bindir}/avocado-runner-requirement-asset-%{python3_version} -%{_bindir}/avocado-runner-requirement-asset-3 -%{_bindir}/avocado-runner-requirement-asset -%{_bindir}/avocado-runner-requirement-package-%{python3_version} -%{_bindir}/avocado-runner-requirement-package-3 -%{_bindir}/avocado-runner-requirement-package +%{_bindir}/avocado-runner-asset-%{python3_version} +%{_bindir}/avocado-runner-asset-3 +%{_bindir}/avocado-runner-asset +%{_bindir}/avocado-runner-package-%{python3_version} +%{_bindir}/avocado-runner-package-3 +%{_bindir}/avocado-runner-package +%{_bindir}/avocado-runner-pip-%{python3_version} +%{_bindir}/avocado-runner-pip-3 +%{_bindir}/avocado-runner-pip +%{_bindir}/avocado-runner-podman-image-%{python3_version} +%{_bindir}/avocado-runner-podman-image-3 +%{_bindir}/avocado-runner-podman-image %{_bindir}/avocado-runner-sysinfo-%{python3_version} %{_bindir}/avocado-runner-sysinfo-3 %{_bindir}/avocado-runner-sysinfo +%{_bindir}/avocado-runner-vmimage-%{python3_version} +%{_bindir}/avocado-runner-vmimage-3 +%{_bindir}/avocado-runner-vmimage %{_bindir}/avocado-software-manager-%{python3_version} %{_bindir}/avocado-software-manager-3 %{_bindir}/avocado-software-manager +%{_bindir}/avocado-external-runner-%{python3_version} +%{_bindir}/avocado-external-runner-3 +%{_bindir}/avocado-external-runner %package -n python-avocado-common Summary: Avocado common files -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +License: GPLv2+ %description -n python-avocado-common Common files (such as configuration) for the Avocado Testing Framework. @@ -292,6 +336,10 @@ Common files (such as configuration) for the Avocado Testing Framework. %dir %{_sysconfdir}/avocado/scripts/job %dir %{_sysconfdir}/avocado/scripts/job/pre.d %dir %{_sysconfdir}/avocado/scripts/job/post.d +%dir %{_sharedstatedir}/avocado/data +%dir %{_datarootdir}/avocado +%dir %{_datarootdir}/avocado/schemas +%{_datarootdir}/avocado/schemas/* %config(noreplace) %{_sysconfdir}/avocado/sysinfo/commands %config(noreplace) %{_sysconfdir}/avocado/sysinfo/files %config(noreplace) %{_sysconfdir}/avocado/sysinfo/profilers @@ -301,7 +349,7 @@ Common files (such as configuration) for the Avocado Testing Framework. %package -n python3-avocado-plugins-output-html Summary: Avocado HTML report plugin -License: GPL-2.0-or-later AND MIT +License: GPLv2+ and MIT Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-output-html @@ -317,8 +365,7 @@ arbitrary filesystem location. %if %{with_resultsdb} %package -n python3-avocado-plugins-resultsdb Summary: Avocado plugin to propagate job results to ResultsDB -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +License: GPLv2+ Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-resultsdb @@ -334,8 +381,7 @@ server. %package -n python3-avocado-plugins-varianter-yaml-to-mux Summary: Avocado plugin to generate variants out of yaml files -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +License: GPLv2+ Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-varianter-yaml-to-mux @@ -349,8 +395,7 @@ defined in a yaml file(s). %package -n python3-avocado-plugins-golang Summary: Avocado plugin for execution of golang tests -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +License: GPLv2+ Requires: python3-avocado == %{version}-%{release} Requires: golang @@ -364,10 +409,27 @@ also run them. %{_bindir}/avocado-runner-golang +%if ! 0%{?rhel} +%package -n python3-avocado-plugins-ansible +Summary: Avocado Ansible Dependency plugin +License: GPLv2+ +Requires: python3-avocado == %{version}-%{release} +Requires: ansible-core + +%description -n python3-avocado-plugins-ansible +Adds to Avocado the ability to use ansible modules as dependecies for +tests. + +%files -n python3-avocado-plugins-ansible +%{python3_sitelib}/avocado_ansible* +%{python3_sitelib}/avocado_framework_plugin_ansible* +%{_bindir}/avocado-runner-ansible-module +%endif + + %package -n python3-avocado-plugins-varianter-pict Summary: Varianter with combinatorial capabilities by PICT -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +License: GPLv2+ Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-varianter-pict @@ -381,8 +443,7 @@ Pair-Wise algorithms, also known as Combinatorial Independent Testing. %package -n python3-avocado-plugins-varianter-cit Summary: Varianter with Combinatorial Independent Testing capabilities -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +License: GPLv2+ Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-varianter-cit @@ -397,8 +458,7 @@ collaboration with CVUT Prague. %package -n python3-avocado-plugins-result-upload Summary: Avocado plugin propagate job results to a remote host -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +License: GPLv2+ Requires: python3-avocado == %{version}-%{release} %description -n python3-avocado-plugins-result-upload @@ -409,11 +469,36 @@ a dedicated sever. %{python3_sitelib}/avocado_result_upload/ %{python3_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python3_version}.egg-info +%package -n python3-avocado-plugins-result-mail +Summary: Avocado Mail Notification for Jobs +License: GPLv2+ +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-result-mail +The Mail result plugin enables you to receive email notifications +for job start and completion events within the Avocado testing framework. + +%files -n python3-avocado-plugins-result-mail +%{python3_sitelib}/avocado_result_mail* +%{python3_sitelib}/avocado_framework_plugin_result_mail* + +%if ! 0%{?rhel} +%package -n python3-avocado-plugins-spawner-remote +Summary: Avocado Plugin to spawn tests on a remote host +License: GPLv2+ +Requires: python3-avocado == %{version}-%{release} + +%description -n python3-avocado-plugins-spawner-remote +This optional plugin is intended to spawn tests on a remote host. + +%files -n python3-avocado-plugins-spawner-remote +%{python3_sitelib}/avocado_spawner_remote* +%{python3_sitelib}/avocado_framework_plugin_spawner_remote* +%endif %package -n python-avocado-examples Summary: Avocado Test Framework Example Tests -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +License: GPLv2+ # documentation does not require main package, but needs to be in lock-step if present Conflicts: python3-avocado < %{version}-%{release}, python3-avocado > %{version}-%{release} @@ -430,13 +515,12 @@ examples of how to write tests on your own. %{_docdir}/avocado/tests %{_docdir}/avocado/varianter_cit %{_docdir}/avocado/varianter_pict -%{_docdir}/avocado/wrappers %{_docdir}/avocado/yaml_to_mux %package -n python-avocado-bash Summary: Avocado Test Framework Bash Utilities -License: GPL-2.0-or-later AND GPL-2.0-only +License: GPLv2+ and GPLv2 Requires: python-avocado-common == %{version}-%{release} %description -n python-avocado-bash @@ -454,6 +538,19 @@ Again Shell code (and possibly other similar shells). %changelog +* Fri Oct 10 2025 Cleber Rosa - 112.0-1 +- Sync with upstream release 112.0 +- Removed python3-elementpath build requirement +- Made the remote spawner a proper sub package +- Packaged JSON schema files +- Introduced new sub package for mail plugin +- Removed the pinning of markupsafe on Fedora 42 and later +- Packaged avocado-runner-pip +- Packaged avocado-runner-vmimage +- Provide requirements for running the functional test + nrunner.py:TaskRunStatusService.test_task_status_service_lost +- Require gcc, gdb and gdb-gdbserver for tests + * Fri Jul 25 2025 Fedora Release Engineering - 92.3-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild diff --git a/sources b/sources index 4a738a2..6494afc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (avocado-92.3.tar.gz) = 97a0c113bc826537a02ebf6efcd7cf49b505a93e5fd9686c3a4c7e70902f2d367f78eb2fb23ddf9253b97f45e27b2e328fd6bd1c420ecbeb59e25e991b29c262 +SHA512 (avocado-112.0.tar.gz) = 1872eda730f5cd28f0562732464ce14b2c7731cedb298fcc4b093a04235d26cc5e3db7f92c3ae3edcd6104ad2db4fce66fa7a6148da754e4bdb8120fa12a75a3 diff --git a/tests/tests.yml b/tests/tests.yml index 7ff61ce..be4a031 100644 --- a/tests/tests.yml +++ b/tests/tests.yml @@ -3,8 +3,8 @@ - role: standard-test-avocado tests: - gdbtest.py:GdbTest.test_start_exit - - gdbtest.py:GdbTest.test_existing_commands_raw - gdbtest.py:GdbTest.test_existing_commands + - gdbtest.py:GdbTest.test_existing_commands_raw - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit_raw - gdbtest.py:GdbTest.test_load_set_breakpoint_run_exit - gdbtest.py:GdbTest.test_generate_core @@ -15,9 +15,13 @@ - gdbtest.py:GdbTest.test_stream_messages - gdbtest.py:GdbTest.test_connect_multiple_clients - gdbtest.py:GdbTest.test_server_exit - - gdbtest.py:GdbTest.test_multiple_servers - - gdbtest.py:GdbTest.test_server_stderr - gdbtest.py:GdbTest.test_server_stdout + - gdbtest.py:GdbTest.test_server_stderr + - gdbtest.py:GdbTest.test_multiple_servers + - gdbtest.py:GdbTest.test_interactive + - gdbtest.py:GdbTest.test_interactive_args + - gdbtest.py:GdbTest.test_exit_status + - gdbtest.py:GdbTest.test_interactive_stdout - gdbtest.py:GdbTest.test_remote required_packages: - gcc