| |
@@ -0,0 +1,124 @@
|
| |
+ import subprocess
|
| |
+ import sys
|
| |
+
|
| |
+ XY = f'{sys.version_info[0]}{sys.version_info[1]}'
|
| |
+
|
| |
+
|
| |
+ def rpm_eval(expression, **kwargs):
|
| |
+ cmd = ['rpmbuild']
|
| |
+ for var, value in kwargs.items():
|
| |
+ cmd += ['--define', f'{var} {value}']
|
| |
+ cmd += ['--eval', expression]
|
| |
+ cp = subprocess.run(cmd, text=True,
|
| |
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
| |
+ assert cp.returncode == 0, cp.stderr
|
| |
+ return cp.stdout.strip().splitlines()
|
| |
+
|
| |
+
|
| |
+ def test_python_provide_python():
|
| |
+ assert rpm_eval('%python_provide python-foo') == []
|
| |
+
|
| |
+
|
| |
+ def test_python_provide_python3():
|
| |
+ lines = rpm_eval('%python_provide python3-foo', version='6', release='1.fc66')
|
| |
+ assert 'Obsoletes: python-foo < 6-1.fc66' in lines
|
| |
+ assert 'Provides: python-foo = 6-1.fc66' in lines
|
| |
+ assert f'Provides: python{XY}-foo = 6-1.fc66' in lines
|
| |
+ assert len(lines) == 3
|
| |
+
|
| |
+
|
| |
+ def test_python_provide_python3_epoched():
|
| |
+ lines = rpm_eval('%python_provide python3-foo', epoch='1', version='6', release='1.fc66')
|
| |
+ assert 'Obsoletes: python-foo < 1:6-1.fc66' in lines
|
| |
+ assert 'Provides: python-foo = 1:6-1.fc66' in lines
|
| |
+ assert f'Provides: python{XY}-foo = 1:6-1.fc66' in lines
|
| |
+ assert len(lines) == 3
|
| |
+
|
| |
+
|
| |
+ def test_python_provide_python3X():
|
| |
+ lines = rpm_eval(f'%python_provide python{XY}-foo', version='6', release='1.fc66')
|
| |
+ assert 'Obsoletes: python-foo < 6-1.fc66' in lines
|
| |
+ assert 'Provides: python-foo = 6-1.fc66' in lines
|
| |
+ assert 'Provides: python3-foo = 6-1.fc66' in lines
|
| |
+ assert len(lines) == 3
|
| |
+
|
| |
+
|
| |
+ def test_python_provide_python3X_epoched():
|
| |
+ lines = rpm_eval(f'%python_provide python{XY}-foo', epoch='1', version='6', release='1.fc66')
|
| |
+ assert 'Obsoletes: python-foo < 1:6-1.fc66' in lines
|
| |
+ assert 'Provides: python-foo = 1:6-1.fc66' in lines
|
| |
+ assert 'Provides: python3-foo = 1:6-1.fc66' in lines
|
| |
+ assert len(lines) == 3
|
| |
+
|
| |
+
|
| |
+ def test_python_provide_doubleuse():
|
| |
+ lines = rpm_eval('%{python_provide python3-foo}%{python_provide python3-foo}',
|
| |
+ version='6', release='1.fc66')
|
| |
+ assert 'Obsoletes: python-foo < 6-1.fc66' in lines
|
| |
+ assert 'Provides: python-foo = 6-1.fc66' in lines
|
| |
+ assert f'Provides: python{XY}-foo = 6-1.fc66' in lines
|
| |
+ assert len(lines) == 6
|
| |
+ assert len(set(lines)) == 3
|
| |
+
|
| |
+
|
| |
+ def test_py_provides_python():
|
| |
+ lines = rpm_eval('%py_provides python-foo', version='6', release='1.fc66')
|
| |
+ assert 'Provides: python-foo = 6-1.fc66' in lines
|
| |
+ assert len(lines) == 1
|
| |
+
|
| |
+
|
| |
+ def test_py_provides_whatever():
|
| |
+ lines = rpm_eval('%py_provides whatever', version='6', release='1.fc66')
|
| |
+ assert 'Provides: whatever = 6-1.fc66' in lines
|
| |
+ assert len(lines) == 1
|
| |
+
|
| |
+
|
| |
+ def test_py_provides_python3():
|
| |
+ lines = rpm_eval('%py_provides python3-foo', version='6', release='1.fc66')
|
| |
+ assert 'Provides: python3-foo = 6-1.fc66' in lines
|
| |
+ assert 'Provides: python-foo = 6-1.fc66' in lines
|
| |
+ assert f'Provides: python{XY}-foo = 6-1.fc66' in lines
|
| |
+ assert len(lines) == 3
|
| |
+
|
| |
+
|
| |
+ def test_py_provides_python3_epoched():
|
| |
+ lines = rpm_eval('%py_provides python3-foo', epoch='1', version='6', release='1.fc66')
|
| |
+ assert 'Provides: python3-foo = 1:6-1.fc66' in lines
|
| |
+ assert 'Provides: python-foo = 1:6-1.fc66' in lines
|
| |
+ assert f'Provides: python{XY}-foo = 1:6-1.fc66' in lines
|
| |
+ assert len(lines) == 3
|
| |
+
|
| |
+
|
| |
+ def test_py_provides_python3X():
|
| |
+ lines = rpm_eval(f'%py_provides python{XY}-foo', version='6', release='1.fc66')
|
| |
+ assert f'Provides: python{XY}-foo = 6-1.fc66' in lines
|
| |
+ assert 'Provides: python-foo = 6-1.fc66' in lines
|
| |
+ assert 'Provides: python3-foo = 6-1.fc66' in lines
|
| |
+ assert len(lines) == 3
|
| |
+
|
| |
+
|
| |
+ def test_py_provides_python3X_epoched():
|
| |
+ lines = rpm_eval(f'%py_provides python{XY}-foo', epoch='1', version='6', release='1.fc66')
|
| |
+ assert f'Provides: python{XY}-foo = 1:6-1.fc66' in lines
|
| |
+ assert 'Provides: python-foo = 1:6-1.fc66' in lines
|
| |
+ assert 'Provides: python3-foo = 1:6-1.fc66' in lines
|
| |
+ assert len(lines) == 3
|
| |
+
|
| |
+
|
| |
+ def test_py_provides_doubleuse():
|
| |
+ lines = rpm_eval('%{py_provides python3-foo}%{py_provides python3-foo}',
|
| |
+ version='6', release='1.fc66')
|
| |
+ assert 'Provides: python3-foo = 6-1.fc66' in lines
|
| |
+ assert 'Provides: python-foo = 6-1.fc66' in lines
|
| |
+ assert f'Provides: python{XY}-foo = 6-1.fc66' in lines
|
| |
+ assert len(lines) == 6
|
| |
+ assert len(set(lines)) == 3
|
| |
+
|
| |
+
|
| |
+ def test_py_provides_with_evr():
|
| |
+ lines = rpm_eval('%py_provides python3-foo 123',
|
| |
+ version='6', release='1.fc66')
|
| |
+ assert 'Provides: python3-foo = 123' in lines
|
| |
+ assert 'Provides: python-foo = 123' in lines
|
| |
+ assert f'Provides: python{XY}-foo = 123' in lines
|
| |
+ assert len(lines) == 3
|
| |
Changes in generators to be used on top of this: https://src.fedoraproject.org/rpms/python-rpm-generators/pull-request/16