-t means "use tox", -e means "use this toxenv", -e implies -t
Further fixes
This commit is contained in:
		
							parent
							
								
									c975fbe6ec
								
							
						
					
					
						commit
						fda0a23075
					
				
							
								
								
									
										21
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								README.md
									
									
									
									
									
								
							| @ -56,30 +56,31 @@ For example, if upstream suggests installing test dependencies with | |||||||
|     %pyproject_buildrequires -r -x testing |     %pyproject_buildrequires -r -x testing | ||||||
| 
 | 
 | ||||||
| For projects that specify test requirements in their [tox] configuration, | For projects that specify test requirements in their [tox] configuration, | ||||||
| these can be added using the `-t` flag followed by the tox environment. | these can be added using the `-t` flag (default tox environment) | ||||||
| The recommended tox environment (such as `py37` assuming the Fedora's Python version is 3.7) | or the `-e` flag followed by the tox environment. | ||||||
|  | The default tox environment (such as `py37` assuming the Fedora's Python version is 3.7) | ||||||
| is available in the `%{toxenv}` macro. | is available in the `%{toxenv}` macro. | ||||||
| For example, if upstream suggests running the tests on Python 3.7 with `tox -e py37`, | For example, if upstream suggests running the tests on Python 3.7 with `tox -e py37`, | ||||||
| the test deps would be generated by: | the test deps would be generated by: | ||||||
| 
 | 
 | ||||||
|     %generate_buildrequires |     %generate_buildrequires | ||||||
|     %pyproject_buildrequires -t %{toxenv} |     %pyproject_buildrequires -t | ||||||
| 
 | 
 | ||||||
| If upstream uses a custom derived environment, such as `py37-unit`, use: | If upstream uses a custom derived environment, such as `py37-unit`, use: | ||||||
| 
 | 
 | ||||||
|     %pyproject_buildrequires -t %{toxenv}-unit |     %pyproject_buildrequires -e %{toxenv}-unit | ||||||
| 
 | 
 | ||||||
| Or specify more environments if needed: | Or specify more environments if needed: | ||||||
| 
 | 
 | ||||||
|     %pyproject_buildrequires -t %{toxenv}-unit,%{toxenv}-integration |     %pyproject_buildrequires -e %{toxenv}-unit,%{toxenv}-integration | ||||||
| 
 | 
 | ||||||
| The `-t` option redefines `%{toxenv}` for further reuse. | The `-e` option redefines `%{toxenv}` for further reuse. | ||||||
| Use `%{default_toxenv}` to get the default value. | Use `%{default_toxenv}` to get the default value. | ||||||
| 
 | 
 | ||||||
| Note that `-t` implies `-r`, because tox normally assumes the package is installed | Note that `-t` implies `-r`, because tox normally assumes the package is installed | ||||||
| including all the runtime dependencies. | including all the runtime dependencies. | ||||||
| 
 | 
 | ||||||
| The `-t` option uses [tox-current-env]'s `--print-deps-only` behind the scenes. | The `-t`/`-e` option uses [tox-current-env]'s `--print-deps-to-file` behind the scenes. | ||||||
| 
 | 
 | ||||||
| [tox]: https://tox.readthedocs.io/ | [tox]: https://tox.readthedocs.io/ | ||||||
| [tox-current-env]: https://github.com/fedora-python/tox-current-env/ | [tox-current-env]: https://github.com/fedora-python/tox-current-env/ | ||||||
| @ -122,8 +123,8 @@ Or (note the two sequential `--`s): | |||||||
| 
 | 
 | ||||||
|     %tox -- -- --flag-for-posargs |     %tox -- -- --flag-for-posargs | ||||||
| 
 | 
 | ||||||
| **Warning:** This macro assumes you have used `%pyproject_buildrequires -t` in | **Warning:** This macro assumes you have used `%pyproject_buildrequires -t` or `-e` | ||||||
| `%generate_buildrequires`. If not, you need to add: | in `%generate_buildrequires`. If not, you need to add: | ||||||
| 
 | 
 | ||||||
|     BuildRequires: python3dist(tox-current-env) |     BuildRequires: python3dist(tox-current-env) | ||||||
| 
 | 
 | ||||||
| @ -141,7 +142,5 @@ Some valid Python version specifiers are not supported. | |||||||
| 
 | 
 | ||||||
| The `-x` flag does not yet support multiple (comma-separated) extras. | The `-x` flag does not yet support multiple (comma-separated) extras. | ||||||
| 
 | 
 | ||||||
| The `-t` flag does not yet support being used without a value. |  | ||||||
| 
 |  | ||||||
| [PEP 517]: https://www.python.org/dev/peps/pep-0517/ | [PEP 517]: https://www.python.org/dev/peps/pep-0517/ | ||||||
| [PEP 518]: https://www.python.org/dev/peps/pep-0518/ | [PEP 518]: https://www.python.org/dev/peps/pep-0518/ | ||||||
|  | |||||||
| @ -20,8 +20,8 @@ fi | |||||||
| %default_toxenv py%{python3_version_nodots} | %default_toxenv py%{python3_version_nodots} | ||||||
| %toxenv %{default_toxenv} | %toxenv %{default_toxenv} | ||||||
| 
 | 
 | ||||||
| %pyproject_buildrequires(rx:t:) %{expand:\\\ | %pyproject_buildrequires(rxte:) %{expand:\\\ | ||||||
| %{-t:%{expand:%global toxenv %{-t*}}} | %{-e:%{expand:%global toxenv %{-e*}}} | ||||||
| echo 'python3-devel' | echo 'python3-devel' | ||||||
| echo 'python3dist(packaging)' | echo 'python3dist(packaging)' | ||||||
| echo 'python3dist(pip) >= 19' | echo 'python3dist(pip) >= 19' | ||||||
| @ -29,7 +29,7 @@ echo 'python3dist(pytoml)' | |||||||
| # setuptools assumes no pre-existing dist-info | # setuptools assumes no pre-existing dist-info | ||||||
| rm -rfv *.dist-info/ | rm -rfv *.dist-info/ | ||||||
| if [ -f %{__python3} ]; then | if [ -f %{__python3} ]; then | ||||||
|   %{__python3} -I %{_rpmconfigdir}/redhat/pyproject_buildrequires.py %{?**} |   RPM_TOXENV=%{toxenv} %{__python3} -I %{_rpmconfigdir}/redhat/pyproject_buildrequires.py %{?**} | ||||||
| fi | fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -35,7 +35,7 @@ BuildRequires: python3dist(packaging) | |||||||
| BuildRequires: python3dist(pytoml) | BuildRequires: python3dist(pytoml) | ||||||
| BuildRequires: python3dist(pip) | BuildRequires: python3dist(pip) | ||||||
| BuildRequires: python3dist(setuptools) | BuildRequires: python3dist(setuptools) | ||||||
| BuildRequires: python3dist(tox-current-env) | BuildRequires: python3dist(tox-current-env) >= 0.0.2 | ||||||
| BuildRequires: python3dist(wheel) | BuildRequires: python3dist(wheel) | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
|  | import os | ||||||
| import sys | import sys | ||||||
| import importlib | import importlib | ||||||
| import argparse | import argparse | ||||||
| @ -176,13 +177,18 @@ def generate_run_requirements(backend, requirements): | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def generate_tox_requirements(toxenv, requirements): | def generate_tox_requirements(toxenv, requirements): | ||||||
|     requirements.extend(['tox-current-env >= 0.0.2'], source='tox itself') |     requirements.add('tox-current-env >= 0.0.2', source='tox itself') | ||||||
|  |     requirements.check(source='tox itself') | ||||||
|     with tempfile.NamedTemporaryFile('r') as depfile: |     with tempfile.NamedTemporaryFile('r') as depfile: | ||||||
|         with hook_call(): |         r = subprocess.run( | ||||||
|             subprocess.run( |             ['tox', '--print-deps-to-file', depfile.name, '-qre', toxenv], | ||||||
|                 ['tox', '--print-deps-to-file', depfile.name, '-qre', toxenv], |             check=True, | ||||||
|                 check=True, |             encoding='utf-8', | ||||||
|             ) |             stdout=subprocess.PIPE, | ||||||
|  |             stderr=subprocess.STDOUT, | ||||||
|  |         ) | ||||||
|  |         if r.stdout: | ||||||
|  |             print_err(r.stdout) | ||||||
|         requirements.extend(depfile.read().splitlines(), |         requirements.extend(depfile.read().splitlines(), | ||||||
|                             source=f'tox --print-deps-only: {toxenv}') |                             source=f'tox --print-deps-only: {toxenv}') | ||||||
| 
 | 
 | ||||||
| @ -222,7 +228,12 @@ def main(argv): | |||||||
|         help='Generate run-time requirements', |         help='Generate run-time requirements', | ||||||
|     ) |     ) | ||||||
|     parser.add_argument( |     parser.add_argument( | ||||||
|         '-t', '--toxenv', metavar='TOXENVS', |         '-e', '--toxenv', metavar='TOXENVS', default=None, | ||||||
|  |         help=('specify tox environments' | ||||||
|  |               '(implies --tox)'), | ||||||
|  |     ) | ||||||
|  |     parser.add_argument( | ||||||
|  |         '-t', '--tox', action='store_true', | ||||||
|         help=('generate test tequirements from tox environment ' |         help=('generate test tequirements from tox environment ' | ||||||
|               '(implies --runtime)'), |               '(implies --runtime)'), | ||||||
|     ) |     ) | ||||||
| @ -235,8 +246,15 @@ def main(argv): | |||||||
|     ) |     ) | ||||||
| 
 | 
 | ||||||
|     args = parser.parse_args(argv) |     args = parser.parse_args(argv) | ||||||
|  | 
 | ||||||
|     if args.toxenv: |     if args.toxenv: | ||||||
|  |         args.tox = True | ||||||
|  | 
 | ||||||
|  |     if args.tox: | ||||||
|         args.runtime = True |         args.runtime = True | ||||||
|  |         args.toxenv = (args.toxenv or os.getenv('RPM_TOXENV') or | ||||||
|  |                        f'py{sys.version_info.major}{sys.version_info.minor}') | ||||||
|  | 
 | ||||||
|     if args.extras and not args.runtime: |     if args.extras and not args.runtime: | ||||||
|         print_err('-x (--extras) are only useful with -r (--runtime)') |         print_err('-x (--extras) are only useful with -r (--runtime)') | ||||||
|         exit(1) |         exit(1) | ||||||
| @ -255,7 +273,7 @@ def main(argv): | |||||||
|             toxenv=args.toxenv, |             toxenv=args.toxenv, | ||||||
|             extras=args.extras, |             extras=args.extras, | ||||||
|         ) |         ) | ||||||
|     except Exception as e: |     except Exception: | ||||||
|         # Log the traceback explicitly (it's useful debug info) |         # Log the traceback explicitly (it's useful debug info) | ||||||
|         traceback.print_exc() |         traceback.print_exc() | ||||||
|         exit(1) |         exit(1) | ||||||
|  | |||||||
| @ -257,6 +257,8 @@ Tox depndencies: | |||||||
|   freeze_output: | |   freeze_output: | | ||||||
|     setuptools==50 |     setuptools==50 | ||||||
|     wheel==1 |     wheel==1 | ||||||
|  |     tox==3.5.3 | ||||||
|  |     tox-current-env==0.0.2 | ||||||
|   toxenv: py3 |   toxenv: py3 | ||||||
|   setup.py: | |   setup.py: | | ||||||
|     from setuptools import setup |     from setuptools import setup | ||||||
|  | |||||||
| @ -28,7 +28,7 @@ Summary:        %{summary} | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %generate_buildrequires | %generate_buildrequires | ||||||
| %pyproject_buildrequires -t %{toxenv}-pytestrelease | %pyproject_buildrequires -e %{toxenv}-pytestrelease | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %build | %build | ||||||
|  | |||||||
| @ -27,7 +27,7 @@ py.test provides simple, yet powerful testing for Python. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %generate_buildrequires | %generate_buildrequires | ||||||
| %pyproject_buildrequires -r -x testing | %pyproject_buildrequires -x testing -t | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %build | %build | ||||||
| @ -40,8 +40,7 @@ py.test provides simple, yet powerful testing for Python. | |||||||
| %check | %check | ||||||
| # Only run one test (which uses a test-only dependency, hypothesis). | # Only run one test (which uses a test-only dependency, hypothesis). | ||||||
| # (Unfortunately, some other tests still fail.) | # (Unfortunately, some other tests still fail.) | ||||||
| export PYTHONPATH=%{buildroot}%{python3_sitelib} | %tox -- -- -k metafunc | ||||||
| %{__python3} -m pytest -k metafunc |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %files -n python3-%{pypi_name} | %files -n python3-%{pypi_name} | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user