mirror of
https://github.com/TECHNOFAB11/bumpver.git
synced 2025-12-12 14:30:09 +01:00
add cli/integration tests
This commit is contained in:
parent
d35f5117fc
commit
bc732544d3
1 changed files with 308 additions and 1 deletions
309
test/test_cli.py
309
test/test_cli.py
|
|
@ -1 +1,308 @@
|
|||
# import pycalver.__main__ as main
|
||||
import os
|
||||
import io
|
||||
import shutil
|
||||
import pathlib2 as pl
|
||||
import subprocess as sp
|
||||
|
||||
import pytest
|
||||
|
||||
from click.testing import CliRunner
|
||||
|
||||
import pycalver.config as config
|
||||
import pycalver.version as version
|
||||
import pycalver.__main__ as pycalver
|
||||
|
||||
|
||||
SETUP_CFG_FIXTURE = """
|
||||
[metadata]
|
||||
license_file = LICENSE
|
||||
|
||||
[bdist_wheel]
|
||||
universal = 1
|
||||
"""
|
||||
|
||||
PYCALVER_TOML_FIXTURE = """
|
||||
"""
|
||||
|
||||
PYPROJECT_TOML_FIXTURE = """
|
||||
[build-system]
|
||||
requires = ["setuptools", "wheel"]
|
||||
"""
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def runner(tmpdir):
|
||||
runner = CliRunner()
|
||||
orig_cwd = os.getcwd()
|
||||
|
||||
_debug = 0
|
||||
if _debug:
|
||||
tmpdir = pl.Path("..") / "tmp_test_pycalver_project"
|
||||
if tmpdir.exists():
|
||||
shutil.rmtree(str(tmpdir))
|
||||
tmpdir.mkdir()
|
||||
|
||||
os.chdir(str(tmpdir))
|
||||
|
||||
yield runner
|
||||
|
||||
os.chdir(orig_cwd)
|
||||
|
||||
if not _debug:
|
||||
shutil.rmtree(str(tmpdir))
|
||||
|
||||
|
||||
def test_help(runner):
|
||||
result = runner.invoke(pycalver.cli, ['--help', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
assert "PyCalVer" in result.output
|
||||
assert "bump " in result.output
|
||||
assert "incr " in result.output
|
||||
assert "init " in result.output
|
||||
assert "show " in result.output
|
||||
|
||||
|
||||
def test_version(runner):
|
||||
result = runner.invoke(pycalver.cli, ['--version', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
assert " version v20" in result.output
|
||||
match = version.PYCALVER_RE.search(result.output)
|
||||
assert match
|
||||
|
||||
|
||||
def test_incr(runner):
|
||||
old_version = "v201701.0999-alpha"
|
||||
initial_version = config._initial_version()
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['incr', old_version, "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
new_version = initial_version.replace(".0001-alpha", ".11000-alpha")
|
||||
assert f"PyCalVer Version: {new_version}\n" in result.output
|
||||
|
||||
|
||||
def test_incr_to_beta(runner):
|
||||
old_version = "v201701.0999-alpha"
|
||||
initial_version = config._initial_version()
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['incr', old_version, "--verbose", "--release", "beta"])
|
||||
assert result.exit_code == 0
|
||||
new_version = initial_version.replace(".0001-alpha", ".11000-beta")
|
||||
assert f"PyCalVer Version: {new_version}\n" in result.output
|
||||
|
||||
|
||||
def test_incr_to_final(runner):
|
||||
old_version = "v201701.0999-alpha"
|
||||
initial_version = config._initial_version()
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['incr', old_version, "--verbose", "--release", "final"])
|
||||
assert result.exit_code == 0
|
||||
new_version = initial_version.replace(".0001-alpha", ".11000")
|
||||
assert f"PyCalVer Version: {new_version}\n" in result.output
|
||||
|
||||
|
||||
def test_incr_invalid(runner, caplog):
|
||||
old_version = "v201701.0999-alpha"
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['incr', old_version, "--verbose", "--release", "alfa"])
|
||||
assert result.exit_code == 1
|
||||
|
||||
|
||||
def _add_project_files(*files):
|
||||
if "README.md" in files:
|
||||
with io.open("README.md", mode="wt", encoding="utf-8") as fh:
|
||||
fh.write("Hello World v201701.0002-alpha !\n")
|
||||
|
||||
if "setup.cfg" in files:
|
||||
with io.open("setup.cfg", mode="wt", encoding="utf-8") as fh:
|
||||
fh.write(SETUP_CFG_FIXTURE)
|
||||
|
||||
if "pycalver.toml" in files:
|
||||
with io.open("pycalver.toml", mode="wt", encoding="utf-8") as fh:
|
||||
fh.write(PYCALVER_TOML_FIXTURE)
|
||||
|
||||
if "pyproject.toml" in files:
|
||||
with io.open("pyproject.toml", mode="wt", encoding="utf-8") as fh:
|
||||
fh.write(PYPROJECT_TOML_FIXTURE)
|
||||
|
||||
|
||||
def test_nocfg(runner, caplog):
|
||||
_add_project_files("README.md")
|
||||
result = runner.invoke(pycalver.cli, ['show', "--verbose"])
|
||||
assert result.exit_code == 1
|
||||
assert any(
|
||||
bool("Could not parse configuration. Perhaps try 'pycalver init'." in r.message)
|
||||
for r in caplog.records
|
||||
)
|
||||
|
||||
|
||||
def test_novcs_nocfg_init(runner):
|
||||
_add_project_files("README.md")
|
||||
result = runner.invoke(pycalver.cli, ['init', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
with io.open("pycalver.toml", mode="r", encoding="utf-8") as fh:
|
||||
cfg_content = fh.read()
|
||||
|
||||
base_str = config.DEFAULT_TOML_BASE_TMPL.format(initial_version=config._initial_version())
|
||||
assert base_str in cfg_content
|
||||
assert config.DEFAULT_TOML_README_MD_STR in cfg_content
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['show', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
assert f"Current Version: {config._initial_version()}\n" in result.output
|
||||
assert f"PEP440 Version : {config._initial_version_pep440()}\n" in result.output
|
||||
|
||||
|
||||
def test_novcs_setupcfg_init(runner):
|
||||
_add_project_files("README.md", "setup.cfg")
|
||||
result = runner.invoke(pycalver.cli, ['init', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
with io.open("setup.cfg", mode="r", encoding="utf-8") as fh:
|
||||
cfg_content = fh.read()
|
||||
|
||||
base_str = config.DEFAULT_CONFIGPARSER_BASE_TMPL.format(
|
||||
initial_version=config._initial_version()
|
||||
)
|
||||
assert base_str in cfg_content
|
||||
assert config.DEFAULT_CONFIGPARSER_README_MD_STR in cfg_content
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['show', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
assert f"Current Version: {config._initial_version()}\n" in result.output
|
||||
assert f"PEP440 Version : {config._initial_version_pep440()}\n" in result.output
|
||||
|
||||
|
||||
def test_novcs_pyproject_init(runner):
|
||||
_add_project_files("README.md", "pyproject.toml")
|
||||
result = runner.invoke(pycalver.cli, ['init', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
with io.open("pyproject.toml", mode="r", encoding="utf-8") as fh:
|
||||
cfg_content = fh.read()
|
||||
|
||||
base_str = config.DEFAULT_TOML_BASE_TMPL.format(initial_version=config._initial_version())
|
||||
assert base_str in cfg_content
|
||||
assert config.DEFAULT_TOML_README_MD_STR in cfg_content
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['show'])
|
||||
assert result.exit_code == 0
|
||||
assert f"Current Version: {config._initial_version()}\n" in result.output
|
||||
assert f"PEP440 Version : {config._initial_version_pep440()}\n" in result.output
|
||||
|
||||
|
||||
def _vcs_init(vcs):
|
||||
assert not pl.Path(f".{vcs}").exists()
|
||||
sp.check_output([f"{vcs}", "init"])
|
||||
assert pl.Path(f".{vcs}").is_dir()
|
||||
|
||||
sp.check_output([f"{vcs}", "add", "README.md"])
|
||||
sp.check_output([f"{vcs}", "commit", "-m", "initial commit"])
|
||||
|
||||
|
||||
def test_git_init(runner):
|
||||
_add_project_files("README.md")
|
||||
_vcs_init("git")
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['init', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['show'])
|
||||
assert result.exit_code == 0
|
||||
assert f"Current Version: {config._initial_version()}\n" in result.output
|
||||
assert f"PEP440 Version : {config._initial_version_pep440()}\n" in result.output
|
||||
|
||||
|
||||
def test_hg_init(runner):
|
||||
_add_project_files("README.md")
|
||||
_vcs_init("hg")
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['init', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['show'])
|
||||
assert result.exit_code == 0
|
||||
assert f"Current Version: {config._initial_version()}\n" in result.output
|
||||
assert f"PEP440 Version : {config._initial_version_pep440()}\n" in result.output
|
||||
|
||||
|
||||
def test_git_tag_eval(runner):
|
||||
_add_project_files("README.md")
|
||||
_vcs_init("git")
|
||||
|
||||
# This will set a version that is older than the version tag
|
||||
# we set in the vcs, which should take precedence.
|
||||
result = runner.invoke(pycalver.cli, ['init', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
initial_version = config._initial_version()
|
||||
tag_version = initial_version.replace(".0001-alpha", ".0123-beta")
|
||||
tag_version_pep440 = tag_version[1:7] + ".123b0"
|
||||
|
||||
sp.check_output(
|
||||
["git", "tag", "--annotate", tag_version, "--message", f"bump version to {tag_version}"]
|
||||
)
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['show', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
assert f"Current Version: {tag_version}\n" in result.output
|
||||
assert f"PEP440 Version : {tag_version_pep440}\n" in result.output
|
||||
|
||||
|
||||
def test_hg_tag_eval(runner):
|
||||
_add_project_files("README.md")
|
||||
_vcs_init("hg")
|
||||
|
||||
# This will set a version that is older than the version tag
|
||||
# we set in the vcs, which should take precedence.
|
||||
result = runner.invoke(pycalver.cli, ['init', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
initial_version = config._initial_version()
|
||||
tag_version = initial_version.replace(".0001-alpha", ".0123-beta")
|
||||
tag_version_pep440 = tag_version[1:7] + ".123b0"
|
||||
|
||||
sp.check_output(["hg", "tag", tag_version, "--message", f"bump version to {tag_version}"])
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['show', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
assert f"Current Version: {tag_version}\n" in result.output
|
||||
assert f"PEP440 Version : {tag_version_pep440}\n" in result.output
|
||||
|
||||
|
||||
def test_novcs_bump(runner):
|
||||
_add_project_files("README.md")
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['init', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['bump', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
calver = config._initial_version()[:7]
|
||||
|
||||
with io.open("README.md") as fh:
|
||||
content = fh.read()
|
||||
assert calver + ".0002-alpha !\n" in content
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['bump', "--verbose", "--release", "beta"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
with io.open("README.md") as fh:
|
||||
content = fh.read()
|
||||
assert calver + ".0003-beta !\n" in content
|
||||
|
||||
|
||||
def test_git_bump(runner):
|
||||
_add_project_files("README.md")
|
||||
_vcs_init("git")
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['init', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
result = runner.invoke(pycalver.cli, ['bump', "--verbose"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
calver = config._initial_version()[:7]
|
||||
|
||||
with io.open("README.md") as fh:
|
||||
content = fh.read()
|
||||
assert calver + ".0002-alpha !\n" in content
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue