123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import pytest
- import aos_version
- from collections import namedtuple
- Package = namedtuple('Package', ['name', 'version'])
- expected_pkgs = set(['spam', 'eggs'])
- @pytest.mark.parametrize('pkgs, requested_release, expect_not_found', [
- (
- [],
- '3.2.1',
- expected_pkgs, # none found
- ),
- (
- [Package('spam', '3.2.1')],
- '3.2',
- ['eggs'], # completely missing
- ),
- (
- [Package('spam', '3.2.1'), Package('eggs', '3.3.2')],
- '3.2',
- ['eggs'], # not the right version
- ),
- (
- [Package('spam', '3.2.1'), Package('eggs', '3.2.1')],
- '3.2',
- [], # all found
- ),
- (
- [Package('spam', '3.2.1'), Package('eggs', '3.2.1.5')],
- '3.2.1',
- [], # found with more specific version
- ),
- (
- [Package('eggs', '1.2.3'), Package('eggs', '3.2.1.5')],
- '3.2.1',
- ['spam'], # eggs found with multiple versions
- ),
- ])
- def test_check_pkgs_for_precise_version(pkgs, requested_release, expect_not_found):
- if expect_not_found:
- with pytest.raises(aos_version.PreciseVersionNotFound) as e:
- aos_version._check_precise_version_found(pkgs, expected_pkgs, requested_release)
- assert set(expect_not_found) == set(e.value.problem_pkgs)
- else:
- aos_version._check_precise_version_found(pkgs, expected_pkgs, requested_release)
- @pytest.mark.parametrize('pkgs, requested_release, expect_higher', [
- (
- [],
- '3.2.1',
- [],
- ),
- (
- [Package('spam', '3.2.1')],
- '3.2',
- [], # more precise but not strictly higher
- ),
- (
- [Package('spam', '3.3')],
- '3.2.1',
- ['spam-3.3'], # lower precision, but higher
- ),
- (
- [Package('spam', '3.2.1'), Package('eggs', '3.3.2')],
- '3.2',
- ['eggs-3.3.2'], # one too high
- ),
- (
- [Package('eggs', '1.2.3'), Package('eggs', '3.2.1.5'), Package('eggs', '3.4')],
- '3.2.1',
- ['eggs-3.4'], # multiple versions, one is higher
- ),
- (
- [Package('eggs', '3.2.1'), Package('eggs', '3.4'), Package('eggs', '3.3')],
- '3.2.1',
- ['eggs-3.4'], # multiple versions, two are higher
- ),
- ])
- def test_check_pkgs_for_greater_version(pkgs, requested_release, expect_higher):
- if expect_higher:
- with pytest.raises(aos_version.FoundHigherVersion) as e:
- aos_version._check_higher_version_found(pkgs, expected_pkgs, requested_release)
- assert set(expect_higher) == set(e.value.problem_pkgs)
- else:
- aos_version._check_higher_version_found(pkgs, expected_pkgs, requested_release)
- @pytest.mark.parametrize('pkgs, expect_to_flag_pkgs', [
- (
- [],
- [],
- ),
- (
- [Package('spam', '3.2.1')],
- [],
- ),
- (
- [Package('spam', '3.2.1'), Package('eggs', '3.2.2')],
- [],
- ),
- (
- [Package('spam', '3.2.1'), Package('spam', '3.3.2')],
- ['spam'],
- ),
- (
- [Package('eggs', '1.2.3'), Package('eggs', '3.2.1.5'), Package('eggs', '3.4')],
- ['eggs'],
- ),
- ])
- def test_check_pkgs_for_multi_release(pkgs, expect_to_flag_pkgs):
- if expect_to_flag_pkgs:
- with pytest.raises(aos_version.FoundMultiRelease) as e:
- aos_version._check_multi_minor_release(pkgs, expected_pkgs)
- assert set(expect_to_flag_pkgs) == set(e.value.problem_pkgs)
- else:
- aos_version._check_multi_minor_release(pkgs, expected_pkgs)
|