| # -*- 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' |