Compare commits

..

1 commit

Author SHA1 Message Date
Miro Hrončok
3fa50768c4 Avoid needless pkg_resources import in pythonbundles.py
Cherry-picked from: 279638a969
2023-05-30 19:34:31 +02:00
22 changed files with 98 additions and 213 deletions

View file

@ -1 +0,0 @@
1

1
.gitignore vendored
View file

@ -3,4 +3,3 @@
/tests/__pycache__/
/tests/data/scripts_pythondistdeps/usr/
/test-sources-2021-03-11.tar.gz
/test-sources-2023-01-04.tar.gz

View file

@ -1,45 +0,0 @@
execute:
how: tmt
discover:
- name: same_repo
how: shell
dist-git-source: true
dist-git-download-only: true
tests:
- name: pythonabi
path: /tests
test: ./pythonabi.sh
- name: pythonname
path: /tests
test: ./pythonname.sh
- name: pythondist
path: /tests
test: ./pythondist.sh
- name: console_script
path: /tests
test: ./console_script.sh
- name: pytest
test: cd $TMT_SOURCE_DIR && ./tests/download_data_and_run_pytest.sh
prepare:
- name: Install dependencies
how: install
package:
- rpm-build
- rpmdevtools
- fedpkg-minimal
- python3-devel
- python3-pip
- python3-pytest
- python3-pyyaml
- python3-setuptools
- python3-wheel
- dnf
- name: Update packages
how: shell
script: dnf upgrade -y
- name: rpm_qa
order: 100
how: shell
script: rpm -qa | sort | tee $TMT_PLAN_DATA/rpmqa.txt

View file

@ -1,28 +1,19 @@
Name: python-rpm-generators
Summary: Dependency generators for Python RPMs
Version: 14
Release: 13%{?dist}
Version: 13
Release: 3%{?dist}
Url: https://src.fedoraproject.org/rpms/python-rpm-generators
# Originally the following files were part of RPM, so the license is inherited: GPL-2.0-or-later
# The COPYING file is grabbed from the last commit that changed the files
# Originally all those files were part of RPM, so license is kept here
License: GPLv2+
Url: https://src.fedoraproject.org/python-rpm-generators
# Commit is the last change in following files
Source0: https://raw.githubusercontent.com/rpm-software-management/rpm/102eab50b3d0d6546dfe082eac0ade21e6b3dbf1/COPYING
Source1: python.attr
Source2: pythondist.attr
# This was crafted in-place as a fork of python.attr, hence also GPL-2.0-or-later
Source3: pythonname.attr
# This one is also originally from RPM, but it has its own license declaration: LGPL-2.1-or-later
Source4: pythondistdeps.py
# This was crafted in-place with the following license declaration:
# LicenseRef-Fedora-Public-Domain OR CC0-1.0 OR LGPL-2.1-or-later OR GPL-2.0-or-later
# Note that CC0-1.0 is not allowed for code in Fedora, so we skip it in the package License tag
Source5: pythonbundles.py
# See individual licenses above Source declarations
# Originally, this was simplified to GPL-2.0-or-later, but "effective license" analysis is no longer allowed
License: GPL-2.0-or-later AND LGPL-2.1-or-later AND (LicenseRef-Fedora-Public-Domain OR LGPL-2.1-or-later OR GPL-2.0-or-later)
BuildArch: noarch
%description
@ -56,45 +47,8 @@ install -Dpm0755 -t %{buildroot}%{_rpmconfigdir} *.py
%{_rpmconfigdir}/pythonbundles.py
%changelog
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 14-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 14-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 14-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 14-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 14-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Oct 03 2023 Miro Hrončok <mhroncok@redhat.com> - 14-8
- Avoid DeprecationWarning: Implicit None on return values is deprecated and will raise KeyErrors
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 14-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Wed May 24 2023 Todd Zullinger <tmz@pobox.com> - 14-6
- Fix URL tag
* Fri May 05 2023 Miro Hrončok <mhroncok@redhat.com> - 14-5
- Declare the license via a complex SPDX expression rather than "effective license"
* Mon Apr 17 2023 Kalev Lember <klember@redhat.com> - 14-4
- Generate provides for /app-installed flatpak builds
* Tue Mar 07 2023 Miro Hrončok <mhroncok@redhat.com> - 14-3
* Tue Mar 07 2023 Miro Hrončok <mhroncok@redhat.com> - 13-3
- Avoid needless pkg_resources import in pythonbundles.py
- Ignore environment markers in pythonbundles.py
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 14-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Dec 22 2022 Karolina Surma <ksurma@redhat.com> - 14-1
- https://fedoraproject.org/wiki/Changes/Prevent-Providing-python3dist(pkg)=0
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 13-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild

View file

@ -5,10 +5,8 @@
-- python(abi) = MAJOR.MINOR
-- (Don't match against -config tools e.g. /usr/bin/python2.6-config)
local path = rpm.expand('%1')
-- Use /usr prefix by default, and /app for flatpak builds
local prefix = rpm.expand('%{?!flatpak:/usr}%{?flatpak:/app}')
if path:match(prefix .. '/bin/python%d+%.%d+$') then
local provides = path:gsub('.*' .. prefix .. '/bin/python(%d+%.%d+)', 'python(abi) = %1')
if path:match('/usr/bin/python%d+%.%d+$') then
local provides = path:gsub('.*/usr/bin/python(%d+%.%d+)', 'python(abi) = %1')
print(provides)
end
}
@ -20,12 +18,10 @@
-- generating a line of the form:
-- python(abi) = MAJOR.MINOR
local path = rpm.expand('%1')
-- Use /usr prefix by default, and /app for flatpak builds
local prefix = rpm.expand('%{?!flatpak:/usr}%{?flatpak:/app}')
if path:match(prefix .. '/lib%d*/python%d+%.%d+/.*') then
local requires = path:gsub('.*' .. prefix .. '/lib%d*/python(%d+%.%d+)/.*', 'python(abi) = %1')
if path:match('/usr/lib%d*/python%d+%.%d+/.*') then
local requires = path:gsub('.*/usr/lib%d*/python(%d+%.%d+)/.*', 'python(abi) = %1')
print(requires)
end
}
%__python_path ^((%{?!flatpak:/usr}%{?flatpak:/app}/lib(64)?/python[[:digit:]]+\\.[[:digit:]]+/.*\\.(py[oc]?|so))|(%{_bindir}/python[[:digit:]]+\\.[[:digit:]]+))$
%__python_path ^((%{_prefix}/lib(64)?/python[[:digit:]]+\\.[[:digit:]]+/.*\\.(py[oc]?|so))|(%{_bindir}/python[[:digit:]]+\\.[[:digit:]]+))$

View file

@ -4,7 +4,7 @@
# This program is free software.
#
# It is placed in the public domain or under the CC0-1.0-Universal license,
# whichever you choose.
# whichever is more permissive.
#
# Alternatively, it may be redistributed and/or modified under the terms of
# the LGPL version 2.1 (or later) or GPL version 2 (or later).
@ -15,8 +15,6 @@
import pathlib
import sys
from packaging import requirements
import pythondistdeps
def generate_bundled_provides(paths, namespace):
@ -35,14 +33,8 @@ def generate_bundled_provides(paths, namespace):
continue
line = line.strip()
if line:
requirement = requirements.Requirement(line)
for spec in requirement.specifier:
if spec.operator == '==':
version = spec.version
break
else:
raise ValueError('pythonbundles.py only handles exactly one == requirement')
name = pythondistdeps.normalize_name(requirement.name)
name, _, version = line.partition('==')
name = pythondistdeps.normalize_name(name)
bundled_name = f"bundled({namespace}({name}))"
python_provide = pythondistdeps.convert(bundled_name, '==', version)
provides.add(f'Provides: {python_provide}')

View file

@ -1,3 +1,3 @@
%__pythondist_provides %{_rpmconfigdir}/pythondistdeps.py --provides --normalized-names-format pep503 --package-name %{name} --majorver-provides-versions %{__default_python3_version} %{?!_python_dist_allow_version_zero:--fail-if-zero}
%__pythondist_provides %{_rpmconfigdir}/pythondistdeps.py --provides --normalized-names-format pep503 --package-name %{name} --majorver-provides-versions %{__default_python3_version}
%__pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires --normalized-names-format pep503 --package-name %{name} %{?!_python_no_extras_requires:--require-extras-subpackages} --console-scripts-nodep-setuptools-since 3.10
%__pythondist_path ^%{?!flatpak:/usr}%{?flatpak:/app}/lib(64)?/python[3-9]\\.[[:digit:]]+/site-packages/[^/]+\\.(dist-info|egg-info|egg-link)$
%__pythondist_path ^/usr/lib(64)?/python[3-9]\\.[[:digit:]]+/site-packages/[^/]+\\.(dist-info|egg-info|egg-link)$

View file

@ -94,8 +94,8 @@ class Distribution(PathDistribution):
# that it works also on previous Python/importlib_metadata versions.
@property
def name(self):
"""Return the 'Name' metadata for the distribution package or None."""
return self.metadata.get('Name')
"""Return the 'Name' metadata for the distribution package."""
return self.metadata['Name']
def _parse_py_version(self, path):
# Try to parse the Python version from the path the metadata
@ -155,9 +155,6 @@ class RpmVersion():
self.post = None
return self
def is_zero(self):
return self.__str__() == '0'
def __str__(self):
if self.is_legacy():
return self.version
@ -337,13 +334,9 @@ def main():
help="If there is a dependency on a package with extras functionality, require the extras subpackage")
parser.add_argument('--package-name', action='store', help="Name of the RPM package that's being inspected. Required for extras requires/provides to work.")
parser.add_argument('--namespace', action='store', help="Namespace for the printed Requires, Provides, Recommends and Conflicts")
parser.add_argument('--fail-if-zero', action='store_true', help='Fail the script if the automatically generated Provides version was 0, which usually indicates a packaging error.')
parser.add_argument('files', nargs=argparse.REMAINDER, help="Files from the RPM package that are to be inspected, can also be supplied on stdin")
args = parser.parse_args()
if args.fail_if_zero and not args.provides:
raise parser.error('--fail-if-zero only works with --provides')
py_abi = args.requires
py_deps = {}
@ -477,17 +470,6 @@ def main():
if dist.version:
version = dist.version
spec = ('==', version)
if args.fail_if_zero:
if RpmVersion(version).is_zero():
print('*** PYTHON_PROVIDED_VERSION_NORMALIZES_TO_ZERO___SEE_STDERR ***')
print(f'\nError: The version in the Python package metadata {version} normalizes to zero.\n'
'It\'s likely a packaging error caused by missing version information\n'
'(e.g. when using a version control system snapshot as a source).\n'
'Try providing the version information manually when building the Python package,\n'
'for example by setting the SETUPTOOLS_SCM_PRETEND_VERSION environment variable if the package uses setuptools_scm.\n'
'If you are confident that the version of the Python package is intentionally zero,\n'
'you may %define the _python_dist_allow_version_zero macro in the spec file to disable this check.\n', file=stderr)
exit(65) # os.EX_DATAERR
if normalized_names_provide_legacy:
if spec not in py_deps[name]:

View file

@ -1,6 +1,9 @@
%__pythonname_provides() %{lua:
local python = require 'fedora.srpm.python'
local name = rpm.expand('%{name}')
-- this macro is called for each file in a package, the path being in %1
-- but we don't need to know the path, so we would get for each file: Macro %1 defined but not used within scope
-- in here, we expand %name conditionally on %1 to suppress the warning
local name = rpm.expand('%{?1:%{name}}')
local evr = rpm.expand('%{?epoch:%{epoch}:}%{version}-%{release}')
local provides = python.python_altprovides_once(name, evr)
-- provides is either an array/table or nil
@ -20,7 +23,10 @@
-- In Fedora this is not needed as we don't ship ecosystem packages
-- for alternative Python interpreters.
local python = require 'fedora.srpm.python'
local name = rpm.expand('%{name}')
-- this macro is called for each file in a package, the path being in %1
-- but we don't need to know the path, so we would get for each file: Macro %1 defined but not used within scope
-- in here, we expand %name conditionally on %1 to suppress the warning
local name = rpm.expand('%{?1:%{name}}')
local evr = rpm.expand('%{?epoch:%{epoch}:}%{version}-%{release}')
local obsoletes = python.python_altobsoletes_once(name, evr)
-- obsoletes is either an array/table or nil

View file

@ -1 +1 @@
SHA512 (test-sources-2023-01-04.tar.gz) = ca25c35970e91adeaed0873c045f4335c33b96a4ef4c56a36bfb2fd9e1d4799142cf0513abb066479fdb14d2d184b3b825c1d90119ac8e8d0e9aa1a4423701d1
SHA512 (test-sources-2021-03-11.tar.gz) = 6f34c8151625be489a6a4d56d1fd3d39b7908bd31402c9703cb65918385320dfad35f35a32920c816fb85a829f44aaf04dc1d0654ccf512e26e87e95dbf87430

View file

@ -31,7 +31,7 @@ requirementslib==1.5.11
distlib==0.3.0
packaging==20.3
pyparsing==2.4.7
plette[validation]==0.2.3
plette==0.2.3
tomlkit==0.5.11
shellingham==1.3.2
six==1.14.0

View file

@ -3,4 +3,3 @@ Provides: bundled(python3dist(ordered-set)) = 3.1.1
Provides: bundled(python3dist(packaging)) = 16.8
Provides: bundled(python3dist(pyparsing)) = 2.2.1
Provides: bundled(python3dist(six)) = 1.10
Provides: bundled(python3dist(tomli)) = 1.2.3

View file

@ -1,4 +1,3 @@
packaging==16.8
pyparsing==2.2.1
ordered-set==3.1.1
tomli==1.2.3;python_version<"3.11"

View file

@ -1,4 +1,3 @@
Provides: bundled(python3dist(ordered-set)) = 3.1.1
Provides: bundled(python3dist(packaging)) = 16.8
Provides: bundled(python3dist(pyparsing)) = 2.2.1
Provides: bundled(python3dist(tomli)) = 1.2.3

View file

@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: pyreq2rpm.tests
Version: 2020.04.07.024
Version: 2020.04.07.024dab0
Summary: Test package to verify conversion of dependencies from pip/python to rpm format, data taken from pyreq2rpm
Author: Tomas Orsava (author of this metapackage)
Home-page: https://github.com/gordonmessmer/pyreq2rpm

View file

@ -45,8 +45,10 @@ foobar43!=2.0.post1
foobar44<=2.4.8
foobar45<=2.4.8.0
foobar46<=2.4.8.1
foobar47<=2.4.8.*
foobar48<=2.0
foobar49<=2
foobar50<=2.*
foobar51<=2.4.8b5
foobar52<=2.0.0b5
foobar53<=2.4.8.post1
@ -54,8 +56,10 @@ foobar54<=2.0.post1
foobar55<2.4.8
foobar56<2.4.8.0
foobar57<2.4.8.1
foobar58<2.4.8.*
foobar59<2.0
foobar60<2
foobar61<2.*
foobar62<2.4.8b5
foobar63<2.0.0b5
foobar64<2.4.8.post1
@ -63,8 +67,10 @@ foobar65<2.0.post1
foobar66>=2.4.8
foobar67>=2.4.8.0
foobar68>=2.4.8.1
foobar69>=2.4.8.*
foobar70>=2.0
foobar71>=2
foobar72>=2.*
foobar73>=2.4.8b5
foobar74>=2.0.0b5
foobar75>=2.4.8.post1
@ -72,8 +78,10 @@ foobar76>=2.0.post1
foobar77>2.4.8
foobar78>2.4.8.0
foobar79>2.4.8.1
foobar80>2.4.8.*
foobar81>2.0
foobar82>2
foobar83>2.*
foobar84>2.4.8b5
foobar85>2.0.0b5
foobar86>2.4.8.post1

View file

@ -1224,8 +1224,8 @@
stdout:
provides: '*** PYTHON_METADATA_FAILED_TO_PARSE_ERROR___SEE_STDERR ***'
requires: '*** PYTHON_METADATA_FAILED_TO_PARSE_ERROR___SEE_STDERR ***'
pyreq2rpm.tests-2020.04.07.024-py3.9.egg-info:
provides: python3.9dist(pyreq2rpm-tests) = 2020.4.7.24
pyreq2rpm.tests-2020.04.07.024dab0-py3.9.egg-info:
provides: python3.9dist(pyreq2rpm-tests) = 2020.04.07.024dab0
requires: |-
python(abi) = 3.9
((python3.9dist(babel) < 2 or python3.9dist(babel) > 2) with python3.9dist(babel) >= 1.3)
@ -1271,8 +1271,10 @@
python3.9dist(foobar44) <= 2.4.8
python3.9dist(foobar45) <= 2.4.8
python3.9dist(foobar46) <= 2.4.8.1
python3.9dist(foobar47) < 2.4.8~~
python3.9dist(foobar48) <= 2
python3.9dist(foobar49) <= 2
python3.9dist(foobar50) < 2~~
python3.9dist(foobar51) <= 2.4.8~b5
python3.9dist(foobar52) <= 2~b5
python3.9dist(foobar53) <= 2.4.8^post1
@ -1280,8 +1282,10 @@
python3.9dist(foobar55) < 2.4.8~~
python3.9dist(foobar56) < 2.4.8~~
python3.9dist(foobar57) < 2.4.8.1~~
python3.9dist(foobar58) < 2.4.8~~
python3.9dist(foobar59) < 2~~
python3.9dist(foobar60) < 2~~
python3.9dist(foobar61) < 2~~
python3.9dist(foobar62) < 2.4.8~b5
python3.9dist(foobar63) < 2~b5
python3.9dist(foobar64) < 2.4.8^post1
@ -1289,9 +1293,11 @@
python3.9dist(foobar66) >= 2.4.8
python3.9dist(foobar67) >= 2.4.8
python3.9dist(foobar68) >= 2.4.8.1
python3.9dist(foobar69) >= 2.4.8
(python3.9dist(foobar7) >= 2.4.8~b5 with python3.9dist(foobar7) < 2.5)
python3.9dist(foobar70) >= 2
python3.9dist(foobar71) >= 2
python3.9dist(foobar72) >= 2
python3.9dist(foobar73) >= 2.4.8~b5
python3.9dist(foobar74) >= 2~b5
python3.9dist(foobar75) >= 2.4.8^post1
@ -1300,8 +1306,10 @@
python3.9dist(foobar78) > 2.4.8.0
python3.9dist(foobar79) > 2.4.8.1.0
(python3.9dist(foobar8) >= 2~b5 with python3.9dist(foobar8) < 2.1)
python3.9dist(foobar80) >= 2.4.8
python3.9dist(foobar81) > 2.0
python3.9dist(foobar82) > 2.0
python3.9dist(foobar83) >= 2
python3.9dist(foobar84) > 2.4.8~b5
python3.9dist(foobar85) > 2~b5
python3.9dist(foobar86) > 2.4.8^post1
@ -1354,39 +1362,4 @@
requires: |-
python(abi) = 3.10
python3.10dist(virtualenv) >= 20.0.35
--requires --fail-if-zero:
--provides --majorver-provides --fail-if-zero:
usr/lib/python3.11/site-packages/importlib_metadata-0.0-py3.11.egg-info:
stderr:
provides: |-
Error: The version in the Python package metadata 0.0 normalizes to zero.
It's likely a packaging error caused by missing version information
(e.g. when using a version control system snapshot as a source).
Try providing the version information manually when building the Python package,
for example by setting the SETUPTOOLS_SCM_PRETEND_VERSION environment variable if the package uses setuptools_scm.
If you are confident that the version of the Python package is intentionally zero,
you may %define the _python_dist_allow_version_zero macro in the spec file to disable this check.
requires: '*error: --fail-if-zero only works with --provides*'
stdout:
provides: '*** PYTHON_PROVIDED_VERSION_NORMALIZES_TO_ZERO___SEE_STDERR ***'
requires: ''
--requires:
--provides --majorver-provides:
usr/lib/python3.11/site-packages/importlib_metadata-0.0-py3.11.egg-info:
provides: |-
python3.11dist(importlib-metadata) = 0
python3dist(importlib-metadata) = 0
requires: |-
python(abi) = 3.11
python3.11dist(setuptools)
python3.11dist(wheel)
--requires:
--provides --majorver-provides --fail-if-zero:
usr/lib/python3.11/site-packages/importlib_metadata-0.1-py3.11.egg-info:
provides: |-
python3.11dist(importlib-metadata) = 0.1
python3dist(importlib-metadata) = 0.1
requires: |-
python(abi) = 3.11
python3.11dist(setuptools)
python3.11dist(wheel)

View file

@ -103,7 +103,3 @@ dnspython:
build:
wheel:
'0.8.0': ['3.10']
importlib_metadata:
sdist:
'0.0': ['3.11']
'0.1': ['3.11']

View file

@ -1,15 +0,0 @@
#!/usr/bin/bash -eux
# Use update-test-sources.sh to update the test data
# When the tests run in python-rpm-generators,
# the structure on disk does not match the dist-git repository.
# We apparently must use the standard-test-source role to grab the sources.
# OTOH in other packages, we must use fedpkg(-minimal) or centpkg(-minimal),
# depending on the destination OS.
# The --force flag is required in full-blown fedpkg/centpkg (the source is unused in spec),
# and it is ignored in fedpkg/centpkg-minimal (all sources are always downloaded).
test -f test-sources-*.tar.gz || fedpkg sources --force || centpkg sources --force
tar -xvf test-sources-*.tar.gz -C ./tests/data/scripts_pythondistdeps/
cd tests/
python3 -m pytest -vvv

View file

@ -43,7 +43,7 @@ test $(rpm -qp --obsoletes ${RPMDIR}/python${X_Y}-foo-0-0.noarch.rpm | wc -l) -e
echo "Obsoletes for python3-foo"
rpm -qp --obsoletes ${RPMDIR}/python3-foo-0-0.noarch.rpm
# In ELN/RHEL the pythonX.Y-* Obsoletes is generated, but not in Fedora, so we check for it explicitly.
rpm -qp --obsoletes ${RPMDIR}/python3-foo-0-0.noarch.rpm | grep -q '^python'${X_Y}'-foo < 0-0$' && exit 1 || true
rpm -qp --obsoletes ${RPMDIR}/python3-foo-0-0.noarch.rpm | grep -q '^python'${X_Y}'-py_provides < 0-0$' && exit 1 || true
test $(rpm -qp --obsoletes ${RPMDIR}/python3-foo-0-0.noarch.rpm | wc -l) -eq 0
echo "Obsoletes for python2-foo"

View file

@ -53,11 +53,6 @@ def run_pythondistdeps(provides_params, requires_params, dist_egg_info_path, exp
requires = subprocess.run((sys.executable, PYTHONDISTDEPS_PATH, *shlex.split(requires_params)),
input=files, capture_output=True, check=False, encoding="utf-8")
print(provides_params, provides.stdout, sep=':\n', file=sys.stdout)
print(requires_params, requires.stdout, sep=':\n', file=sys.stdout)
print(provides_params, provides.stderr, sep=':\n', file=sys.stderr)
print(requires_params, requires.stderr, sep=':\n', file=sys.stderr)
if expect_failure:
if provides.returncode == 0 or requires.returncode == 0:
raise RuntimeError(f"pythondistdeps.py did not exit with a non-zero code as expected.\n"

48
tests/tests.yml Normal file
View file

@ -0,0 +1,48 @@
---
- hosts: localhost
tags:
- classic
tasks:
- dnf:
name: "*"
state: latest
- hosts: localhost
tags:
- classic
pre_tasks:
- import_role:
name: standard-test-source
vars:
fetch_only: True
roles:
- role: standard-test-basic
tests:
- pythonabi:
dir: .
run: ./pythonabi.sh
- pythonname:
dir: .
run: ./pythonname.sh
- pythondist:
dir: .
run: ./pythondist.sh
- console_script:
dir: .
run: ./console_script.sh
- prepare-test-data:
dir: .
run: tar -xvf test-sources-*.tar.gz -C ./tests/data/scripts_pythondistdeps/
- pytest:
dir: ./tests
# Use update-test-sources.sh to update the test data
run: python3 -m pytest --capture=no -vvv
required_packages:
- rpm-build
- rpmdevtools
- python3-devel
- python3-pip
- python3-pytest
- python3-pyyaml
- python3-setuptools
- python3-wheel