123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- from functools import cmp_to_key
- from build.plugins.lib.nots.semver import Version
- def test_from_str():
- # arrange
- version_str = "1.2.3"
- # act
- version = Version.from_str(version_str)
- # assert
- assert version.major == 1
- assert version.minor == 2
- assert version.patch == 3
- def test_from_str_bad_version():
- # arrange
- version_str = "best version imaginable"
- error = None
- # act
- try:
- Version.from_str(version_str)
- except Exception as exception:
- error = exception
- # assert
- assert error is not None
- def test_is_stable_true():
- # arrange
- version_str = "1.2.3"
- # act + assert
- assert Version.is_stable(version_str)
- def test_is_stable_false():
- # arrange
- version_str = "1.2.3-beta1"
- # act + assert
- assert not Version.is_stable(version_str)
- def test_is_stable_incorrect():
- # arrange
- version_str = "v1.2.3"
- # act + assert
- assert not Version.is_stable(version_str)
- def test_cmp_lt():
- # arrange
- a = Version.from_str("1.2.3")
- b = Version.from_str("1.2.5")
- # act + assert
- assert Version.cmp(a, b) == -1
- def test_cmp_gt():
- # arrange
- a = Version.from_str("1.2.3")
- b = Version.from_str("1.2.2")
- # act + assert
- assert Version.cmp(a, b) == 1
- def test_cmp_eq():
- # arrange
- a = Version.from_str("1.2.3")
- b = Version.from_str("1.2.3")
- # act + assert
- assert Version.cmp(a, b) == 0
- def test_cmp_lt_str():
- # arrange
- a = "1.2.3"
- b = "1.2.5"
- # act + assert
- assert Version.cmp(a, b) == -1
- def test_cmp_gt_str():
- # arrange
- a = "1.2.3"
- b = "1.2.2"
- # act + assert
- assert Version.cmp(a, b) == 1
- def test_cmp_eq_str():
- # arrange
- a = "1.2.3"
- b = "1.2.3"
- # act + assert
- assert Version.cmp(a, b) == 0
- def test_cmp_usage_in_sorted_asc():
- # arrange
- unsorted = ["1.2.3", "2.4.2", "1.2.7"]
- # act + assert
- assert sorted(unsorted, key=cmp_to_key(Version.cmp)) == ["1.2.3", "1.2.7", "2.4.2"]
- def test_cmp_usage_in_sorted_desc():
- # arrange
- unsorted = ["1.2.3", "2.4.2", "1.2.7"]
- # act + assert
- assert sorted(unsorted, key=cmp_to_key(Version.cmp), reverse=True) == ["2.4.2", "1.2.7", "1.2.3"]
- def test_init_negative_numbers():
- # arrange
- major = 1
- minor = -2
- patch = 3
- error = None
- # act
- try:
- Version(major, minor, patch)
- except Exception as exception:
- error = exception
- # assert
- assert isinstance(error, ValueError)
- assert str(error) == "'minor' is negative. A version can only be positive."
- def test_eq():
- # arrange
- version_a = Version.from_str("1.2.3")
- version_b = Version.from_str("1.2.3")
- # act + assert
- assert version_a == version_b
- def test_eq_negative():
- # arrange
- version_a = Version.from_str("1.2.3")
- version_b = Version.from_str("3.2.1")
- # act + assert
- assert not version_a == version_b
- def test_eq_with_str():
- # arrange
- version = Version.from_str("1.2.3")
- # act + assert
- assert version == "1.2.3"
- assert not version == "1.2.4"
- def test_eq_with_invalid_str():
- # arrange
- version = Version.from_str("1.2.3")
- # act + assert
- assert not version == "bla-bla"
- assert not version == "1.2.3-beta"
- def test_ne():
- # arrange
- version_a = Version.from_str("3.2.1")
- version_b = Version.from_str("1.2.3")
- # act + assert
- assert version_a != version_b
- def test_ne_negative():
- # arrange
- version_a = Version.from_str("1.2.3")
- version_b = Version.from_str("1.2.3")
- # act + assert
- assert not version_a != version_b
- def test_ne_with_str():
- # arrange
- version = Version.from_str("1.2.3")
- # act + assert
- assert version != "1.2.4"
- assert not version != "1.2.3"
- def test_gt():
- # arrange
- version_a = Version.from_str("3.2.1")
- version_b = Version.from_str("1.2.3")
- # act + assert
- assert version_a > version_b
- def test_ge_equals():
- # arrange
- version_a = Version.from_str("1.2.3")
- version_b = Version.from_str("1.2.3")
- # act + assert
- assert version_a >= version_b
- def test_ge_exceeds():
- # arrange
- version_a = Version.from_str("3.2.1")
- version_b = Version.from_str("1.2.3")
- # act + assert
- assert version_a >= version_b
- def test_lt():
- # arrange
- version_a = Version.from_str("1.2.3")
- version_b = Version.from_str("3.2.1")
- # act + assert
- assert version_a < version_b
- def test_le_equals():
- # arrange
- version_a = Version.from_str("1.2.3")
- version_b = Version.from_str("1.2.3")
- # act + assert
- assert version_a <= version_b
- def test_le_is_less():
- # arrange
- version_a = Version.from_str("1.2.3")
- version_b = Version.from_str("3.2.1")
- # act + assert
- assert version_a <= version_b
- def test_to_tuple():
- # arrange
- version = Version.from_str("1.2.3")
- # act + assert
- assert version.as_tuple() == (1, 2, 3)
|