def get_package_version(quay_org, repo, version=None):
    """Returns version of new release.
    If version is passed, it will be validated
    If no version is passed then quay repo is queried for versions and latest
    version is incremented by 1 on major position.

    :param QuayOrganization quay_org: Quay organization object
    :param str repo: repository name
    :param str|None version:
    :rtype: str
    :return: version to be used as release
    """
    if version is None:
        try:
            latest_ver = quay_org.get_latest_release_version(repo)
        except QuayPackageNotFound as e:
            version = current_app.config['DEFAULT_RELEASE_VERSION']
            logger.info("Using default release %s, reason: %s", version, e)
        else:
            latest_ver.increment()
            version = str(latest_ver)
    else:
        try:
            ReleaseVersion.validate_version(version)
        except ValueError as e:
            raise OMPSInvalidVersionFormat(str(e))
    return version
Esempio n. 2
0
    def test_ordering(self):
        """Test if ordering works as expected"""
        min_version = ReleaseVersion.from_str("1.0.0")
        mid_version = ReleaseVersion.from_str("1.2.3")
        max_version = ReleaseVersion.from_str("2.0.0")

        versions = (max_version, min_version, mid_version)

        assert min_version == min_version
        assert min_version != max_version
        assert min_version != mid_version
        assert min_version < mid_version < max_version
        assert max_version > mid_version > min_version
        assert min_version == min(versions)
        assert max_version == max(versions)
def _get_package_version(quay_org, repo, version=None):
    if version is None:
        try:
            latest_ver = quay_org.get_latest_release_version(repo)
        except QuayPackageNotFound:
            version = current_app.config['DEFAULT_RELEASE_VERSION']
        else:
            latest_ver.increment()
            version = str(latest_ver)
    else:
        try:
            ReleaseVersion.validate_version(version)
        except ValueError as e:
            raise OMPSInvalidVersionFormat(str(e))
    return version
Esempio n. 4
0
    def test_get_releases(self):
        """Test if only proper releases are used and returned"""
        org = "test_org"
        repo = "test_repo"

        qo = QuayOrganization(org, TOKEN)
        (flexmock(qo).should_receive('get_releases_raw').and_return(
            ["1.0.0", "1.0.1-random", "1.2.0"]))

        expected = [ReleaseVersion.from_str(v) for v in ["1.0.0", "1.2.0"]]

        assert qo.get_releases(repo) == expected
Esempio n. 5
0
 def test_ordering_other_types(self, value):
     """Test if a proper exception is raised when comparing to unsupported
     types"""
     version = ReleaseVersion.from_str("1.0.0")
     with pytest.raises(TypeError):
         assert version < value
Esempio n. 6
0
 def test_increment(self, from_version, expected):
     """Test if incrementation of version works as expected"""
     version = ReleaseVersion.from_str(from_version)
     version.increment()
     assert str(version) == expected
Esempio n. 7
0
 def test_to_str(self):
     """Test textual representation"""
     version = ReleaseVersion(1, 2, 3)
     assert str(version) == "1.2.3"
Esempio n. 8
0
 def test_from_str_invalid(self, value):
     """Test if error is properly raised for invalid input"""
     with pytest.raises(ValueError):
         ReleaseVersion.from_str(value)
Esempio n. 9
0
 def test_from_str(self, version, expected):
     """Test of creating ReleaseVersion object from string"""
     v = ReleaseVersion.from_str(version)
     assert isinstance(v, ReleaseVersion)
     assert v.version_tuple == expected