Changeset View
Changeset View
Standalone View
Standalone View
swh/model/tests/test_identifiers.py
Show First 20 Lines • Show All 1,228 Lines • ▼ Show 20 Lines | for swhid, _type, _version, _hash in [ | ||||
_x("c7c108084bc0bf3d81436bf980b46e98bd338453"), | _x("c7c108084bc0bf3d81436bf980b46e98bd338453"), | ||||
), | ), | ||||
]: | ]: | ||||
expected_result = QualifiedSWHID( | expected_result = QualifiedSWHID( | ||||
namespace="swh", | namespace="swh", | ||||
scheme_version=_version, | scheme_version=_version, | ||||
object_type=_type, | object_type=_type, | ||||
object_id=_hash, | object_id=_hash, | ||||
qualifiers={}, | |||||
) | ) | ||||
actual_result = QualifiedSWHID.from_string(swhid) | actual_result = QualifiedSWHID.from_string(swhid) | ||||
assert actual_result == expected_result | assert actual_result == expected_result | ||||
assert str(expected_result) == str(actual_result) == swhid | assert str(expected_result) == str(actual_result) == swhid | ||||
for swhid, _type, _version, _hash, _qualifiers in [ | for swhid, _type, _version, _hash, _qualifiers in [ | ||||
( | ( | ||||
"swh:1:cnt:9c95815d9e9d91b8dae8e05d8bbc696fe19f796b;lines=1-18;origin=https://github.com/python/cpython", # noqa | "swh:1:cnt:9c95815d9e9d91b8dae8e05d8bbc696fe19f796b;origin=https://github.com/python/cpython;lines=1-18", # noqa | ||||
ObjectType.CONTENT, | ObjectType.CONTENT, | ||||
1, | 1, | ||||
_x("9c95815d9e9d91b8dae8e05d8bbc696fe19f796b"), | _x("9c95815d9e9d91b8dae8e05d8bbc696fe19f796b"), | ||||
{"lines": "1-18", "origin": "https://github.com/python/cpython"}, | {"origin": "https://github.com/python/cpython", "lines": "1-18"}, | ||||
), | ), | ||||
( | ( | ||||
"swh:1:dir:0b6959356d30f1a4e9b7f6bca59b9a336464c03d;origin=deb://Debian/packages/linuxdoc-tools", # noqa | "swh:1:dir:0b6959356d30f1a4e9b7f6bca59b9a336464c03d;origin=deb://Debian/packages/linuxdoc-tools", # noqa | ||||
ObjectType.DIRECTORY, | ObjectType.DIRECTORY, | ||||
1, | 1, | ||||
_x("0b6959356d30f1a4e9b7f6bca59b9a336464c03d"), | _x("0b6959356d30f1a4e9b7f6bca59b9a336464c03d"), | ||||
{"origin": "deb://Debian/packages/linuxdoc-tools"}, | {"origin": "deb://Debian/packages/linuxdoc-tools"}, | ||||
), | ), | ||||
]: | ]: | ||||
expected_result = QualifiedSWHID( | expected_result = QualifiedSWHID( | ||||
namespace="swh", | namespace="swh", | ||||
scheme_version=_version, | scheme_version=_version, | ||||
object_type=_type, | object_type=_type, | ||||
object_id=_hash, | object_id=_hash, | ||||
qualifiers=_qualifiers, | **_qualifiers, | ||||
) | ) | ||||
actual_result = QualifiedSWHID.from_string(swhid) | actual_result = QualifiedSWHID.from_string(swhid) | ||||
assert actual_result == expected_result | assert actual_result == expected_result | ||||
assert str(expected_result) == str(actual_result) == swhid | assert str(expected_result) == str(actual_result) == swhid | ||||
@pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||
"invalid_swhid", | "invalid_swhid", | ||||
▲ Show 20 Lines • Show All 44 Lines • ▼ Show 20 Lines | |||||
@pytest.mark.filterwarnings("ignore:.*SWHID.*:DeprecationWarning") | @pytest.mark.filterwarnings("ignore:.*SWHID.*:DeprecationWarning") | ||||
@pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||
"ns,version,type,id,qualifiers", | "ns,version,type,id,qualifiers", | ||||
[ | [ | ||||
("foo", 1, ObjectType.CONTENT, "abc8bc9d7a6bcf6db04f476d29314f157507d505", {}), | ("foo", 1, ObjectType.CONTENT, "abc8bc9d7a6bcf6db04f476d29314f157507d505", {}), | ||||
("swh", 2, ObjectType.CONTENT, "def8bc9d7a6bcf6db04f476d29314f157507d505", {}), | ("swh", 2, ObjectType.CONTENT, "def8bc9d7a6bcf6db04f476d29314f157507d505", {}), | ||||
("swh", 1, ObjectType.DIRECTORY, "aaaa", {}), | ("swh", 1, ObjectType.DIRECTORY, "aaaa", {}), | ||||
( | |||||
"swh", | |||||
1, | |||||
ObjectType.CONTENT, | |||||
"abc8bc9d7a6bcf6db04f476d29314f157507d505", | |||||
{"foo": "bar"}, | |||||
), | |||||
], | ], | ||||
) | ) | ||||
def test_QualifiedSWHID_validation_error(ns, version, type, id, qualifiers): | def test_QualifiedSWHID_validation_error(ns, version, type, id, qualifiers): | ||||
with pytest.raises(ValidationError): | with pytest.raises(ValidationError): | ||||
QualifiedSWHID( | QualifiedSWHID( | ||||
namespace=ns, | namespace=ns, | ||||
scheme_version=version, | scheme_version=version, | ||||
object_type=type, | object_type=type, | ||||
object_id=_x(id), | object_id=_x(id), | ||||
qualifiers=qualifiers, | **qualifiers, | ||||
) | ) | ||||
def test_QualifiedSWHID_hash(): | def test_QualifiedSWHID_hash(): | ||||
object_id = _x("94a9ed024d3859793618152ea559a168bbcbb5e2") | object_id = _x("94a9ed024d3859793618152ea559a168bbcbb5e2") | ||||
assert hash( | assert hash( | ||||
QualifiedSWHID(object_type=ObjectType.DIRECTORY, object_id=object_id) | QualifiedSWHID(object_type=ObjectType.DIRECTORY, object_id=object_id) | ||||
) == hash(QualifiedSWHID(object_type=ObjectType.DIRECTORY, object_id=object_id)) | ) == hash(QualifiedSWHID(object_type=ObjectType.DIRECTORY, object_id=object_id)) | ||||
assert hash( | assert hash( | ||||
QualifiedSWHID( | QualifiedSWHID( | ||||
object_type=ObjectType.DIRECTORY, | object_type=ObjectType.DIRECTORY, object_id=object_id, **dummy_qualifiers, | ||||
object_id=object_id, | |||||
qualifiers=dummy_qualifiers, | |||||
) | ) | ||||
) == hash( | ) == hash( | ||||
QualifiedSWHID( | QualifiedSWHID( | ||||
object_type=ObjectType.DIRECTORY, | object_type=ObjectType.DIRECTORY, object_id=object_id, **dummy_qualifiers, | ||||
object_id=object_id, | |||||
qualifiers=dummy_qualifiers, | |||||
) | ) | ||||
) | ) | ||||
# Different order of the dictionary, so the underlying order of the tuple in | # Different order of the dictionary, so the underlying order of the tuple in | ||||
# ImmutableDict is different. | # ImmutableDict is different. | ||||
assert hash( | assert hash( | ||||
QualifiedSWHID( | QualifiedSWHID( | ||||
object_type=ObjectType.DIRECTORY, | object_type=ObjectType.DIRECTORY, | ||||
object_id=object_id, | object_id=object_id, | ||||
qualifiers={"origin": "https://example.com", "lines": "42"}, | origin="https://example.com", | ||||
lines=(42, None), | |||||
) | ) | ||||
) == hash( | ) == hash( | ||||
QualifiedSWHID( | QualifiedSWHID( | ||||
object_type=ObjectType.DIRECTORY, | object_type=ObjectType.DIRECTORY, | ||||
object_id=object_id, | object_id=object_id, | ||||
qualifiers={"lines": "42", "origin": "https://example.com"}, | lines=(42, None), | ||||
origin="https://example.com", | |||||
) | ) | ||||
) | ) | ||||
def test_QualifiedSWHID_eq(): | def test_QualifiedSWHID_eq(): | ||||
object_id = _x("94a9ed024d3859793618152ea559a168bbcbb5e2") | object_id = _x("94a9ed024d3859793618152ea559a168bbcbb5e2") | ||||
assert QualifiedSWHID( | assert QualifiedSWHID( | ||||
object_type=ObjectType.DIRECTORY, object_id=object_id | object_type=ObjectType.DIRECTORY, object_id=object_id | ||||
) == QualifiedSWHID(object_type=ObjectType.DIRECTORY, object_id=object_id) | ) == QualifiedSWHID(object_type=ObjectType.DIRECTORY, object_id=object_id) | ||||
assert QualifiedSWHID( | assert QualifiedSWHID( | ||||
object_type=ObjectType.DIRECTORY, | object_type=ObjectType.DIRECTORY, object_id=object_id, **dummy_qualifiers, | ||||
object_id=object_id, | |||||
qualifiers=dummy_qualifiers, | |||||
) == QualifiedSWHID( | ) == QualifiedSWHID( | ||||
object_type=ObjectType.DIRECTORY, | object_type=ObjectType.DIRECTORY, object_id=object_id, **dummy_qualifiers, | ||||
object_id=object_id, | |||||
qualifiers=dummy_qualifiers, | |||||
) | ) | ||||
assert QualifiedSWHID( | assert QualifiedSWHID( | ||||
object_type=ObjectType.DIRECTORY, | object_type=ObjectType.DIRECTORY, object_id=object_id, **dummy_qualifiers, | ||||
object_id=object_id, | |||||
qualifiers=dummy_qualifiers, | |||||
) == QualifiedSWHID( | ) == QualifiedSWHID( | ||||
object_type=ObjectType.DIRECTORY, | object_type=ObjectType.DIRECTORY, object_id=object_id, **dummy_qualifiers, | ||||
object_id=object_id, | |||||
qualifiers=dummy_qualifiers, | |||||
) | ) | ||||
def test_parse_serialize_core_swhid(): | def test_parse_serialize_core_swhid(): | ||||
for swhid, _type, _version, _hash in [ | for swhid, _type, _version, _hash in [ | ||||
( | ( | ||||
"swh:1:cnt:94a9ed024d3859793618152ea559a168bbcbb5e2", | "swh:1:cnt:94a9ed024d3859793618152ea559a168bbcbb5e2", | ||||
ObjectType.CONTENT, | ObjectType.CONTENT, | ||||
▲ Show 20 Lines • Show All 108 Lines • Show Last 20 Lines |