blob: 427c747a37c481343d7c902a47a36465382d9223 [file] [log] [blame]
# Copyright 2021 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.
"""PMS tests."""
import pytest
from chromite.utils import pms
def test_reject_invalid_versions():
"""Check we reject invalid versions."""
assert not pms.version_valid('\n1.2')
assert not pms.version_valid('1.2\n')
assert not pms.version_valid('1.2\n1.3')
def test_versions_eq():
"""Check equal versions compared correctly."""
assert pms.version_eq('1', '1')
assert pms.version_eq('1.000', '1.0')
assert pms.version_eq('1_alpha1_beta2_pre3_rc4_p5',
'1_alpha1_beta2_pre3_rc4_p5')
assert pms.version_eq('1.2.3.200702020000', '1.2.3.200702020000')
assert pms.version_eq('1.2.3_alpha', '1.2.3_alpha0-r0')
assert pms.version_eq('1.2.3_alpha4-r5', '1.2.3_alpha4-r5')
def test_versions_eq_invalid():
"""Check invalid versions throw correctly."""
with pytest.raises(ValueError) as e:
pms.version_eq('1\n', '1')
assert 'Invalid version' in str(e)
with pytest.raises(ValueError) as e:
pms.version_eq('1', '1\n')
assert 'Invalid version' in str(e)
def test_version_lt():
"""Test a variety of unequal versions using LT."""
# Version varieties.
assert pms.version_lt('1', '2')
assert pms.version_lt('1.0', '2.0')
assert pms.version_lt('1.1.1', '1.1.1.1')
assert pms.version_lt('1.034', '1.1')
assert pms.version_lt('1.0.1', '1.002')
assert pms.version_lt('0.0.1', '0.0.2')
assert pms.version_lt('1.2.3.200702020000', '1.2.3.200702020001')
# Letter components.
assert pms.version_lt('20004', '20004a')
assert pms.version_lt('1b', '1z')
# Suffix checks.
assert pms.version_lt('2.0_pre', '2.0')
assert pms.version_lt('2.0_alpha', '2.0_beta')
assert pms.version_lt('2.0_beta', '2.0_pre')
assert pms.version_lt('2.0_pre', '2.0_rc')
assert pms.version_lt('2.0_rc', '2.0_p')
assert pms.version_lt('2.0_pre', '2.0_pre1')
assert pms.version_lt('2.0_pre', '2.0_p1234')
assert pms.version_lt('2.0_rc', '2.0')
assert pms.version_lt('2.0', '2.0_p')
assert pms.version_lt('1_alpha_beta', '1_alpha')
assert pms.version_lt('1_alpha_beta', '1_alpha1')
assert pms.version_lt('1_alpha_beta', '1_beta')
assert pms.version_lt('1_alpha_beta', '1_alpha_beta1')
assert pms.version_lt('1_alpha_beta_pre', '1_alpha_beta')
assert pms.version_lt('1_alpha_beta', '1_alpha_beta_p')
assert pms.version_lt('2.0_rc', '2.0_rc_p')
# Revisions.
assert pms.version_lt('1.0', '1.0-r1')
assert pms.version_lt('1.0-r5', '1.0-r10')
def test_version_gt():
"""Test a few of the LT cases in reverse to do a quick GT check."""
assert pms.version_gt('1.1.1.1', '1.1.1')
assert pms.version_gt('2.0_p1234', '2.0_pre')
assert pms.version_gt('2.0', '2.0_rc')
assert pms.version_gt('1_alpha_beta_p', '1_alpha_beta')