Skip to content

Commit 8e29bd8

Browse files
Lukas Geigerclaude
andcommitted
fix(B-011): lang_label und run_btn bei Dateien ohne Provider zuruecksetzen
Beim Wechsel zu einer Datei ohne Sprachprovider (z.B. .txt) wurden lang_label und run_btn nicht zurueckgesetzt: run_btn blieb aktiviert, lang_label zeigte die vorherige Sprache. Fix: else-Zweig in _on_file_changed setzt beide auf 'Keine Sprache' bzw. disabled. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 9ac301f commit 8e29bd8

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

tests/test_save_failure_guards.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import annotations
22

33
import warnings
4+
from pathlib import Path
45
from unittest.mock import Mock, patch
56

67
from PySide6.QtWidgets import QApplication, QMessageBox
@@ -112,6 +113,37 @@ def test_initial_save_failure_restores_untitled_state():
112113
window.close()
113114

114115

116+
def test_switching_to_file_without_provider_resets_lang_label_and_run_btn(tmp_path):
117+
"""Regression (B-011): Wenn von einem Sprach-Tab (Python) auf eine Datei ohne
118+
Provider (.txt) gewechselt wird, müssen lang_label und run_btn zurückgesetzt
119+
werden. Vorher blieb lang_label auf 'Python' und Run blieb aktiviert."""
120+
_ensure_app()
121+
122+
with patch("features.terminal.TerminalWidget._start_shell", lambda self: None):
123+
window = MainWindow()
124+
125+
# Python-Datei öffnen (hat Provider → Run aktiv)
126+
py_file = tmp_path / "script.py"
127+
py_file.write_text("print('hi')", encoding="utf-8")
128+
window.open_path(py_file)
129+
assert window.output.run_btn.isEnabled(), "Run soll für Python aktiv sein"
130+
assert window.lang_label.text() == "Python"
131+
132+
# Txt-Datei öffnen (kein Provider)
133+
txt_file = tmp_path / "notes.txt"
134+
txt_file.write_text("some notes", encoding="utf-8")
135+
window.open_path(txt_file)
136+
137+
assert not window.output.run_btn.isEnabled(), (
138+
"Run muss nach Wechsel zu .txt deaktiviert werden"
139+
)
140+
assert window.lang_label.text() == "Keine Sprache", (
141+
f"lang_label muss 'Keine Sprache' zeigen, zeigt aber: {window.lang_label.text()!r}"
142+
)
143+
144+
window.close()
145+
146+
115147
def test_cursor_position_updates_for_untitled_tab():
116148
"""Regression (B-007): _on_file_changed(None) muss _connect_cursor aufrufen,
117149
damit die Positionsanzeige auch für unbenannte Tabs aktuell bleibt.

ui/main_window.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,9 @@ def _on_file_changed(self, file_path):
410410
self.lang_label.setText(tab.provider.get_name())
411411
self.output.run_btn.setEnabled(True)
412412
self._connect_lsp(tab, file_path)
413+
else:
414+
self.lang_label.setText("Keine Sprache")
415+
self.output.run_btn.setEnabled(False)
413416
self._connect_cursor(tab)
414417
# ProjectView und Terminal auf Projektordner setzen
415418
project_dir = str(file_path.parent)

0 commit comments

Comments
 (0)