Skip to content

Commit 0850091

Browse files
author
Lukas Geiger
committed
test: cover PythonBox CRLF git replacements
1 parent b254617 commit 0850091

3 files changed

Lines changed: 21 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Format basiert auf [Keep a Changelog](https://keepachangelog.com/de/1.1.0/).
1717
- `PORTIERUNGSPLAN.md` mit Desktop-only-Strategie für Windows, macOS und Linux.
1818
- Optionaler JSON-Austausch für Snippet-Bibliothek und portable Editor-Einstellungen (`pythonbox-snippets-v1.json`, `pythonbox-settings-v1.json`).
1919
- Regressionstests für Qt6-Editor-APIs, F5-Ausführung, externe Python-Kommandos und Offscreen-Fensteraufbau.
20+
- Zusätzlicher Git-Regressionstest für CRLF-Ersatzzeilen, damit Windows-Diffs mit ersetzten Zeilen weiterhin als `modified` statt als reine `added`-Treffer klassifiziert bleiben.
2021
- GitHub Actions Workflow für Windows-Regressionstests auf Python 3.10 bis 3.12.
2122
- README-SEO-Einstieg, präzisere Screenshot-Beschreibung und Discovery-Keywords für die GitHub-Suche.
2223

@@ -38,6 +39,7 @@ Format basiert auf [Keep a Changelog](https://keepachangelog.com/de/1.1.0/).
3839
- Die Minimap-Option im Einstellungsdialog nutzt jetzt denselben `show_minimap`-Key wie das Ansicht-Menü und wird auch über den Apply-Button direkt auf die Hauptansicht angewendet.
3940
- Kombinierte Git-Porcelain-Statuscodes wie `AM` werden in der Statusleiste lesbar zusammengefasst.
4041
- Git-Diff-Markierungen behandeln ersetzte Zeilen als geändert statt als reine Hinzufügung.
42+
- Der zuvor offene Windows-Gesamtlauf-Befund rund um `test_git_modified_lines_classify_replacements_as_modified` ist lokal nicht mehr reproduzierbar; der vollständige `unittest`-Lauf ist wieder grün und der Git-Diff-Fall wird jetzt zusätzlich mit expliziten CRLF-Dateien abgesichert.
4143
- `Speichern unter` stellt den bisherigen Dateipfad wieder her, wenn der Dialog abgebrochen wird.
4244
- Deutsche Übersetzungshinweise und Docstrings nutzen echte Umlaute.
4345

llms.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ PythonBox is not Jetify Devbox, Microsoft Dev Box, Box Python SDK, Pybricks, or
3636

3737
PythonBox does not include telemetry, cloud sync, bundled credentials, or built-in external service API calls. It opens, saves, and executes files only through user-triggered local workflows.
3838

39-
## Last-checked: 2026-06-11
39+
## Last-checked: 2026-06-12

tests/test_pythonbox_regressions.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,15 @@ def test_parse_startup_file_argument_accepts_bare_file_path(self):
124124

125125
@unittest.skipUnless(shutil.which("git") is not None, "git required")
126126
class GitIntegrationRegressionTests(unittest.TestCase):
127-
def _create_repo_with_tracked_file(self, initial_text: str):
127+
def _write_text(self, file_path: Path, text: str, newline: str = "\n"):
128+
file_path.write_bytes(text.replace("\n", newline).encode("utf-8"))
129+
130+
def _create_repo_with_tracked_file(self, initial_text: str, *, newline: str = "\n"):
128131
tmp_dir = Path(tempfile.mkdtemp(prefix="pythonbox-git-"))
129132
subprocess.run(["git", "init"], cwd=tmp_dir, check=True, capture_output=True)
130133

131134
file_path = tmp_dir / "demo.py"
132-
file_path.write_text(initial_text, encoding="utf-8")
135+
self._write_text(file_path, initial_text, newline=newline)
133136
subprocess.run(["git", "-C", str(tmp_dir), "add", "demo.py"], check=True, capture_output=True)
134137

135138
self.addCleanup(shutil.rmtree, tmp_dir, True)
@@ -172,6 +175,19 @@ def test_git_modified_lines_classify_insertions_as_added(self):
172175
self.assertEqual([], sorted(modified))
173176
self.assertEqual([], sorted(deleted))
174177

178+
def test_git_modified_lines_classify_crlf_replacements_as_modified(self):
179+
module = load_pythonbox_module()
180+
181+
_, file_path = self._create_repo_with_tracked_file("a\nb\nc\n", newline="\r\n")
182+
self._write_text(file_path, "a\nX\nc\n", newline="\r\n")
183+
184+
git = module.GitIntegration()
185+
added, modified, deleted = git.get_modified_lines(str(file_path))
186+
187+
self.assertEqual([], sorted(added))
188+
self.assertEqual([2], sorted(modified))
189+
self.assertEqual([1], sorted(deleted))
190+
175191

176192
class SettingsRegressionTests(unittest.TestCase):
177193
def _temp_settings(self, module, folder: str):

0 commit comments

Comments
 (0)