Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return inner
def make_from_callback(function: Callable, mock_commit: Optional[str] = "abc") -> Callable:
def inner(*args, **kwargs):
version = function(*args, **kwargs)
if version.commit and mock_commit:
version.commit = mock_commit
return version
return inner
from_any_vcs = make_from_callback(Version.from_any_vcs)
from_any_vcs_unmocked = make_from_callback(Version.from_any_vcs, mock_commit=None)
from_explicit_vcs = make_from_callback(Version.from_vcs)
def test__version__init() -> None:
v = Version("1", stage=("a", 2), distance=3, commit="abc", dirty=True)
assert v.base == "1"
assert v.stage == "a"
assert v.revision == 2
assert v.distance == 3
assert v.commit == "abc"
assert v.dirty
def test__version__str() -> None:
v = Version("1", stage=("a", 2), distance=3, commit="abc", dirty=True)
assert str(v) == v.serialize()
return inner
def make_from_callback(function: Callable, mock_commit: Optional[str] = "abc") -> Callable:
def inner(*args, **kwargs):
version = function(*args, **kwargs)
if version.commit and mock_commit:
version.commit = mock_commit
return version
return inner
from_any_vcs = make_from_callback(Version.from_any_vcs)
from_any_vcs_unmocked = make_from_callback(Version.from_any_vcs, mock_commit=None)
from_explicit_vcs = make_from_callback(Version.from_vcs)
@pytest.mark.skipif(shutil.which("git") is None, reason="Requires Git")
def test__version__from_git(tmp_path) -> None:
vcs = tmp_path / "dunamai-git"
vcs.mkdir()
run = make_run_callback(vcs)
from_vcs = make_from_callback(Version.from_git)
with chdir(vcs):
run("git init")
assert from_vcs() == Version("0.0.0", distance=0, commit=None, dirty=True)
(vcs / "foo.txt").write_text("hi")
assert from_vcs() == Version("0.0.0", distance=0, commit=None, dirty=True)
def from_vcs(
vcs: Vcs,
pattern: str,
metadata: Optional[bool],
dirty: bool,
format: Optional[str],
style: Optional[Style],
latest_tag: bool,
tag_dir: str,
debug: bool,
) -> None:
version = Version.from_vcs(vcs, pattern, latest_tag, tag_dir)
print(version.serialize(metadata, dirty, format, style))
if debug:
print("# Matched tag: {}".format(version._matched_tag), file=sys.stderr)
print("# Newer unmatched tags: {}".format(version._newer_unmatched_tags), file=sys.stderr)
def _get_version(config: Mapping) -> Tuple[Version, str]:
vcs = Vcs(config["vcs"])
style = config["style"]
if style is not None:
style = Style(style)
version = Version.from_vcs(
vcs, config["pattern"], config["latest-tag"], config["subversion"]["tag-dir"]
)
if config["format-jinja"]:
default_context = {
"base": version.base,
"stage": version.stage,
"revision": version.revision,
"distance": version.distance,
"commit": version.commit,
"dirty": version.dirty,
"env": os.environ,
"bump_version": bump_version,
"serialize_pep440": serialize_pep440,
"serialize_pvp": serialize_pvp,
"serialize_semver": serialize_semver,
}