def test_version_cmp_fedora(self): """ Fedora comparison """ f33 = ContextValue("fedora-33") frawhide = ContextValue("fedora-rawhide") assert f33.version_cmp(ContextValue("fedora-33")) == 0 assert f33.version_cmp(ContextValue("fedora-13")) > 0 assert f33.version_cmp(ContextValue("fedora-43")) < 0 assert frawhide.version_cmp(ContextValue("fedora-rawhide")) == 0 assert frawhide.version_cmp(f33) > 0 assert f33.version_cmp(frawhide) < 0
def test_version_cmp(self): first = ContextValue("name") assert first.version_cmp(ContextValue("name")) == 0 assert first.version_cmp(ContextValue("name"), minor_mode=True) == 0 assert first.version_cmp(ContextValue("name"), ordered=True) == 0 assert first.version_cmp(ContextValue("name"), ordered=False) == 0 assert first.version_cmp(ContextValue("name-1"), ordered=False) == 1 with pytest.raises(CannotDecide): first.version_cmp(ContextValue("name-1"), minor_mode=True, ordered=False) with pytest.raises(CannotDecide): first.version_cmp( ContextValue("name-1"), ordered=True) == -1 # name missing at least on version part with pytest.raises(CannotDecide): first.version_cmp(ContextValue("name-1"), minor_mode=True, ordered=True) assert first.version_cmp(ContextValue("name-1-2"), ordered=False) == 1 # name-0.0 != name-1-2 with pytest.raises(CannotDecide): first.version_cmp(ContextValue("name-1-2"), minor_mode=True, ordered=False) second = ContextValue("name-1-2-3") assert second.version_cmp(ContextValue("name"), ordered=False) == 0 assert second.version_cmp(ContextValue("name"), ordered=True) == 0 assert second.version_cmp(ContextValue("name"), minor_mode=True, ordered=False) == 0 assert second.version_cmp(ContextValue("name"), minor_mode=True, ordered=True) == 0 assert second.version_cmp(ContextValue("name-1")) == 0 assert second.version_cmp(ContextValue("name-1"), minor_mode=True) == 0 # Same minor assert second.version_cmp(ContextValue("name-1-2")) == 0 assert (second.version_cmp(ContextValue("name-1-2"), minor_mode=True) == 0) third = ContextValue("name-1-2-3") with pytest.raises(CannotDecide): third.version_cmp(ContextValue("aaa")) with pytest.raises(CannotDecide): third.version_cmp(ContextValue("zzz")) with pytest.raises(CannotDecide): third.version_cmp(ContextValue("aaa"), minor_mode=True) # Minor mode should care only about minor, aka Y presence # so name-1 vs name-2 is defined, but name-1-1 vs name-2-1 is not fourth = ContextValue("name-2") assert fourth.version_cmp(ContextValue("name-2")) == 0 assert fourth.version_cmp(ContextValue("name-2"), minor_mode=True) == 0 assert fourth.version_cmp(ContextValue("name-3")) < 0 assert fourth.version_cmp(ContextValue("name-3"), minor_mode=True) == -1 assert fourth.version_cmp(ContextValue("name-1")) > 0 assert fourth.version_cmp(ContextValue("name-1"), minor_mode=True) == 1 with pytest.raises(CannotDecide): assert fourth.version_cmp(ContextValue("name-1-1"), minor_mode=True) fifth = ContextValue("name-2-1") for undecidable in ["name-1-1", ""]: with pytest.raises(CannotDecide): fifth.version_cmp(ContextValue(undecidable), minor_mode=True) # More error states with pytest.raises(CannotDecide): first.version_cmp(Context()) # different object classes sixth = ContextValue([]) with pytest.raises(CannotDecide): sixth.version_cmp(first, minor_mode=True) with pytest.raises(CannotDecide): sixth.version_cmp(first) assert sixth != Context()