Пример #1
0
 def test_command_set_version(self):
     with patch.object(PackageVersion, "set") as set_mock:
         assert Executor(Version("1.2.3")).command_set_version() is None
         set_mock.assert_called_with(Version("1.2.3"))
         set_mock.side_effect = PackageVersionError
         with pytest.raises(ExecutorError):
             Executor(Version("1.2.3")).command_set_version()
Пример #2
0
 def test_command_get_version(self):
     with patch.object(PackageVersion, "get") as get_mock:
         get_mock.return_value = "test"
         assert Executor(Version("1.2.3")).command_get_version() == "test"
         get_mock.assert_called_with()
         get_mock.side_effect = PackageVersionError
         with pytest.raises(ExecutorError):
             Executor(Version("1.2.3")).command_get_version()
Пример #3
0
 def test_bump_postrelease(self):
     assert Version("1.2.3").bump_postrelease().dumps() == "1.2.3.post1"
     assert Version(
         "1.2.3alpha").bump_postrelease().dumps() == "1.2.3.post1"
     assert Version("1.2.3.post4").bump_postrelease(
         2).dumps() == "1.2.3.post6"
     assert Version(
         "1.2.3.post").bump_postrelease().dumps() == "1.2.3.post2"
     assert Version("1.2.3").bump_postrelease(2).dumps() == "1.2.3.post2"
Пример #4
0
def get_stdin() -> Version:
    """
    Get input from stdin.

    Returns:
        Parsed version.
    """
    if sys.stdin.isatty():
        return Version.zero()

    for line in sys.stdin.readlines():
        return Version(line.strip().split(" ")[-1])

    return Version.zero()
Пример #5
0
    def _set_in_pyproject(self, version: Version) -> None:
        if not self._pyproject_path.exists():
            return

        text = self._pyproject_path.read_text()
        line_ending = EOLFixer.get_line_ending(text)
        lines = []
        changed = False
        for line in text.splitlines():
            if not line.startswith("version"):
                lines.append(line)
                continue

            match = self.RE_PYPROJECT.match(line)
            if not match:
                lines.append(line)
                continue

            old_version = match.group(1)
            self._logger.info(
                f"Changing version in {print_path(self._pyproject_path)}"
                f" from {old_version} to {version.dumps()}"
            )
            new_line = line.replace(old_version, version.dumps())
            lines.append(new_line)
            changed = True

        if changed:
            text = EOLFixer.add_newline(line_ending.join(lines))
            self._pyproject_path.write_text(text)
Пример #6
0
def get_stdin() -> Version:
    """
    Get input from stdin.

    Returns:
        Parsed version.
    """
    if sys.stdin.isatty():
        return Version.zero()

    for line in sys.stdin.readlines():
        safe_line = line.strip().split(" ")[-1].replace('"',
                                                        "").replace("'", "")
        return Version(safe_line)

    return Version.zero()
Пример #7
0
 def test_get(self):
     with tempfile.TemporaryDirectory() as path_str:
         path = Path(path_str)
         (path /
          "setup.py").write_text("\n\nsetup(\n    version ='1.2.3',\n)")
         assert PackageVersion(path).get() == Version("1.2.3")
         (path /
          "setup.cfg").write_text("name=mypackage\n\nversion = 1.2.4\n\n")
         assert PackageVersion(path).get() == Version("1.2.4")
         (path / "version.txt").write_text("1.2.5\n")
         (path / "setup.cfg"
          ).write_text("name=mypackage\n\nversion = file: version.txt\n\n")
         assert PackageVersion(path).get() == Version("1.2.5")
         (path / "pyproject.toml").write_text(
             '[tool.poetry]\nname= "mypackage"\n\nversion = "1.2.6"\n\n')
         assert PackageVersion(path).get() == Version("1.2.6")
Пример #8
0
 def test_set(self):
     with tempfile.TemporaryDirectory() as path_str:
         path = Path(path_str)
         assert PackageVersion(path).set(Version("1.2.3")) is None
         (path /
          "setup.py").write_text("\n\nsetup(\n    version ='1.2.0',\n)")
         (path /
          "setup.cfg").write_text("name=mypackage\n\nversion= 1.1.0\n\n")
         (path / "pyproject.toml").write_text(
             '[tool.poetry]\nname= "mypackage"\n\nversion = "1.1.1"\n\n')
         assert PackageVersion(path).set(Version("1.2.3")) is None
         assert (path / "setup.py"
                 ).read_text() == "\n\nsetup(\n    version ='1.2.3',\n)\n"
         assert (path / "setup.cfg"
                 ).read_text() == "name=mypackage\n\nversion= 1.2.3\n"
         assert (path / "pyproject.toml").read_text(
         ) == '[tool.poetry]\nname= "mypackage"\n\nversion = "1.2.3"\n'
         (path / "setup.cfg"
          ).write_text("name=mypackage\n\nversion = file: version.txt\n\n")
         assert PackageVersion(path).set(Version("1.2.3")) is None
         assert (path / "version.txt").read_text() == "1.2.3\n"
Пример #9
0
 def test_bump_minor(self):
     assert Version("1.2.3").bump_minor().dumps() == "1.3.0"
     assert Version("1.2.3rc4").bump_minor(2).dumps() == "1.4.0"
     assert Version("1.2.3rc4").bump_minor(0).dumps() == "1.2.0"
     assert Version("1.3.0rc4").bump_minor().dumps() == "1.3.0"
     assert Version("1.3.0rc4").bump_minor(2).dumps() == "1.4.0"
     assert Version("1").bump_minor().dumps() == "1.1.0"
Пример #10
0
 def test_bump_micro(self):
     assert Version("1.2.3").bump_micro().dumps() == "1.2.4"
     assert Version("1.2.3rc4").bump_micro().dumps() == "1.2.3"
     assert Version("1.2.3rc4").bump_micro(2).dumps() == "1.2.4"
     assert Version("1.2.3rc4").bump_micro(0).dumps() == "1.2.2"
     assert Version("1").bump_micro().dumps() == "1.0.1"
     assert Version("1.2").bump_micro().dumps() == "1.2.1"
Пример #11
0
 def test_bump_prerelease(self):
     assert Version("1.2.3").bump_prerelease().dumps() == "1.2.4rc1"
     assert Version("1.2.3alpha").bump_prerelease().dumps() == "1.2.3a2"
     assert Version("1.2.3rc4").bump_prerelease(2).dumps() == "1.2.3rc6"
     assert Version("1.2.3rc4").bump_prerelease(
         2, "alpha").dumps() == "1.2.4a2"
     assert Version("1.2.3").bump_prerelease(2,
                                             "alpha").dumps() == "1.2.4a2"
     assert Version("1.2.3").bump_prerelease(2, "alpha",
                                             "major").dumps() == "2.0.0a2"
     assert Version("1.2.3a3").bump_prerelease(2, "alpha",
                                               "major").dumps() == "1.2.3a5"
     assert Version("1.2.3a3").bump_prerelease(
         2, "rc", "major").dumps() == "1.2.3rc2"
Пример #12
0
 def test_bump_major(self):
     assert Version("1.2.3").bump_major().dumps() == "2.0.0"
     assert Version("1.2.3rc4").bump_major(2).dumps() == "3.0.0"
     assert Version("2.0.0").bump_major().dumps() == "3.0.0"
     assert Version("2.0.0rc4").bump_major().dumps() == "2.0.0"
     assert Version("2.1.0rc4").bump_major().dumps() == "3.0.0"
     assert Version("2.1.0rc4").bump_major(2).dumps() == "4.0.0"
Пример #13
0
 def test_replace(self):
     assert Version("1.2.3").replace(dev=45).dumps() == "1.2.3.dev45"
     assert Version("1.2.3.dev14").replace(dev=36).dumps() == "1.2.3.dev36"
     assert Version("1.2.3-dev14").replace(dev=45).dumps() == "1.2.3.dev45"
     assert Version("1.2.3rc3").replace(dev=45).dumps() == "1.2.3rc3.dev45"
     assert Version("1.2.3rc3").replace(major=3).dumps() == "3.2.3rc3"
     assert Version("1.2.3rc3").replace(
         local="test-1").dumps() == "1.2.3rc3+test.1"
Пример #14
0
    def _get_from_setup_cfg(self) -> Optional[Version]:
        if not self._setup_cfg_path.exists():
            return

        self._logger.debug(f"Found {print_path(self._setup_cfg_path)}, extracting version from it")
        text = self._setup_cfg_path.read_text()
        for line in text.splitlines():
            if not line.startswith("version"):
                continue

            match = self.RE_SETUP_CFG_FILE.match(line)
            if match:
                version_path = self._path / Path(match.group(1))
                self._logger.debug(f"Getting version from {match.group(1)}")
                return Version(version_path.read_text().strip())

            match = self.RE_SETUP_CFG.match(line)
            if not match:
                continue

            version_str = match.group(1)
            self._logger.debug(f"Version {version_str} found")
            return Version(version_str)
Пример #15
0
 def test_bump_rc_version(self):
     body = RecordBody((
         RecordSection("removed", "- removed"),
         RecordSection("added", "- added"),
         RecordSection("fixed", "- fixed"),
     ))
     assert body.bump_rc_version(Version("1.2.3")) == Version("2.0.0rc1")
     assert body.bump_rc_version(Version("1.2.3rc1")) == Version("2.0.0rc1")
     assert body.bump_rc_version(Version("1.0.0rc1")) == Version("1.0.0rc2")
Пример #16
0
    def _get_from_pyproject(self) -> Optional[Version]:
        if not self._pyproject_path.exists():
            return

        self._logger.debug(f"Found {print_path(self._pyproject_path)}, extracting version from it")
        text = self._pyproject_path.read_text()
        for line in text.splitlines():
            if not line.startswith("version"):
                continue

            match = self.RE_PYPROJECT.match(line)
            if not match:
                continue

            version_str = match.group(1)
            self._logger.debug(f"Version {version_str} found")
            return Version(version_str)
Пример #17
0
    def test_bump_version(self):
        body = RecordBody((
            RecordSection("removed", "- removed"),
            RecordSection("added", "- added"),
            RecordSection("fixed", "- fixed"),
        ))
        assert body.bump_version(Version("1.2.3")) == Version("2.0.0")

        body = RecordBody((
            RecordSection("removed", ""),
            RecordSection("added", "- added"),
            RecordSection("fixed", "- fixed"),
        ))
        assert body.bump_version(Version("1.2.3")) == Version("1.3.0")

        body = RecordBody((
            RecordSection("removed", ""),
            RecordSection("added", ""),
            RecordSection("fixed", "- fixed"),
        ))
        assert body.bump_version(Version("1.2.3")) == Version("1.2.4")
        assert RecordBody().bump_version(Version("1.2.3")) == Version("1.2.4")
Пример #18
0
 def test_command_get(self):
     executor = Executor(Version("1.2.3rc4"))
     assert executor.command_get("major") == "1"
     assert executor.command_get("minor") == "2"
     assert executor.command_get("micro") == "3"
     assert executor.command_get("rc") == "4"
     assert executor.command_get("pre") == "rc4"
     assert executor.command_get("alpha") == "0"
     assert executor.command_get("beta") == "0"
     assert executor.command_get("post") == "0"
     assert executor.command_get("epoch") == "0"
     assert Executor(Version("1.2.3a4")).command_get("alpha") == "4"
     assert Executor(Version("1.2.3b5")).command_get("beta") == "5"
     assert Executor(Version("1.2.3.post7")).command_get("post") == "7"
     assert Executor(Version("1234!1.2.3.post7")).command_get("epoch") == "1234"
     assert Executor(Version("1234!1.2.3.post7+localver")).command_get("local") == "localver"
Пример #19
0
 def test_command_stable(self):
     assert Executor(Version("1.2.3a4")).command_stable() == Version("1.2.3")
     assert Executor(Version("1.2.4")).command_stable() == Version("1.2.4")
     assert Executor(Version("1.2.4.post4")).command_stable() == Version("1.2.4")
     assert Executor(Version("1234!1.2")).command_stable() == Version("1.2.0")
Пример #20
0
 def test_comparison(self):
     assert Version("1.2.32") > Version("1.2.5")
     assert Version("1.2.3") > Version("1.2.3.rc3")
     assert Version("1.2.3.rc3") > Version("1.2.3.rc2")
     assert Version("1.2.3rc3") == Version("1.2.3.rc3")
     assert Version("1.2.3alpha3") == Version("1.2.3a3")
     assert Version("1.2.3.rc3") < Version("1.2.3.rc4")
     assert Version("1.2.3.rc3") < Version("1.2.3")
     assert Version("1.2.3.dev3") < Version("1.2.3a1")
     assert Version("1.2.3.post3") > Version("1.2.3")
Пример #21
0
 def test_get_stable(self):
     assert Version("1.2.3").get_stable().dumps() == "1.2.3"
     assert Version("2.1.0a2").get_stable().dumps() == "2.1.0"
     assert Version("1.2.5.post3").get_stable().dumps() == "1.2.5"
Пример #22
0
 def test_command_compare(self):
     assert Executor(Version("1.2.3")).command_compare("lt", Version("1.3.0")) is None
     assert Executor(Version("1.2.3")).command_compare("lte", Version("1.3.0")) is None
     assert Executor(Version("1.2.3")).command_compare("gt", Version("1.2.0")) is None
     assert Executor(Version("1.2.3")).command_compare("gte", Version("1.2.3")) is None
     assert Executor(Version("1.2.3")).command_compare("eq", Version("1.2.3")) is None
     with pytest.raises(ExecutorError):
         Executor(Version("1.2.3")).command_compare("ne", Version("1.2.3"))
Пример #23
0
 def test_command_set(self):
     assert Executor(Version("1.2.3")).command_set("major", 3) == Version("3.2.3")
     assert Executor(Version("1.2.3")).command_set("minor", 3) == Version("1.3.3")
     assert Executor(Version("1.2.3")).command_set("micro", 4) == Version("1.2.4")
     assert Executor(Version("1.2.3")).command_set("pre", 4) == Version("1.2.3rc4")
     assert Executor(Version("1.2.3rc2")).command_set("pre", 4) == Version("1.2.3rc4")
     assert Executor(Version("1.2.3a2")).command_set("pre", 4) == Version("1.2.3a4")
     assert Executor(Version("1.2.3b2")).command_set("pre", 4) == Version("1.2.3b4")
     assert Executor(Version("1.2.3")).command_set("epoch", 1234) == Version("1234!1.2.3")
     assert Executor(Version("1.2.3")).command_set("alpha", 4) == Version("1.2.3a4")
     assert Executor(Version("1.2.3")).command_set("beta", 4) == Version("1.2.3b4")
     assert Executor(Version("1.2.3")).command_set("rc", 4) == Version("1.2.3rc4")
Пример #24
0
    def test_parse(self):
        assert Version.zero().dumps() == "0.0.0"
        assert Version("1.2.3").major == 1
        assert Version("1.2.3").minor == 2
        assert Version("1.2.3").micro == 3
        assert Version("1.2.3").pre == None
        assert Version("1.2.3rc4").pre == ("rc", 4)
        assert Version("1.2.3.alpha4").pre == ("a", 4)
        assert Version("1.2.3.alpha").pre == ("a", 0)
        assert Version("1.2.3-rc4").pre == ("rc", 4)
        assert Version("1.2.3-dev5").is_devrelease
        assert Version("1.2.3").is_stable
        assert not Version("1.2.3").is_devrelease
        assert Version("1.2.3.post3").is_stable
        assert Version("1.2.3.post3").is_postrelease

        with pytest.raises(VersionError):
            Version("invalid")
Пример #25
0
 def test_command_bump(self):
     assert Executor(Version("1.2.3")).command_bump("major", 3) == Version("4.0.0")
     assert Executor(Version("1.2.3")).command_bump("minor", 3) == Version("1.5.0")
     assert Executor(Version("1.2.3")).command_bump("micro", 3) == Version("1.2.6")
     assert Executor(Version("1.2.3")).command_bump("pre", 3) == Version("1.2.4rc3")
     assert Executor(Version("1.2.3rc1")).command_bump("pre", 3) == Version("1.2.3rc4")
     assert Executor(Version("1.2.3rc2")).command_bump("rc", 3) == Version("1.2.3rc5")
     assert Executor(Version("1.2.3rc2")).command_bump("alpha", 3) == Version("1.2.4a3")
     assert Executor(Version("1.2.3")).command_bump("post", 1) == Version("1.2.3.post1")
     assert Executor(Version("1.2.3.post5")).command_bump("post", 1) == Version("1.2.3.post6")
     with pytest.raises(ExecutorError):
         Executor(Version("1.2.3.post5")).command_bump("unknown", 1)
Пример #26
0
 def __init__(
         self,
         input: Version = Version.zero(),
 ) -> None:
     self._input = input
Пример #27
0
 def test_command_is_stable(self):
     assert Executor(Version("1.2.3")).command_is_stable() is None
     assert Executor(Version("1.2.3.post3")).command_is_stable() is None
     assert Executor(Version("123!1.2.3.post3")).command_is_stable() is None
     with pytest.raises(ExecutorError):
         Executor(Version("1.2.3a4")).command_is_stable()