Skip to content

Commit

Permalink
Allow more strategies for major,minor,patch (#162)
Browse files Browse the repository at this point in the history
  • Loading branch information
ludeeus committed May 11, 2022
1 parent e8f9246 commit 275ed72
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 6 deletions.
41 changes: 35 additions & 6 deletions awesomeversion/awesomeversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,22 +277,51 @@ def sections(self) -> int:

@property
def major(self) -> AwesomeVersion | None:
"""Return a AwesomeVersion representation of the major version."""
if self.strategy != AwesomeVersionStrategy.SEMVER:
"""
Return a AwesomeVersion representation of the major version.
Will return None if the versions is not semver/buildver/simplever.
"""
if self.strategy not in (
AwesomeVersionStrategy.SEMVER,
AwesomeVersionStrategy.BUILDVER,
AwesomeVersionStrategy.SIMPLEVER,
):
return None
return AwesomeVersion(self.section(0))

@property
def minor(self) -> AwesomeVersion | None:
"""Return a AwesomeVersion representation of the minor version."""
if self.strategy != AwesomeVersionStrategy.SEMVER:
"""
Return a AwesomeVersion representation of the minor version.
Will return None if the versions is not semver/simplever
Will return None if the version does not have at least 2 sections.
"""
if self.strategy not in (
AwesomeVersionStrategy.SEMVER,
AwesomeVersionStrategy.SIMPLEVER,
):
return None

return AwesomeVersion(self.section(1))

@property
def patch(self) -> AwesomeVersion | None:
"""Return a AwesomeVersion representation of the patch version."""
if self.strategy != AwesomeVersionStrategy.SEMVER:
"""
Return a AwesomeVersion representation of the patch version.
Will return None if the versions is not semver/simplever
Will return None if the version does not have at least 3 sections.
"""
if (
self.strategy
not in (
AwesomeVersionStrategy.SEMVER,
AwesomeVersionStrategy.SIMPLEVER,
)
or self.sections < 3
):
return None
return AwesomeVersion(self.section(2))

Expand Down
24 changes: 24 additions & 0 deletions tests/test_awesomeversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,30 @@ def test_awesomeversion() -> None:
assert upstream > current


def test_major() -> None:
"""Test major."""
assert AwesomeVersion("1.0.0.0").major == 1
assert AwesomeVersion("1.0.0").major == 1
assert AwesomeVersion("1.0").major == 1
assert AwesomeVersion("1").major == 1


def test_minor() -> None:
"""Test minor."""
assert AwesomeVersion("1.1.0.0").minor == 1
assert AwesomeVersion("1.1.0").minor == 1
assert AwesomeVersion("1.1").minor == 1
assert AwesomeVersion("1").minor is None


def test_patch() -> None:
"""Test patch."""
assert AwesomeVersion("1.1.1.1").patch == 1
assert AwesomeVersion("1.1.1").patch == 1
assert AwesomeVersion("1.1").patch is None
assert AwesomeVersion("1").patch is None


def test_serialization() -> None:
"""Test to and from JSON serialization."""
version = AwesomeVersion("20.12.1")
Expand Down

0 comments on commit 275ed72

Please sign in to comment.