Compare commits

...
Sign in to create a new pull request.

17 commits

Author SHA1 Message Date
Cleber Rosa
60ceb66d14 Update license format to match SPDX
Suggested-by: Miroslav Suchý <msuchy@redhat.com>
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2025-11-07 16:19:57 -05:00
Cleber Rosa
5984dca591 Sync with upstream release 112.0
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2025-10-13 18:19:40 -04:00
Cleber Rosa
9781dbb34b Sync with upstream release 102.0
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2023-07-17 19:16:12 -04:00
Cleber Rosa
f981628259 Sync with upstream release 98.0
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2022-07-16 12:41:29 -04:00
Cleber Rosa
4adc731d21 Sync gdbtest.py with latest upstream
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2022-07-16 12:41:28 -04:00
Cleber Rosa
34e099cd8b
Sync with upstream release 97.0
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2022-05-24 16:51:56 -04:00
Cleber Rosa
110dbb6393
Sync with upstream release 96.0
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2022-04-05 17:05:14 -04:00
Cleber Rosa
0df2004e57 Sync with upstream release 95.0
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2022-03-18 14:52:01 -04:00
Cleber Rosa
abde5697f4 Sync with upstream release 90.0
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2021-07-27 15:00:46 -04:00
Merlin Mathesius
21ebe30b86 Spec file cleanup identified during package review to bring back
non-modular version of package.

Signed-off-by: Merlin Mathesius <mmathesi@redhat.com>
2021-07-01 15:45:39 -05:00
Cleber Rosa
6a0c944592 Sync with upstream release 89.0
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2021-06-22 13:54:45 -04:00
Cleber Rosa
d8dea0a273 Sync with upstream release 88.1.
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2021-05-18 00:17:54 -04:00
Cleber Rosa
471c4169f0 Sync with upstream release 87.0.
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2021-04-13 23:56:22 -04:00
Cleber Rosa
ad5c2de8e6 Sync with upstream release 86.0.
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2021-03-15 21:48:00 -04:00
Cleber Rosa
bf1deffff4 Sync with upstream release 85.0.
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2021-02-09 20:28:44 -05:00
Cleber Rosa
34b61b19ca Sync with upstream release 84.0.
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2021-02-09 19:49:38 -05:00
Cleber Rosa
dd1a190a67
Sync with upstream release 83.0.
Signed-off-by: Cleber Rosa <crosa@redhat.com>
2020-11-17 13:42:13 -05:00
5 changed files with 401 additions and 289 deletions

15
.gitignore vendored
View file

@ -28,3 +28,18 @@
/avocado-79.0.tar.gz
/avocado-80.0.tar.gz
/avocado-82.0.tar.gz
/avocado-83.0.tar.gz
/avocado-84.0.tar.gz
/avocado-85.0.tar.gz
/avocado-86.0.tar.gz
/avocado-87.0.tar.gz
/avocado-88.1.tar.gz
/avocado-89.0.tar.gz
/avocado-90.0.tar.gz
/avocado-95.0.tar.gz
/avocado-95.0-resultsdb_api.patch
/avocado-96.0.tar.gz
/avocado-97.0.tar.gz
/avocado-98.0.tar.gz
/avocado-102.0.tar.gz
/avocado-112.0.tar.gz

View file

@ -0,0 +1,24 @@
From 8e2d7da5868ca2ae1c66c24a3e5c2957daffc7d7 Mon Sep 17 00:00:00 2001
From: Merlin Mathesius <mmathesi@redhat.com>
Date: Thu, 1 Jul 2021 15:04:14 -0500
Subject: [PATCH] Specify the complete relative path to passtest.py in
HtmlResultTest.test_output_compatible_setup_2 so it finds the script to run.
Signed-off-by: Merlin Mathesius <mmathesi@redhat.com>
---
optional_plugins/html/tests/test_html_result.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/optional_plugins/html/tests/test_html_result.py b/optional_plugins/html/tests/test_html_result.py
index b123a669aa..e074d3bc3a 100644
--- a/optional_plugins/html/tests/test_html_result.py
+++ b/optional_plugins/html/tests/test_html_result.py
@@ -53,7 +53,7 @@ def test_output_compatible_setup_2(self):
tmpfile3 = os.path.join(tmpdir, "result.html")
cmd_line = ('avocado run --job-results-dir %s --disable-sysinfo '
'--xunit %s --json %s --html %s --tap-include-logs '
- 'passtest.py' % (self.tmpdir.name, tmpfile, tmpfile2, tmpfile3))
+ 'examples/tests/passtest.py' % (self.tmpdir.name, tmpfile, tmpfile2, tmpfile3))
result = process.run(cmd_line, ignore_status=True)
output = result.stdout + result.stderr
expected_rc = exit_codes.AVOCADO_ALL_OK

View file

@ -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,45 +6,50 @@
# 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
%global commit e4ede79f097dcc1dbd30e43ffe3b7daf52d2204d
%endif
%if ! 0%{?commit_date:1}
%global commit_date 20200911
%global commit_date 20251010
%endif
%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
# 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 only available for Fedora
%if 0%{?fedora}
# 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-%{pkgname}
Version: 82.0
Release: 1%{?gitrel}%{?dist}
Name: python-avocado
Version: 112.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: 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
@ -56,32 +58,37 @@ 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
%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%{?fedora}
%if ! 0%{?rhel}
BuildRequires: perl-Test-Harness
BuildRequires: python3-xmlschema
BuildRequires: ansible-core
%endif
%if 0%{?fedora} >= 30 || 0%{?rhel}
BuildRequires: glibc-all-langpacks
%endif
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
@ -89,9 +96,13 @@ 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
%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
%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
%build
@ -99,20 +110,22 @@ 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/resultsdb
%if %{with_resultsdb}
pushd optional_plugins/resultsdb
%py3_build
popd
%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
%if ! 0%{?rhel}
pushd optional_plugins/ansible
%py3_build
popd
%endif
pushd optional_plugins/varianter_pict
%py3_build
popd
@ -122,50 +135,63 @@ popd
pushd optional_plugins/result_upload
%py3_build
popd
pushd optional_plugins/glib
pushd optional_plugins/mail
%py3_build
popd
%{__make} man
%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-exec \
avocado-runner-dry-run \
avocado-runner-exec-test \
avocado-runner-python-unittest \
avocado-runner-avocado-instrumented \
avocado-runner-tap \
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}
%{__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
pushd optional_plugins/html
%py3_install
popd
pushd optional_plugins/resultsdb
%if %{with_resultsdb}
pushd optional_plugins/resultsdb
%py3_install
popd
%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
%if ! 0%{?rhel}
pushd optional_plugins/ansible
%py3_install
popd
%endif
pushd optional_plugins/varianter_pict
%py3_install
popd
@ -175,115 +201,85 @@ popd
pushd optional_plugins/result_upload
%py3_install
popd
pushd optional_plugins/glib
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
%{__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/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 %{with tests}
%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
PATH=%{buildroot}%{_bindir}:%{buildroot}%{_libexecdir}/avocado:$PATH \
PYTHONPATH=%{buildroot}%{python3_sitelib}:. \
LANG=en_US.UTF-8 \
AVOCADO_CHECK_LEVEL=0 \
%{python3} selftests/check.py --skip static-checks --disable-plugin-checks robot
%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}
%{_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-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
@ -296,18 +292,41 @@ 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-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-%{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
@ -317,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
@ -324,173 +347,188 @@ 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: GPL-2.0-or-later 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: GPL-2.0-or-later
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: GPL-2.0-or-later
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
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
%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: GPL-2.0-or-later
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
%{_bindir}/avocado-runner-golang
%package -n python3-%{pkgname}-plugins-varianter-pict
%if ! 0%{?rhel}
%package -n python3-avocado-plugins-ansible
Summary: Avocado Ansible Dependency plugin
License: GPL-2.0-or-later
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
%{?python_provide:%python_provide python3-%{pkgname}-plugins-varianter-pict}
Requires: python3-%{pkgname} == %{version}-%{release}
License: GPL-2.0-or-later
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: GPL-2.0-or-later
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: GPL-2.0-or-later
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-avocado-plugins-result-mail
Summary: Avocado Mail Notification for Jobs
License: GPL-2.0-or-later
Requires: python3-avocado == %{version}-%{release}
%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-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.
%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-avocado-plugins-result-mail
%{python3_sitelib}/avocado_result_mail*
%{python3_sitelib}/avocado_framework_plugin_result_mail*
%files -n python3-%{pkgname}-plugins-glib
%{python3_sitelib}/avocado_glib/
%{python3_sitelib}/avocado_framework_plugin_glib-%{version}-py%{python3_version}.egg-info
%if ! 0%{?rhel}
%package -n python3-avocado-plugins-spawner-remote
Summary: Avocado Plugin to spawn tests on a remote host
License: GPL-2.0-or-later
Requires: python3-avocado == %{version}-%{release}
%description -n python3-avocado-plugins-spawner-remote
This optional plugin is intended to spawn tests on a remote host.
%package -n python-%{pkgname}-examples
%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
License: GPLv2
License: GPL-2.0-or-later
# 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
%{_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
%package -n python-avocado-bash
Summary: Avocado Test Framework Bash Utilities
Requires: python-%{pkgname}-common == %{version}-%{release}
License: GPL-2.0-or-later AND GPLv-2.0-only
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
@ -500,6 +538,93 @@ Again Shell code (and possibly other similar shells).
%changelog
* Fri Nov 07 2025 Cleber Rosa <crosa@redhat.com> - 112.0-2
- Update license format to match The System Package Data Exchange (SPDX)
* Fri Oct 10 2025 Cleber Rosa <crosa@redhat.com> - 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
* Mon Jul 17 2023 Cleber Rosa <crosa@redhat.com> - 102.0-1
- Sync with upstream release 102.0
- Added new avocado-runner-podman-image script
- Added new sub package python3-avocado-plugins-ansible
- Remove generic runner avocado-runner
* Sat Jul 16 2022 Cleber Rosa <crosa@redhat.com> - 98.0-1
- Sync with upstream release 98.0
- Add build requirements for python3-elementpath and
python3-xmlschema, used on some tests
- Changed regex to match new string quote style
* Tue May 24 2022 Cleber Rosa <crosa@redhat.com> - 97.0-1
- Sync with upstream release 97.0
- Require python3-jsonschema when running tests
- Removed wrapper examples
* Tue Apr 5 2022 Cleber Rosa <crosa@redhat.com> - 96.0-1
- Sync with upstream release 96.0.
- Rename requirements to dependencies
- Dropped patch that pins resultsdb_api to working version
* Thu Mar 17 2022 Cleber Rosa <crosa@redhat.com> - 95.0-1
- Sync with upstream release 95.0.
- Added new binary for 'avocado-external-runner'
- Removed executable mode from avocado/core/nrunner.py
- Adjust selftest/check.py to use new --skip option
- Do not require genisoimage on EL9
- Replace the %global with_tests macro with %bcond_without to allow
disable the tests directly in the command line.
- Removed avocado-runner-exec since we have avocado-runner-exec-test.
- Added avocado-runner-sysinfo in package
- Added upstream patch that pins resultsdb_api to working version.
* Tue Jul 27 2021 Cleber Rosa <crosa@redhat.com> - 90.0-1
- Sync with upstream release 90.0.
- Removed patch already included upstream
* Tue Jun 29 2021 Merlin Mathesius <mmathesi@redhat.com> - 89.0-2
- Spec file cleanup identified during package review to bring back
non-modular version of package.
* Tue Jun 22 2021 Cleber Rosa <cleber@redhat.com> - 89.0-1
- Sync with upstream release 89.0.
- Packaged avocado-runner-dry-run and avocado-runner-requirement-asset
* Tue May 18 2021 Cleber Rosa <cleber@redhat.com> - 88.1-1
- Sync with upstream release 88.1.
- Included avocado-runner-requirement-package executables
* Wed Apr 14 2021 Cleber Rosa <cleber@redhat.com> - 87.0-1
- Sync with upstream release 87.0.
* Tue Mar 16 2021 Cleber Rosa <cleber@redhat.com> - 86.0-1
- Sync with upstream release 86.0.
- Do not depend on make to build man page
* Wed Feb 10 2021 Cleber Rosa <cleber@redhat.com> - 85.0-1
- Sync with upstream release 85.0.
* Wed Feb 10 2021 Cleber Rosa <cleber@redhat.com> - 84.0-1
- Sync with upstream release 84.0.
- Drop old Fedora conditionals
- Use selftests/check.py job instead of more limited selftests/run
* Tue Nov 17 2020 Cleber Rosa <cleber@redhat.com> - 83.0-1
- Sync with upstream release 83.0.
- Added avocado-runner-golang script to golang package
- Removed glib plugin
- Removed yaml to mux loader plugin
* 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

View file

@ -1 +1 @@
SHA512 (avocado-82.0.tar.gz) = 099ab131b2b941602550e71507e4ca517d5d2cd5152b255edace0473c9de93aac8163a61689414b5b58f9211f58981c3c30c1c3ca8a191283f609722ce07f173
SHA512 (avocado-112.0.tar.gz) = 1872eda730f5cd28f0562732464ce14b2c7731cedb298fcc4b093a04235d26cc5e3db7f92c3ae3edcd6104ad2db4fce66fa7a6148da754e4bdb8120fa12a75a3

View file

@ -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()