blob: 919424ed83b651f3ff1af967d701c731e0b015b0 [file] [log] [blame]
# -*- coding: utf-8 -*-
# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unittests for CPV parsing module."""
import pytest
from chromite.lib.parser import package_info
def test_parse_cpf():
"""Validate parsing a full CPF."""
cpf = 'foo/bar-1.0.0_alpha-r2'
pkg = package_info.parse(cpf)
assert pkg.category == 'foo'
assert pkg.package == 'bar'
assert pkg.version == '1.0.0_alpha'
assert pkg.revision == 2
assert pkg.cpf == cpf
def test_parse_pv():
"""Validate parsing a PV."""
pkg = package_info.parse('bar-1.2.3_rc1-r5')
assert not pkg.category
assert pkg.package == 'bar'
assert pkg.version == '1.2.3_rc1'
assert pkg.revision == 5
def test_parse_atom():
"""Validate parsing an atom."""
pkg = package_info.parse('foo/bar')
assert pkg.category == 'foo'
assert pkg.package == 'bar'
assert not pkg.version
assert not pkg.revision
@pytest.mark.xfail(raises=ValueError)
def test_parse_invalid():
"""Invalid package format."""
package_info.parse('invalid/package/format')
def test_parse_cpv():
"""Verify CPV instance parsing."""
cpv = package_info.SplitCPV('foo/bar-1.2.3-r3')
parsed = package_info.parse('foo/bar-1.2.3-r3')
parsed_cpv = package_info.parse(cpv)
assert parsed == parsed_cpv
def test_parse_pkg_info():
"""Verify PackageInfo instance parsing."""
pkg = package_info.parse('foo/bar-1.2.3-r3')
pkg2 = package_info.parse(pkg)
assert pkg == pkg2
def test_package_info_eq():
"""Test __eq__ method."""
pkg = package_info.PackageInfo('foo', 'bar', 1, 2)
pkg2 = package_info.PackageInfo('foo', 'bar', '1', '2')
assert pkg == pkg2
pkg = package_info.PackageInfo('foo', 'bar', 1)
pkg2 = package_info.PackageInfo('foo', 'bar', '1', '0')
pkg3 = package_info.PackageInfo('foo', 'bar', '1', 0)
assert pkg == pkg2 == pkg3
def test_cpf():
"""Validate CPF handling."""
pkg = package_info.PackageInfo('foo', 'bar', '1')
pkg2 = package_info.PackageInfo('foo', 'bar', '1', '0')
assert pkg.cpf == 'foo/bar-1'
assert pkg2.cpf == pkg.cpf
r1 = package_info.PackageInfo('foo', 'bar', '1', '1')
assert r1.cpf == 'foo/bar-1-r1'
def test_relative_path():
"""Test the ebuild path method."""
pkg = package_info.PackageInfo('foo', 'bar', '1', '0')
assert pkg.relative_path == 'foo/bar/bar-1.ebuild'
def test_ebuild_name():
"""Test the ebuild name building."""
pkg = package_info.PackageInfo('foo', 'bar', '1', '0')
assert pkg.ebuild == 'bar-1.ebuild'
pkg = package_info.PackageInfo('foo', 'bar', '1', '2')
assert pkg.ebuild == 'bar-1-r2.ebuild'
def test_revision_bump():
"""Test the revision_bump method."""
pkg = package_info.PackageInfo('foo', 'bar', '1')
bumped = pkg.revision_bump()
bumped2 = bumped.revision_bump()
assert pkg.cpf == 'foo/bar-1'
assert bumped.cpf == 'foo/bar-1-r1'
assert bumped2.cpf == 'foo/bar-1-r2'
def test_with_version_no_revision():
"""Test the with_version method with no revision specified."""
pkg = package_info.PackageInfo('foo', 'bar', '1')
pkg2 = pkg.with_version('2')
assert pkg.cpf == 'foo/bar-1'
assert pkg2.cpf == 'foo/bar-2'
def test_with_version_with_revision():
"""Test the with_version method with a revision specified."""
pkg = package_info.PackageInfo('foo', 'bar', '1', '1')
pkg2 = pkg.with_version('2')
assert pkg.cpf == 'foo/bar-1-r1'
assert pkg2.cpf == 'foo/bar-2'