@@ -10,13 +10,14 @@ jobs:
1010 test :
1111 name : Python ${{ matrix.python-version }} on ${{ matrix.os }}
1212 runs-on : ${{ matrix.os }}
13+
1314 strategy :
1415 fail-fast : false
1516 matrix :
1617 os : [ubuntu-latest, macos-latest, windows-latest]
1718 python-version : ["3.8", "3.9", "3.10", "3.11", "3.12"]
1819
19- # Force UTF-8 stdout on ALL platforms — critical for Windows (CP1252 default)
20+ # Force UTF-8 stdout on ALL platforms — critical for Windows
2021 env :
2122 PYTHONIOENCODING : utf-8
2223 PYTHONUTF8 : 1
@@ -45,10 +46,71 @@ jobs:
4546 run : git-diff --help
4647
4748 - name : Functional test - git data collection
48- run : python -c "from git_diff.git_data import get_repo_root, collect_all_data, parse_diff; root = get_repo_root('.'); print('Root:', root); result = parse_diff('diff --git a/f.py b/f.py\nindex a..b 100644\n--- a/f.py\n+++ b/f.py\n@@ -1,2 +1,3 @@\n line1\n-old\n+new1\n+new2\n'); assert result['total_files']==1; assert result['total_additions']==2; assert result['total_deletions']==1; print('parse_diff: OK'); data = collect_all_data(root); assert 'repo' in data; print('Repo:', data['repo']['name']); print('Commits:', len(data['commits'])); print('Files:', len(data['file_tree'])); print('All tests passed!')"
49+ run : |
50+ python <<'PY'
51+ from git_diff.git_data import get_repo_root, collect_all_data, parse_diff
52+
53+ root = get_repo_root(".")
54+ print("Root:", root)
55+
56+ diff_text = """diff --git a/f.py b/f.py
57+ index a..b 100644
58+ --- a/f.py
59+ +++ b/f.py
60+ @@ -1,2 +1,3 @@
61+ line1
62+ -old
63+ +new1
64+ +new2
65+ """
66+
67+ result = parse_diff(diff_text)
68+ assert result["total_files"] == 1
69+ assert result["total_additions"] == 2
70+ assert result["total_deletions"] == 1
71+ print("parse_diff: OK")
72+
73+ data = collect_all_data(root)
74+ assert "repo" in data
75+ print("Repo:", data["repo"]["name"])
76+ print("Commits:", len(data["commits"]))
77+ print("Files:", len(data["file_tree"]))
78+
79+ print("All tests passed!")
80+ PY
4981
5082 - name : Functional test - server imports
51- run : python -c "from git_diff.server import find_free_port, GitDiffHandler; port = find_free_port(); print('Free port:', port); assert 7433 <= port <= 7500; print('Server imports: OK')"
83+ run : |
84+ python <<'PY'
85+ from git_diff.server import find_free_port, GitDiffHandler
86+
87+ port = find_free_port()
88+ print("Free port:", port)
89+ assert 7433 <= port <= 7500
90+
91+ print("Server imports: OK")
92+ PY
5293
5394 - name : Functional test - diff edge cases
54- run : python -c "from git_diff.git_data import parse_diff; r=parse_diff(''); assert r['total_files']==0; r=parse_diff('diff --git a/n.py b/n.py\nnew file mode 100644\nindex 0000000..abc\n--- /dev/null\n+++ b/n.py\n@@ -0,0 +1,2 @@\n+a\n+b\n'); assert r['files'][0]['is_new']==True; assert r['total_additions']==2; print('Edge cases OK')"
95+ run : |
96+ python <<'PY'
97+ from git_diff.git_data import parse_diff
98+
99+ r = parse_diff("")
100+ assert r["total_files"] == 0
101+
102+ r = parse_diff("""diff --git a/n.py b/n.py
103+ new file mode 100644
104+ index 0000000..abc
105+ --- /dev/null
106+ +++ b/n.py
107+ @@ -0,0 +1,2 @@
108+ +a
109+ +b
110+ """)
111+
112+ assert r["files"][0]["is_new"] is True
113+ assert r["total_additions"] == 2
114+
115+ print("Edge cases OK")
116+ PY
0 commit comments