def test_update_versions(tmp_path, monkeypatch): monkeypatch.setattr(sys, 'stdin', StringIO('y\n')) (tmp_path / "setup.py").write_text( textwrap.dedent("""\ from setuptools import setup setup( name='foo', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', ], ) """)) cpv.update_versions(tmp_path, add=['3.7']) assert (tmp_path / "setup.py").read_text() == textwrap.dedent("""\ from setuptools import setup setup( name='foo', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', ], ) """)
def test_update_versions_no_change(tmp_path): (tmp_path / "setup.py").write_text(textwrap.dedent("""\ from setuptools import setup setup( name='foo', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', ], ) """)) cpv.update_versions(tmp_path, add=['3.6'])
def test_update_versions_dry_run(tmp_path): (tmp_path / "setup.py").write_text( textwrap.dedent("""\ from setuptools import setup setup( name='foo', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', ], ) """)) replacements = cpv.update_versions(tmp_path, add=['3.7'], dry_run=True) assert (tmp_path / "setup.py").read_text() == textwrap.dedent("""\ from setuptools import setup setup( name='foo', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', ], ) """) filename = str(tmp_path / "setup.py") assert "".join(replacements[filename]) == textwrap.dedent("""\ from setuptools import setup setup( name='foo', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', ], ) """)
def test_update_versions_diff(tmp_path, capsys): (tmp_path / "setup.py").write_text( textwrap.dedent("""\ from setuptools import setup setup( name='foo', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', ], ) """)) cpv.update_versions(tmp_path, add=['3.7'], diff=True) assert (tmp_path / "setup.py").read_text() == textwrap.dedent("""\ from setuptools import setup setup( name='foo', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', ], ) """) assert (capsys.readouterr().out.replace( str(tmp_path) + os.path.sep, 'tmp/')).expandtabs() == textwrap.dedent("""\ --- tmp/setup.py (original) +++ tmp/setup.py (updated) @@ -4,5 +4,6 @@ classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', ], ) """)
def test_update_versions_computed(tmp_path): (tmp_path / "setup.py").write_text(textwrap.dedent("""\ from setuptools import setup setup( name='foo', classifiers=[ 'Programming Language :: Python :: %s' % v for v in ['2.7'] ], ) """)) replacements = cpv.update_versions( tmp_path, add=['3.6'], dry_run=True, ) assert set(replacements) == set()
def test_update_versions_dry_run_two_updaters_one_file( tmp_path, fix_max_python_3_version, ): fix_max_python_3_version(7) (tmp_path / "setup.py").write_text( textwrap.dedent("""\ from setuptools import setup setup( name='foo', python_requires='>= 2.7', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', ], ) """)) replacements = cpv.update_versions( tmp_path, update=['2.7', '3.4', '3.5', '3.6', '3.7'], dry_run=True, ) assert (tmp_path / "setup.py").read_text() == textwrap.dedent("""\ from setuptools import setup setup( name='foo', python_requires='>= 2.7', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', ], ) """) filename = str(tmp_path / "setup.py") assert "".join(replacements[filename]) == textwrap.dedent("""\ from setuptools import setup setup( name='foo', python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', ], ) """)
def test_update_versions_only(tmp_path): (tmp_path / "setup.py").write_text(textwrap.dedent("""\ from setuptools import setup setup( name='foo', classifiers=[ 'Programming Language :: Python :: 2.7', ], ) """)) tox_ini = tmp_path / "tox.ini" tox_ini.write_text(textwrap.dedent("""\ [tox] envlist = py27 """)) replacements = cpv.update_versions( tmp_path, add=['3.6'], only='tox.ini', dry_run=True, ) assert set(replacements) == {str(tmp_path / 'tox.ini')}