# SPDX-License-Identifier: Apache-2.0 # Copyright © 2022-2023 Intel Corporation from __future__ import annotations import unittest import typing as T from mesonbuild.cargo.version import convert class CargoVersionTest(unittest.TestCase): def test_cargo_to_meson(self) -> None: cases: T.List[T.Tuple[str, T.List[str]]] = [ # Basic requirements ('>= 1', ['>= 1']), ('> 1', ['> 1']), ('= 1', ['= 1']), ('< 1', ['< 1']), ('<= 1', ['<= 1']), # tilde tests ('~1', ['>= 1', '< 2']), ('~1.1', ['>= 1.1', '< 1.2']), ('~1.1.2', ['>= 1.1.2', '< 1.2.0']), # Wildcards ('*', []), ('1.*', ['>= 1', '< 2']), ('2.3.*', ['>= 2.3', '< 2.4']), # Unqualified ('2', ['>= 2', '< 3']), ('2.4', ['>= 2.4', '< 3']), ('2.4.5', ['>= 2.4.5', '< 3']), ('0.0.0', ['< 1']), ('0.0', ['< 1']), ('0', ['< 1']), ('0.0.5', ['>= 0.0.5', '< 0.0.6']), ('0.5.0', ['>= 0.5', '< 0.6']), ('0.5', ['>= 0.5', '< 0.6']), # Caret (Which is the same as unqualified) ('^2', ['>= 2', '< 3']), ('^2.4', ['>= 2.4', '< 3']), ('^2.4.5', ['>= 2.4.5', '< 3']), ('^0.0.0', ['< 1']), ('^0.0', ['< 1']), ('^0', ['< 1']), ('^0.0.5', ['>= 0.0.5', '< 0.0.6']), ('^0.5.0', ['>= 0.5', '< 0.6']), ('^0.5', ['>= 0.5', '< 0.6']), # Multiple requirements ('>= 1.2.3, < 1.4.7', ['>= 1.2.3', '< 1.4.7']), ] for (data, expected) in cases: with self.subTest(): self.assertListEqual(convert(data), expected)