Page MenuHomeSoftware Heritage

D3586.diff
No OneTemporary

D3586.diff

diff --git a/swh/storage/tests/storage_data.py b/swh/storage/tests/storage_data.py
--- a/swh/storage/tests/storage_data.py
+++ b/swh/storage/tests/storage_data.py
@@ -18,8 +18,13 @@
MetadataAuthorityType,
MetadataFetcher,
MetadataTargetType,
+ Person,
RawExtrinsicMetadata,
+ Revision,
+ RevisionType,
SkippedContent,
+ Timestamp,
+ TimestampWithTimezone,
)
@@ -204,141 +209,128 @@
minus_offset = datetime.timezone(datetime.timedelta(minutes=-120))
plus_offset = datetime.timezone(datetime.timedelta(minutes=120))
-revision = {
- "id": hash_to_bytes("066b1b62dbfa033362092af468bf6cfabec230e7"),
- "message": b"hello",
- "author": {
- "name": b"Nicolas Dandrimont",
- "email": b"nicolas@example.com",
- "fullname": b"Nicolas Dandrimont <nicolas@example.com> ",
- },
- "date": {
- "timestamp": {"seconds": 1234567890, "microseconds": 0},
- "offset": 120,
- "negative_utc": False,
- },
- "committer": {
- "name": b"St\xc3fano Zacchiroli",
- "email": b"stefano@example.com",
- "fullname": b"St\xc3fano Zacchiroli <stefano@example.com>",
- },
- "committer_date": {
- "timestamp": {"seconds": 1123456789, "microseconds": 0},
- "offset": 0,
- "negative_utc": True,
- },
- "parents": (b"01234567890123456789", b"23434512345123456789"),
- "type": "git",
- "directory": hash_to_bytes("34f335a750111ca0a8b64d8034faec9eedc396be"), # dir
- "metadata": {
+revision = Revision(
+ id=hash_to_bytes("066b1b62dbfa033362092af468bf6cfabec230e7"),
+ message=b"hello",
+ author=Person(
+ name=b"Nicolas Dandrimont",
+ email=b"nicolas@example.com",
+ fullname=b"Nicolas Dandrimont <nicolas@example.com> ",
+ ),
+ date=TimestampWithTimezone(
+ timestamp=Timestamp(seconds=1234567890, microseconds=0),
+ offset=120,
+ negative_utc=False,
+ ),
+ committer=Person(
+ name=b"St\xc3fano Zacchiroli",
+ email=b"stefano@example.com",
+ fullname=b"St\xc3fano Zacchiroli <stefano@example.com>",
+ ),
+ committer_date=TimestampWithTimezone(
+ timestamp=Timestamp(seconds=1123456789, microseconds=0),
+ offset=120,
+ negative_utc=False,
+ ),
+ parents=(),
+ type=RevisionType.GIT,
+ directory=directory.id,
+ metadata={
"checksums": {"sha1": "tarball-sha1", "sha256": "tarball-sha256",},
"signed-off-by": "some-dude",
},
- "extra_headers": (
+ extra_headers=(
(b"gpgsig", b"test123"),
(b"mergetag", b"foo\\bar"),
(b"mergetag", b"\x22\xaf\x89\x80\x01\x00"),
),
- "synthetic": True,
-}
-
-revision2 = {
- "id": hash_to_bytes("df7a6f6a99671fb7f7343641aff983a314ef6161"),
- "message": b"hello again",
- "author": {
- "name": b"Roberto Dicosmo",
- "email": b"roberto@example.com",
- "fullname": b"Roberto Dicosmo <roberto@example.com>",
- },
- "date": {
- "timestamp": {"seconds": 1234567843, "microseconds": 220000,},
- "offset": -720,
- "negative_utc": False,
- },
- "committer": {
- "name": b"tony",
- "email": b"ar@dumont.fr",
- "fullname": b"tony <ar@dumont.fr>",
- },
- "committer_date": {
- "timestamp": {"seconds": 1123456789, "microseconds": 0},
- "offset": 0,
- "negative_utc": False,
- },
- "parents": (b"01234567890123456789",),
- "type": "git",
- "directory": hash_to_bytes("8505808532953da7d2581741f01b29c04b1cb9ab"), # dir2
- "metadata": None,
- "extra_headers": (),
- "synthetic": False,
-}
-
-revision3 = {
- "id": hash_to_bytes("2cbd7bb22c653bbb23a29657852a50a01b591d46"),
- "message": b"a simple revision with no parents this time",
- "author": {
- "name": b"Roberto Dicosmo",
- "email": b"roberto@example.com",
- "fullname": b"Roberto Dicosmo <roberto@example.com>",
- },
- "date": {
- "timestamp": {"seconds": 1234567843, "microseconds": 220000,},
- "offset": -720,
- "negative_utc": False,
- },
- "committer": {
- "name": b"tony",
- "email": b"ar@dumont.fr",
- "fullname": b"tony <ar@dumont.fr>",
- },
- "committer_date": {
- "timestamp": {"seconds": 1127351742, "microseconds": 0},
- "offset": 0,
- "negative_utc": False,
- },
- "parents": (),
- "type": "git",
- "directory": hash_to_bytes("8505808532953da7d2581741f01b29c04b1cb9ab"), # dir2
- "metadata": None,
- "extra_headers": (),
- "synthetic": True,
-}
+ synthetic=True,
+)
-revision4 = {
- "id": hash_to_bytes("88cd5126fc958ed70089d5340441a1c2477bcc20"),
- "message": b"parent of self.revision2",
- "author": {
- "name": b"me",
- "email": b"me@soft.heri",
- "fullname": b"me <me@soft.heri>",
- },
- "date": {
- "timestamp": {"seconds": 1244567843, "microseconds": 220000,},
- "offset": -720,
- "negative_utc": False,
- },
- "committer": {
- "name": b"committer-dude",
- "email": b"committer@dude.com",
- "fullname": b"committer-dude <committer@dude.com>",
- },
- "committer_date": {
- "timestamp": {"seconds": 1244567843, "microseconds": 220000,},
- "offset": -720,
- "negative_utc": False,
- },
- "parents": (
- hash_to_bytes("2cbd7bb22c653bbb23a29657852a50a01b591d46"),
- ), # revision3
- "type": "git",
- "directory": hash_to_bytes("34f335a750111ca0a8b64d8034faec9eedc396be"), # dir
- "metadata": None,
- "extra_headers": (),
- "synthetic": False,
-}
+revision2 = Revision(
+ id=hash_to_bytes("df7a6f6a99671fb7f7343641aff983a314ef6161"),
+ message=b"hello again",
+ author=Person(
+ name=b"Roberto Dicosmo",
+ email=b"roberto@example.com",
+ fullname=b"Roberto Dicosmo <roberto@example.com>",
+ ),
+ date=TimestampWithTimezone(
+ timestamp=Timestamp(seconds=1234567843, microseconds=220000,),
+ offset=-720,
+ negative_utc=False,
+ ),
+ committer=Person(
+ name=b"tony", email=b"ar@dumont.fr", fullname=b"tony <ar@dumont.fr>",
+ ),
+ committer_date=TimestampWithTimezone(
+ timestamp=Timestamp(seconds=1123456789, microseconds=220000,),
+ offset=0,
+ negative_utc=False,
+ ),
+ parents=tuple([revision.id]),
+ type=RevisionType.GIT,
+ directory=directory2.id,
+ metadata=None,
+ extra_headers=(),
+ synthetic=False,
+)
-revisions = (revision, revision2, revision3, revision4)
+revision3 = Revision(
+ id=hash_to_bytes("2cbd7bb22c653bbb23a29657852a50a01b591d46"),
+ message=b"a simple revision with no parents this time",
+ author=Person(
+ name=b"Roberto Dicosmo",
+ email=b"roberto@example.com",
+ fullname=b"Roberto Dicosmo <roberto@example.com>",
+ ),
+ date=TimestampWithTimezone(
+ timestamp=Timestamp(seconds=1234567843, microseconds=220000,),
+ offset=-720,
+ negative_utc=False,
+ ),
+ committer=Person(
+ name=b"tony", email=b"ar@dumont.fr", fullname=b"tony <ar@dumont.fr>",
+ ),
+ committer_date=TimestampWithTimezone(
+ timestamp=Timestamp(seconds=1127351742, microseconds=220000,),
+ offset=0,
+ negative_utc=False,
+ ),
+ parents=tuple([revision.id, revision2.id]),
+ type=RevisionType.GIT,
+ directory=directory2.id,
+ metadata=None,
+ extra_headers=(),
+ synthetic=True,
+)
+revision4 = Revision(
+ id=hash_to_bytes("88cd5126fc958ed70089d5340441a1c2477bcc20"),
+ message=b"parent of self.revision2",
+ author=Person(name=b"me", email=b"me@soft.heri", fullname=b"me <me@soft.heri>",),
+ date=TimestampWithTimezone(
+ timestamp=Timestamp(seconds=1234567843, microseconds=220000,),
+ offset=-720,
+ negative_utc=False,
+ ),
+ committer=Person(
+ name=b"committer-dude",
+ email=b"committer@dude.com",
+ fullname=b"committer-dude <committer@dude.com>",
+ ),
+ committer_date=TimestampWithTimezone(
+ timestamp=Timestamp(seconds=1244567843, microseconds=220000,),
+ offset=-720,
+ negative_utc=False,
+ ),
+ parents=tuple([revision3.id]),
+ type=RevisionType.GIT,
+ directory=directory.id,
+ metadata=None,
+ extra_headers=(),
+ synthetic=False,
+)
origin = {
"url": "file:///dev/null",
@@ -546,7 +538,7 @@
visit=42,
snapshot=parse_swhid(f"swh:1:snp:{hash_to_hex(snapshot['id'])}"),
release=parse_swhid(f"swh:1:rel:{hash_to_hex(release['id'])}"),
- revision=parse_swhid(f"swh:1:rev:{hash_to_hex(revision['id'])}"),
+ revision=parse_swhid(f"swh:1:rev:{hash_to_hex(revision.id)}"),
directory=parse_swhid(f"swh:1:dir:{hash_to_hex(directory.id)}"),
path=b"/foo/bar",
)
diff --git a/swh/storage/tests/test_pytest_plugin.py b/swh/storage/tests/test_pytest_plugin.py
--- a/swh/storage/tests/test_pytest_plugin.py
+++ b/swh/storage/tests/test_pytest_plugin.py
@@ -33,6 +33,7 @@
"content",
"skipped_content",
"directory",
+ "revision",
"fetcher",
"authority",
"origin_metadata",
diff --git a/swh/storage/tests/test_storage.py b/swh/storage/tests/test_storage.py
--- a/swh/storage/tests/test_storage.py
+++ b/swh/storage/tests/test_storage.py
@@ -953,28 +953,23 @@
assert [Revision.from_dict(r) for r in res2] == [revision2, revision]
def test_revision_log(self, swh_storage, sample_data_model):
- revision3, revision4 = sample_data_model["revision"][2:4]
+ revision1, revision2, revision3, revision4 = sample_data_model["revision"][:4]
- # data.revision4 -is-child-of-> data.revision3
- swh_storage.revision_add([revision3, revision4])
+ # rev4 -is-child-of-> rev3 -> rev1, (rev2 -> rev1)
+ swh_storage.revision_add([revision1, revision2, revision3, revision4])
# when
results = list(swh_storage.revision_log([revision4.id]))
# for comparison purposes
actual_results = [Revision.from_dict(r) for r in results]
- assert len(actual_results) == 2 # rev4 -child-> rev3
- assert actual_results == [revision4, revision3]
-
- assert list(swh_storage.journal_writer.journal.objects) == [
- ("revision", revision3),
- ("revision", revision4),
- ]
+ assert len(actual_results) == 4 # rev4 -child-> rev3 -> rev1, (rev2 -> rev1)
+ assert actual_results == [revision4, revision3, revision1, revision2]
def test_revision_log_with_limit(self, swh_storage, sample_data_model):
- revision3, revision4 = sample_data_model["revision"][2:4]
+ revision1, revision2, revision3, revision4 = sample_data_model["revision"][:4]
- # data.revision4 -is-child-of-> data.revision3
+ # revision4 -is-child-of-> revision3
swh_storage.revision_add([revision3, revision4])
results = list(swh_storage.revision_log([revision4.id], 1))
@@ -988,25 +983,27 @@
assert rev_log == []
def test_revision_shortlog(self, swh_storage, sample_data_model):
- revision3, revision4 = sample_data_model["revision"][2:4]
+ revision1, revision2, revision3, revision4 = sample_data_model["revision"][:4]
- # data.revision4 -is-child-of-> data.revision3
- swh_storage.revision_add([revision3, revision4])
+ # rev4 -is-child-of-> rev3 -> (rev1, rev2); rev2 -> rev1
+ swh_storage.revision_add([revision1, revision2, revision3, revision4])
- # when
results = list(swh_storage.revision_shortlog([revision4.id]))
-
actual_results = [[id, tuple(parents)] for (id, parents) in results]
- assert len(actual_results) == 2 # rev4 -child-> rev3
- assert list(actual_results[0]) == [revision4.id, revision4.parents]
- assert list(actual_results[1]) == [revision3.id, revision3.parents]
+ assert len(actual_results) == 4
+ assert actual_results == [
+ [revision4.id, revision4.parents],
+ [revision3.id, revision3.parents],
+ [revision1.id, revision1.parents],
+ [revision2.id, revision2.parents],
+ ]
def test_revision_shortlog_with_limit(self, swh_storage, sample_data_model):
- revision3, revision4 = sample_data_model["revision"][2:4]
+ revision1, revision2, revision3, revision4 = sample_data_model["revision"][:4]
- # data.revision4 -is-child-of-> data.revision3
- swh_storage.revision_add([revision3, revision4])
+ # revision4 -is-child-of-> revision3
+ swh_storage.revision_add([revision1, revision2, revision3, revision4])
results = list(swh_storage.revision_shortlog([revision4.id], 1))
actual_results = [[id, tuple(parents)] for (id, parents) in results]
@@ -1025,12 +1022,13 @@
assert actual_revisions[1] is None
def test_revision_get_no_parents(self, swh_storage, sample_data_model):
- revision = sample_data_model["revision"][2]
+ revision = sample_data_model["revision"][0]
swh_storage.revision_add([revision])
get = list(swh_storage.revision_get([revision.id]))
assert len(get) == 1
+ assert revision.parents == ()
assert tuple(get[0]["parents"]) == () # no parents on this one
def test_revision_get_random(self, swh_storage, sample_data_model):

File Metadata

Mime Type
text/plain
Expires
Tue, Dec 17, 9:23 PM (2 d, 9 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3218720

Event Timeline