#16 Sync 82lts branch with latest
Merged 3 years ago by merlinm. Opened 3 years ago by cleber.
rpms/ cleber/python-avocado 82lts  into  82lts

file modified
+30
@@ -0,0 +1,30 @@ 

+ /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

file added
+665
@@ -0,0 +1,665 @@ 

+ %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 gitref          %{version}

+     %global gittar          %{srcname}-%{version}.tar.gz

+ %else

+     %if ! 0%{?commit:1}

+         %global commit      e97540793998c4f24a16000465dd7fdd213bf2b9

+     %endif

+     %if ! 0%{?commit_date:1}

+         %global commit_date 20200911

+     %endif

+     %global shortcommit     %(c=%{commit};echo ${c:0:9})

+     %global gitrel          .%{commit_date}git%{shortcommit}

+     %global gitref          %{commit}

+     %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.

+ %global with_tests 1

+ 

+ # resultsdb is only available for Fedora

+ %if 0%{?fedora}

+ %global with_resultsdb 1

+ %else

+ %global with_resultsdb 0

+ %endif

+ 

+ Name: python-%{pkgname}

+ Version: 82.0

+ Release: 1%{?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

+ # 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}

+ BuildArch: noarch

+ 

+ BuildRequires: kmod

+ 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

+ %if %{with_resultsdb}

+ BuildRequires: python3-resultsdb_api

+ %endif

+ 

+ %if 0%{?with_tests}

+ BuildRequires: genisoimage

+ BuildRequires: libcdio

+ BuildRequires: psmisc

+ %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

+ %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 %{srcname}-%{gitref}

+ %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

+ 

+ %build

+ %py3_build

+ pushd optional_plugins/html

+     %py3_build

+ popd

+ pushd optional_plugins/resultsdb

+ %if %{with_resultsdb}

+     %py3_build

+ %endif

+ 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

+ pushd optional_plugins/varianter_pict

+     %py3_build

+ popd

+ pushd optional_plugins/varianter_cit

+     %py3_build

+ popd

+ pushd optional_plugins/result_upload

+     %py3_build

+ popd

+ pushd optional_plugins/glib

+     %py3_build

+ popd

+ %{__make} man

+ 

+ %install

+ %py3_install

+ for exe in \

+     avocado \

+     avocado-runner \

+     avocado-runner-noop \

+     avocado-runner-exec \

+     avocado-runner-exec-test \

+     avocado-runner-python-unittest \

+     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

+     %{__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

+ pushd optional_plugins/html

+     %py3_install

+ popd

+ pushd optional_plugins/resultsdb

+ %if %{with_resultsdb}

+     %py3_install

+ %endif

+ 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

+ pushd optional_plugins/varianter_pict

+     %py3_install

+ popd

+ pushd optional_plugins/varianter_cit

+     %py3_install

+ 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

+ %{__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

+ # 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 {} ';'

+ 

+ 

+ %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

+     # 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:$PATH LANG=en_US.UTF-8 AVOCADO_CHECK_LEVEL=0 %{__python3} selftests/run

+ %endif

+ 

+ 

+ %package -n python3-%{pkgname}

+ Summary: %{summary}

+ License: GPLv2 and MIT

+ %{?python_provide:%python_provide python3-%{pkgname}}

+ Requires: python-%{pkgname}-common == %{version}-%{release}

+ Requires: gdb

+ Requires: gdb-gdbserver

+ Requires: procps-ng

+ Requires: python3

+ 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

+ these days a framework) to perform automated testing.

+ 

+ %files -n python3-%{pkgname}

+ %license LICENSE

+ %doc 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-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

+ %{_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

+ Summary: Avocado common files

+ 

+ %description -n python-%{pkgname}-common

+ Common files (such as configuration) for the Avocado Testing Framework.

+ 

+ %files -n python-%{pkgname}-common

+ %{_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-%{pkgname}-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

+ 

+ %description -n python3-%{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 python3-%{pkgname}-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

+ 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

+ 

+ %description -n python3-%{pkgname}-plugins-resultsdb

+ Allows Avocado to send job results directly to a ResultsDB

+ server.

+ 

+ %files -n python3-%{pkgname}-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

+ 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

+ 

+ %description -n python3-%{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 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

+ 

+ 

+ %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}

+ Requires: python3-%{pkgname}-plugins-varianter-yaml-to-mux == %{version}-%{release}

+ 

+ %description -n python3-%{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 python3-%{pkgname}-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

+ Summary: Avocado plugin for execution of golang tests

+ %{?python_provide:%python_provide python3-%{pkgname}-plugins-golang}

+ Requires: python3-%{pkgname} == %{version}-%{release}

+ Requires: golang

+ 

+ %description -n python3-%{pkgname}-plugins-golang

+ Allows Avocado to list golang tests, and if golang is installed,

+ 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

+ 

+ 

+ %package -n python3-%{pkgname}-plugins-varianter-pict

+ Summary: Varianter with combinatorial capabilities by PICT

+ %{?python_provide:%python_provide python3-%{pkgname}-plugins-varianter-pict}

+ Requires: python3-%{pkgname} == %{version}-%{release}

+ 

+ %description -n python3-%{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 python3-%{pkgname}-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

+ Summary: Varianter with Combinatorial Independent Testing capabilities

+ %{?python_provide:%python_provide python3-%{pkgname}-plugins-varianter-cit}

+ Requires: python3-%{pkgname} == %{version}-%{release}

+ 

+ %description -n python3-%{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 python3-%{pkgname}-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

+ Summary: Avocado plugin propagate job results to a remote host

+ %{?python_provide:%python_provide python3-%{pkgname}-plugins-result-upload}

+ Requires: python3-%{pkgname} == %{version}-%{release}

+ 

+ %description -n python3-%{pkgname}-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

+ %{python3_sitelib}/avocado_result_upload/

+ %{python3_sitelib}/avocado_framework_plugin_result_upload-%{version}-py%{python3_version}.egg-info

+ 

+ 

+ %package -n python3-%{pkgname}-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}

+ 

+ %description -n python3-%{pkgname}-plugins-glib

+ This optional plugin is intended to list and run tests written in the

+ 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

+ 

+ 

+ %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: python3-%{pkgname} < %{version}-%{release}, python3-%{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.

+ 

+ %files -n python-%{pkgname}-examples

+ %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

+ %{_docdir}/avocado/yaml_to_mux_loader

+ 

+ 

+ %package -n python-%{pkgname}-bash

+ Summary: Avocado Test Framework Bash Utilities

+ Requires: python-%{pkgname}-common == %{version}-%{release}

+ 

+ %description -n python-%{pkgname}-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

+ %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

+ * Mon Sep 14 2020 Cleber Rosa <cleber@redhat.com> - 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 <cleber@redhat.com> - 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 <cleber@redhat.com> - 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 <mmathesi@redhat.com> - 78.0-1

+ - Sync with upstream release 78.0.

+ 

+ * Tue Mar 17 2020 Merlin Mathesius <mmathesi@redhat.com> - 77.0-1

+ - Sync with upstream release 77.0.

+ 

+ * Mon Mar 09 2020 Merlin Mathesius <mmathesi@redhat.com> - 76.0-1

+ - Sync with upstream release 76.0.

+ 

+ * Mon Jan 20 2020 Merlin Mathesius <mmathesi@redhat.com> - 75.1-1

+ - Sync with upstream release 75.1.

+ 

+ * Mon Dec 23 2019 Merlin Mathesius <mmathesi@redhat.com> - 74.0-1

+ - Sync with upstream release 74.0.

+ 

+ * Wed Nov 27 2019 Merlin Mathesius <mmathesi@redhat.com> - 73.0-1

+ - Sync with upstream release 73.0.

+ - Adjustments to build for RHEL 8.

+ 

+ * Wed Oct 02 2019 Merlin Mathesius <mmathesi@redhat.com> - 72.0-1

+ - Sync with upstream release 72.0.

+ 

+ * Wed Aug 28 2019 Merlin Mathesius <mmathesi@redhat.com> - 71.0-1

+ - Sync with upstream release 71.0.

+ 

+ * Wed Jun 26 2019 Merlin Mathesius <mmathesi@redhat.com> - 70.0-1

+ - Sync with upstream release 70.0.

+ - Drop all Python 2 support from SPEC file.

+ 

+ * Wed May 22 2019 Merlin Mathesius <mmathesi@redhat.com> - 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 <mmathesi@redhat.com> - 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 <mmathesi@redhat.com> - 69.0-2

+ - python2-sphinx is no longer available or needed as of F31

+ 

+ * Wed Feb 27 2019 Merlin Mathesius <mmathesi@redhat.com> - 69.0-1

+ - Sync with upstream release 69.0.

+ 

+ * Fri Feb 22 2019 Merlin Mathesius <mmathesi@redhat.com> - 68.0-1

+ - Sync with upstream release 68.0.

+ 

+ * Thu Jan 31 2019 Merlin Mathesius <mmathesi@redhat.com> - 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 <mmathesi@redhat.com> - 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 <mmathesi@redhat.com> - 65.0-1

+ - Sync with upstream release 65.0.

+ 

+ * Tue Aug 28 2018 Merlin Mathesius <mmathesi@redhat.com> - 64.0-1

+ - Sync with upstream release 64.0.

+ 

+ * Thu Jul 26 2018 Merlin Mathesius <mmathesi@redhat.com> - 63.0-2

+ - Added missing python[2]-enum34 requirement.

+ 

+ * Mon Jul 23 2018 Merlin Mathesius <mmathesi@redhat.com> - 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 <mmathesi@redhat.com> - 62.0-1

+ - Sync with upstream release 62.0. (BZ#1590572)

+ - Correct libvirt dependency for EPEL7/RHEL7

+ 

+ * Thu May 17 2018 Merlin Mathesius <mmathesi@redhat.com> - 61.0-1

+ - Sync with upstream release 61.0.

+ - Packaging updates for Python 3.

+ - Reorganize SPEC file.

+ 

+ * Mon Apr  9 2018 Cleber Rosa <cleber@redhat.com> - 52.1-2

+ - Added Fedora CI tests

+ 

+ * Tue Apr 03 2018 Merlin Mathesius <mmathesi@redhat.com> - 52.1-1

+ - Sync with upstream release 52.1 (LTS series).

+ - Correct deprecated use of unversioned python.

+ 

+ * Mon Mar 26 2018 Iryna Shcherbina <ishcherb@redhat.com> - 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 <releng@fedoraproject.org> - 52.0-4

+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

+ 

+ * Wed Aug 09 2017 Merlin Mathesius <mmathesi@redhat.com> - 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 <releng@fedoraproject.org> - 52.0-2

+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

+ 

+ * Thu Jun 29 2017 Merlin Mathesius <mmathesi@redhat.com> - 52.0-1

+ - Sync with upstream release 52.0. (BZ#1465409)

+ 

+ * Wed Jun 14 2017 Merlin Mathesius <mmathesi@redhat.com> - 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 <mmathesi@redhat.com> - 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 <mmathesi@redhat.com> - 49.0-1

+ - Sync with upstream release 49.0. (BZ#1431413)

+ 

+ * Tue Apr 18 2017 Merlin Mathesius <mmathesi@redhat.com> - 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 <mmathesi@redhat.com> - 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 <mmathesi@redhat.com> - 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 <mmathesi@redhat.com> - 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 <releng@fedoraproject.org> - 43.0-8

+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild

+ 

+ * Tue Jan 10 2017 Merlin Mathesius <mmathesi@redhat.com> - 43.0-7

+ - SPEC updates to build and install for EPEL.

+ 

+ * Mon Nov 21 2016 Merlin Mathesius <mmathesi@redhat.com> - 43.0-6

+ - Initial packaging for Fedora.

file modified
+1
@@ -0,0 +1,1 @@ 

+ SHA512 (avocado-82.0.tar.gz) = 099ab131b2b941602550e71507e4ca517d5d2cd5152b255edace0473c9de93aac8163a61689414b5b58f9211f58981c3c30c1c3ca8a191283f609722ce07f173

file added
+399
@@ -0,0 +1,399 @@ 

+ #!/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()

@@ -0,0 +1,47 @@ 

+ #include <stdio.h>

+ #include <stdlib.h>

+ 

+ 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;

+ }

@@ -0,0 +1,9 @@ 

+ #include <stdio.h>

+ 

+ int main()

+ {

+   int *p = NULL;

+   *p = 0xdead;

+ 

+   return 0;

+ }

file added
+29
@@ -0,0 +1,29 @@ 

+ - 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