Skip to content

Commit a3917be

Browse files
fix cli
1 parent 3179cb7 commit a3917be

1 file changed

Lines changed: 66 additions & 4 deletions

File tree

.github/workflows/ci.yml

Lines changed: 66 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)