Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .flake8
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ exclude=
env,
build,
dist
max-line-length = 88
max-line-length = 120
# E203: whitespace before ":". Sometimes violated by black.
# E402: Module level import not at top of file. Violated by lazy imports.
# F401: Module imported but unused.
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,7 @@ dmypy.json

# example output
example/*.csv
settings.json
settings.json

# macOS files
.DS_Store
3 changes: 1 addition & 2 deletions staflversion/cli.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
"""CLI interface for staflversion project.
"""
"""CLI interface for staflversion project."""

import argparse

Expand Down
1 change: 0 additions & 1 deletion staflversion/git.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
here you put your main classes and objects.
"""


import subprocess

from typing import List, Optional
Expand Down
12 changes: 6 additions & 6 deletions staflversion/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
@total_ordering
class StaflVersion:
VERSION_REGEX = re.compile(
r"^(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\+(?P<build>\d+)$"
r"^(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\+(?P<build>\d+)(-(?P<prerelease_metadata>.+))?$"
)

def __init__(self, major: int, minor: int, patch: int, build: int):
Expand Down Expand Up @@ -85,14 +85,16 @@ class StaflVersioner:
_INCREMENT_MAJOR = "+semver:major"
_INCREMENT_MINOR = "+semver:minor"
_INCREMENT_PATCH = "+semver:patch"
_SET_VERSION = re.compile(r"\+semver-set:" + StaflVersion.VERSION_REGEX.pattern[1:-1])
_SET_VERSION = re.compile(
r"\+semver-set:" + StaflVersion.VERSION_REGEX.pattern[1:-1]
)

def __init__(self, git: GitWrapper):
self._git = git

def determine_version(self) -> StaflVersion:
tags = self._git.get_tags()

if tags:
new_commit_messages = self._git.get_commit_messages_since_tag()
else:
Expand All @@ -109,9 +111,7 @@ def determine_version(self) -> StaflVersion:
increment_patch = any([self._INCREMENT_PATCH in m for m in new_commit_messages])

versions = [
StaflVersion.parse(t)
for t in tags
if StaflVersion.try_parse(t) is not None
StaflVersion.parse(t) for t in tags if StaflVersion.try_parse(t) is not None
]
versions.sort(reverse=True)
last_version = versions[0] if versions else StaflVersion(0, 0, 0, 0)
Expand Down
3 changes: 2 additions & 1 deletion tests/test_git.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ def tempdir():

@pytest.fixture
def sample_repo(tempdir: str, monkeypatch: MonkeyPatch):
# tempdir above must come before monkeypatch so that the directory is changed back before the directory is cleanup up
# tempdir above must come before monkeypatch so that the directory is
# changed back before the directory is cleaned up
monkeypatch.chdir(tempdir)
system(
"git init &&\
Expand Down
8 changes: 8 additions & 0 deletions tests/test_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,3 +132,11 @@ def test_version_determine_set_version():
)
versioner = StaflVersioner(git)
assert versioner.determine_version() == StaflVersion(1, 2, 3, 4)


def test_version_patch_release():
git = MockGitWrapper(
["Fix critical bug +semver:patch"], ["1.2.3+4-dev/patch", "1.2.2+0"]
)
versioner = StaflVersioner(git)
assert versioner.determine_version() == StaflVersion(1, 2, 4, 0)