From 48c501c45fdf1792adc511eb5d0a6fe15a6abe52 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Wed, 16 Jan 2019 15:53:54 -0600 Subject: [PATCH] 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