Skip to content

Commit eaf9a8d

Browse files
author
Lukas Geiger
committed
fix(project): release commit-button receiver references
Generated-with: gpt-6.1-sol (Codex)
1 parent 189edf6 commit eaf9a8d

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

‎features/project_view.py‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ def _setup_ui(self):
222222
"Öffnet den Dialog zum Bereitstellen und Committen von Git-Änderungen."
223223
)
224224
self.btn_commit.setEnabled(False)
225-
self.btn_commit.clicked.connect(lambda: self.open_commit_dialog())
225+
self.btn_commit.clicked.connect(self._on_commit_clicked)
226226
header.addWidget(self.btn_commit)
227227

228228
layout.addLayout(header)
@@ -338,6 +338,9 @@ def _setup_ui(self):
338338

339339
layout.addWidget(self.tree)
340340

341+
def _on_commit_clicked(self, _checked=False):
342+
self.open_commit_dialog()
343+
341344
def set_workspace(self, workspace: Optional[WorkspaceManager]):
342345
"""Verbindet die ProjectView mit dem WorkspaceManager."""
343346
if self._workspace is not None:

‎tests/test_project_view.py‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
"""Regressionstests für ProjectView und Pfadsync im Hauptfenster."""
2+
import gc
3+
import weakref
24
from unittest.mock import patch
35

46
from PySide6.QtWidgets import QApplication
@@ -11,6 +13,23 @@ def _ensure_app():
1113
return QApplication.instance() or QApplication([])
1214

1315

16+
def test_commit_button_dispatch_and_closed_view_collection():
17+
app = _ensure_app()
18+
references = []
19+
for _ in range(3):
20+
view = ProjectView()
21+
with patch.object(view, "open_commit_dialog") as open_dialog:
22+
view.btn_commit.setEnabled(True)
23+
view.btn_commit.click()
24+
open_dialog.assert_called_once_with()
25+
references.append(weakref.ref(view))
26+
view.close()
27+
del view
28+
gc.collect()
29+
app.processEvents()
30+
assert all(reference() is None for reference in references)
31+
32+
1433
def test_new_file_in_shows_error_on_write_failure(tmp_path):
1534
"""Regression (B-008): _new_file_in() muss OSError abfangen und eine
1635
Fehlermeldung zeigen, statt die Ausnahme unkontrolliert zu propagieren."""

0 commit comments

Comments
 (0)