Skip to content

Commit f982336

Browse files
committed
refactor: utils.render_simple_detail
- remove the simple_detail_path as it is not used by any other caller - calculate size without writting the file, only write when store is true Signed-off-by: Kairo de Araujo <[email protected]>
1 parent e5c22e5 commit f982336

File tree

4 files changed

+14
-20
lines changed

4 files changed

+14
-20
lines changed

tests/unit/packaging/test_utils.py

+3-11
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,13 @@ def test_render_simple_detail(db_request, monkeypatch, jinja):
5858
context = _valid_simple_detail_context(context)
5959
expected_content = template.render(**context, request=db_request).encode("utf-8")
6060

61-
content_hash, path, size = render_simple_detail(project, db_request)
61+
content_hash, size = render_simple_detail(project, db_request)
6262

6363
assert fakeblake2b.calls == [pretend.call(digest_size=32)]
6464
assert fake_hasher.update.calls == [pretend.call(expected_content)]
6565
assert fake_hasher.hexdigest.calls == [pretend.call()]
6666

6767
assert content_hash == "deadbeefdeadbeefdeadbeefdeadbeef"
68-
assert path == (
69-
f"{project.normalized_name}/deadbeefdeadbeefdeadbeefdeadbeef"
70-
+ f".{project.normalized_name}.html"
71-
)
7268
assert size == len(expected_content)
7369

7470

@@ -93,7 +89,7 @@ def test_render_simple_detail_with_store(db_request, monkeypatch, jinja):
9389
fakeblake2b = pretend.call_recorder(lambda *a, **kw: fake_hasher)
9490
monkeypatch.setattr(hashlib, "blake2b", fakeblake2b)
9591

96-
expected_size = 42
92+
expected_size = 225
9793
fake_named_temporary_file = pretend.stub(
9894
name="/tmp/wutang",
9995
write=pretend.call_recorder(lambda data: expected_size),
@@ -117,7 +113,7 @@ def __exit__(self, type, value, traceback):
117113
context = _valid_simple_detail_context(context)
118114
expected_content = template.render(**context, request=db_request).encode("utf-8")
119115

120-
content_hash, path, size = render_simple_detail(project, db_request, store=True)
116+
content_hash, size = render_simple_detail(project, db_request, store=True)
121117

122118
assert fake_named_temporary_file.write.calls == [pretend.call(expected_content)]
123119
assert fake_named_temporary_file.flush.calls == [pretend.call()]
@@ -151,8 +147,4 @@ def __exit__(self, type, value, traceback):
151147
]
152148

153149
assert content_hash == "deadbeefdeadbeefdeadbeefdeadbeef"
154-
assert path == (
155-
f"{project.normalized_name}/deadbeefdeadbeefdeadbeefdeadbeef"
156-
+ f".{project.normalized_name}.html"
157-
)
158150
assert size == expected_size

tests/unit/tuf/test_tasks.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ def test_update_metadata(self, db_request, monkeypatch):
2828

2929
rstuf_url = "url"
3030
index_digest = "digest"
31-
index_size = 42
31+
index_size = 255
3232

3333
db_request.registry.settings = {"rstuf.api_url": rstuf_url}
3434

35-
render = call_recorder(lambda *a, **kw: (index_digest, None, index_size))
35+
render = call_recorder(lambda *a, **kw: (index_digest, index_size))
3636
tuf.tasks.render_simple_detail = render
3737

3838
rstuf = tuf.services.RSTUFService.create_service(db_request)

warehouse/packaging/utils.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,14 @@ def render_simple_detail(project, request, store=False):
123123
f"{project.normalized_name}/{content_hash}.{project.normalized_name}.html"
124124
)
125125

126-
with tempfile.NamedTemporaryFile() as f:
127-
simple_detail_size = f.write(content.encode("utf-8"))
128-
f.flush()
126+
simple_detail_size = len(content.encode("utf-8"))
127+
128+
if store:
129+
storage = request.find_service(ISimpleStorage)
130+
with tempfile.NamedTemporaryFile() as f:
131+
f.write(content.encode("utf-8"))
132+
f.flush()
129133

130-
if store:
131-
storage = request.find_service(ISimpleStorage)
132134
storage.store(
133135
simple_detail_path,
134136
f.name,
@@ -148,7 +150,7 @@ def render_simple_detail(project, request, store=False):
148150
},
149151
)
150152

151-
return (content_hash, simple_detail_path, simple_detail_size)
153+
return (content_hash, simple_detail_size)
152154

153155

154156
def _valid_simple_detail_context(context: dict) -> dict:

warehouse/tuf/tasks.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def update_metadata(request: Request, project_id: UUID):
3434
# NOTE: We ignore the returned simple detail path with the content hash as
3535
# infix. In TUF metadata the project name and hash are listed separately, so
3636
# that there is only one entry per target file, even if the content changes.
37-
digest, _, size = render_simple_detail(project, request, store=True)
37+
digest, size = render_simple_detail(project, request, store=True)
3838
payload = {
3939
"targets": [
4040
{

0 commit comments

Comments
 (0)