Skip to content

Commit 73185c8

Browse files
committed
Fix lint
1 parent 1852015 commit 73185c8

File tree

2 files changed

+43
-29
lines changed

2 files changed

+43
-29
lines changed

src/syrupy/report.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -521,8 +521,8 @@ def serialize(self) -> dict[str, Any]:
521521
"nodeid": c.nodeid,
522522
"name": c.name,
523523
"path": str(c.path),
524-
"modulename": c.obj.__module__,
525-
"methodname": c.obj.__name__,
524+
"modulename": c.obj.__module__, # type: ignore[attr-defined]
525+
"methodname": c.obj.__name__, # type: ignore[attr-defined]
526526
}
527527
for c in list(self.collected_items)
528528
],

src/syrupy/session.py

+41-27
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1+
import json
2+
import os
13
from collections import defaultdict
24
from dataclasses import (
35
dataclass,
46
field,
57
)
68
from enum import Enum
7-
import json
8-
import os
99
from pathlib import Path
1010
from typing import (
1111
TYPE_CHECKING,
@@ -47,17 +47,20 @@ class ItemStatus(Enum):
4747
FAILED = "failed"
4848
SKIPPED = "skipped"
4949

50-
class _MockPytestObject:
51-
def __init__(self, collected_item):
50+
51+
class _FakePytestObject:
52+
def __init__(self, collected_item: dict[str, str]) -> None:
5253
self.__module__ = collected_item["modulename"]
5354
self.__name__ = collected_item["methodname"]
5455

55-
class _MockPytestItem:
56-
def __init__(self, collected_item: dict[str, Any]) -> None:
56+
57+
class _FakePytestItem:
58+
def __init__(self, collected_item: dict[str, str]) -> None:
5759
self.nodeid = collected_item["nodeid"]
5860
self.name = collected_item["name"]
5961
self.path = Path(collected_item["path"])
60-
self.obj = _MockPytestObject(collected_item)
62+
self.obj = _FakePytestObject(collected_item)
63+
6164

6265
@dataclass
6366
class SnapshotSession:
@@ -140,6 +143,24 @@ def ran_item(
140143
except ValueError:
141144
pass # if we don't understand the outcome, leave the item as "not run"
142145

146+
def _merge_collected_items(self, collected_items: list[dict[str, str]]) -> None:
147+
for collected_item in collected_items:
148+
custom_item = _FakePytestItem(collected_item)
149+
if not any(
150+
t.nodeid == custom_item.nodeid and t.name == custom_item.nodeid
151+
for t in self._collected_items
152+
):
153+
self._collected_items.add(custom_item) # type: ignore[arg-type]
154+
155+
def _merge_selected_items(self, selected_items: dict[str, str]) -> None:
156+
for key, selected_item in selected_items.items():
157+
if key in self._selected_items:
158+
status = ItemStatus(selected_item)
159+
if status != ItemStatus.NOT_RUN:
160+
self._selected_items[key] = status
161+
else:
162+
self._selected_items[key] = ItemStatus(selected_item)
163+
143164
def finish(self) -> int:
144165
exitstatus = 0
145166
self.flush_snapshot_write_queue()
@@ -152,12 +173,13 @@ def finish(self) -> int:
152173
)
153174

154175
if is_xdist_worker():
176+
worker_count = os.getenv("PYTEST_XDIST_WORKER_COUNT")
177+
with open(".pytest_syrupy_worker_count", "w", encoding="utf-8") as f:
178+
f.write(worker_count) # type: ignore[arg-type]
155179
with open(
156-
f"/workspaces/home-assistant-core/.syrupy.worker_count.txt", "w"
157-
) as f:
158-
f.write(os.getenv("PYTEST_XDIST_WORKER_COUNT"))
159-
with open(
160-
f"/workspaces/home-assistant-core/.syrupy.{os.getenv("PYTEST_XDIST_WORKER")}.txt", "w"
180+
f".pytest_syrupy_{os.getenv("PYTEST_XDIST_WORKER")}_result",
181+
"w",
182+
encoding="utf-8",
161183
) as f:
162184
json.dump(self.report.serialize(), f, indent=2)
163185
return exitstatus
@@ -166,31 +188,23 @@ def finish(self) -> int:
166188
# Until this is implemented, running syrupy with pytest-xdist is only
167189
# partially functional.
168190
return exitstatus
169-
191+
170192
worker_count = None
171193
try:
172-
with open(f"/workspaces/home-assistant-core/.syrupy.worker_count.txt", "r") as f:
194+
with open(".pytest_syrupy_worker_count", encoding="utf-8") as f:
173195
worker_count = f.read()
196+
os.remove(".pytest_syrupy_worker_count")
174197
except FileNotFoundError:
175198
pass
176199

177200
if worker_count:
178201
for i in range(int(worker_count)):
179-
with open(f"/workspaces/home-assistant-core/.syrupy.gw{i}.txt", "r") as f:
202+
with open(f".pytest_syrupy_gw{i}_result", encoding="utf-8") as f:
180203
data = json.load(f)
181-
for collected_item in data["_collected_items"]:
182-
custom_item = _MockPytestItem(collected_item)
183-
if not any(t.nodeid == custom_item.nodeid and t.name == custom_item.nodeid for t in self._collected_items):
184-
self._collected_items.add(custom_item)
185-
for key, selected_item in data["_selected_items"].items():
186-
if key in self._selected_items:
187-
status = ItemStatus(selected_item)
188-
if status != ItemStatus.NOT_RUN:
189-
self._selected_items[key] = status
190-
else:
191-
self._selected_items[key] = ItemStatus(selected_item)
192-
204+
self._merge_collected_items(data["_collected_items"])
205+
self._merge_selected_items(data["_selected_items"])
193206
self.report.merge_serialized(data)
207+
os.remove(f".pytest_syrupy_gw{i}_result")
194208

195209
if self.report.num_unused:
196210
if self.update_snapshots:

0 commit comments

Comments
 (0)