Skip to content

Commit 990d60b

Browse files
committed
3C - Fix tests and coverage badge
1 parent 7eeb23f commit 990d60b

File tree

4 files changed

+95
-77
lines changed

4 files changed

+95
-77
lines changed

.github/workflows/pytest.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,17 @@ jobs:
3232
- name: Upload coverage to Codecov
3333
uses: codecov/codecov-action@v4
3434
with:
35+
# Upload the generated coverage.xml. For public repos a token is
36+
# not required, but you can add CODECOV_TOKEN as a secret if needed.
3537
files: ./coverage.xml
38+
# Add a flag/name so uploads are easy to identify in Codecov UI
39+
flags: unittests
40+
name: pytest-coverage
41+
# Do not fail the CI if upload to Codecov has an issue (helps debug badge problems)
42+
fail_ci_if_error: false
43+
44+
- name: Show coverage.xml (first 40 lines) # helps debug Codecov uploads
45+
if: always()
46+
run: |
47+
echo '--- coverage.xml (preview) ---'
48+
head -n 40 coverage.xml || true

coverage.xml

Lines changed: 76 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<?xml version="1.0" ?>
2-
<coverage version="7.10.5" timestamp="1755978993153" lines-valid="194" lines-covered="190" line-rate="0.9794" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
2+
<coverage version="7.10.5" timestamp="1755979625950" lines-valid="195" lines-covered="191" line-rate="0.9795" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
33
<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.10.5 -->
44
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
55
<sources>
66
<source>D:\GitHub\NetSplit</source>
77
</sources>
88
<packages>
9-
<package name="." line-rate="0.9794" branch-rate="0" complexity="0">
9+
<package name="." line-rate="0.9795" branch-rate="0" complexity="0">
1010
<classes>
11-
<class name="netSplit.py" filename="netSplit.py" complexity="0" line-rate="0.9794" branch-rate="0">
11+
<class name="netSplit.py" filename="netSplit.py" complexity="0" line-rate="0.9795" branch-rate="0">
1212
<methods/>
1313
<lines>
1414
<line number="13" hits="1"/>
@@ -19,192 +19,193 @@
1919
<line number="18" hits="1"/>
2020
<line number="19" hits="1"/>
2121
<line number="21" hits="1"/>
22-
<line number="24" hits="1"/>
23-
<line number="32" hits="1"/>
24-
<line number="39" hits="1"/>
22+
<line number="22" hits="1"/>
23+
<line number="25" hits="1"/>
24+
<line number="33" hits="1"/>
2525
<line number="40" hits="1"/>
26-
<line number="42" hits="1"/>
27-
<line number="44" hits="1"/>
28-
<line number="49" hits="1"/>
26+
<line number="41" hits="1"/>
27+
<line number="43" hits="1"/>
28+
<line number="45" hits="1"/>
2929
<line number="50" hits="1"/>
3030
<line number="51" hits="1"/>
31-
<line number="53" hits="1"/>
31+
<line number="52" hits="1"/>
3232
<line number="54" hits="1"/>
3333
<line number="55" hits="1"/>
3434
<line number="56" hits="1"/>
3535
<line number="57" hits="1"/>
3636
<line number="58" hits="1"/>
37-
<line number="60" hits="1"/>
38-
<line number="68" hits="1"/>
39-
<line number="70" hits="1"/>
40-
<line number="72" hits="1"/>
41-
<line number="83" hits="1"/>
37+
<line number="59" hits="1"/>
38+
<line number="61" hits="1"/>
39+
<line number="69" hits="1"/>
40+
<line number="71" hits="1"/>
41+
<line number="73" hits="1"/>
4242
<line number="84" hits="1"/>
4343
<line number="85" hits="1"/>
4444
<line number="86" hits="1"/>
4545
<line number="87" hits="1"/>
4646
<line number="88" hits="1"/>
4747
<line number="89" hits="1"/>
48-
<line number="92" hits="1"/>
49-
<line number="98" hits="1"/>
50-
<line number="100" hits="1"/>
48+
<line number="90" hits="1"/>
49+
<line number="93" hits="1"/>
50+
<line number="99" hits="1"/>
5151
<line number="101" hits="1"/>
5252
<line number="102" hits="1"/>
5353
<line number="103" hits="1"/>
54-
<line number="105" hits="1"/>
54+
<line number="104" hits="1"/>
5555
<line number="106" hits="1"/>
5656
<line number="107" hits="1"/>
57-
<line number="109" hits="1"/>
57+
<line number="108" hits="1"/>
5858
<line number="110" hits="1"/>
59-
<line number="113" hits="1"/>
59+
<line number="111" hits="1"/>
6060
<line number="114" hits="1"/>
61-
<line number="116" hits="1"/>
61+
<line number="115" hits="1"/>
6262
<line number="117" hits="1"/>
63-
<line number="119" hits="1"/>
63+
<line number="118" hits="1"/>
6464
<line number="120" hits="1"/>
6565
<line number="121" hits="1"/>
6666
<line number="122" hits="1"/>
67-
<line number="125" hits="1"/>
68-
<line number="131" hits="1"/>
69-
<line number="133" hits="1"/>
70-
<line number="148" hits="1"/>
67+
<line number="123" hits="1"/>
68+
<line number="126" hits="1"/>
69+
<line number="132" hits="1"/>
70+
<line number="134" hits="1"/>
7171
<line number="149" hits="1"/>
7272
<line number="150" hits="1"/>
73-
<line number="153" hits="1"/>
73+
<line number="151" hits="1"/>
7474
<line number="154" hits="1"/>
75-
<line number="157" hits="1"/>
76-
<line number="159" hits="1"/>
75+
<line number="155" hits="1"/>
76+
<line number="158" hits="1"/>
7777
<line number="160" hits="1"/>
7878
<line number="161" hits="1"/>
79-
<line number="167" hits="1"/>
79+
<line number="162" hits="1"/>
8080
<line number="168" hits="1"/>
8181
<line number="169" hits="1"/>
8282
<line number="170" hits="1"/>
83-
<line number="172" hits="1"/>
83+
<line number="171" hits="1"/>
8484
<line number="173" hits="1"/>
8585
<line number="174" hits="1"/>
8686
<line number="175" hits="1"/>
8787
<line number="176" hits="1"/>
88-
<line number="179" hits="1"/>
88+
<line number="177" hits="1"/>
8989
<line number="180" hits="1"/>
9090
<line number="181" hits="1"/>
9191
<line number="182" hits="1"/>
92-
<line number="183" hits="0"/>
93-
<line number="185" hits="1"/>
94-
<line number="187" hits="1"/>
92+
<line number="183" hits="1"/>
93+
<line number="184" hits="0"/>
94+
<line number="186" hits="1"/>
9595
<line number="188" hits="1"/>
96-
<line number="190" hits="1"/>
96+
<line number="189" hits="1"/>
9797
<line number="191" hits="1"/>
98-
<line number="193" hits="1"/>
98+
<line number="192" hits="1"/>
9999
<line number="194" hits="1"/>
100100
<line number="195" hits="1"/>
101-
<line number="198" hits="1"/>
101+
<line number="196" hits="1"/>
102102
<line number="199" hits="1"/>
103103
<line number="200" hits="1"/>
104-
<line number="203" hits="1"/>
104+
<line number="201" hits="1"/>
105105
<line number="204" hits="1"/>
106106
<line number="205" hits="1"/>
107107
<line number="206" hits="1"/>
108108
<line number="207" hits="1"/>
109109
<line number="208" hits="1"/>
110110
<line number="209" hits="1"/>
111111
<line number="210" hits="1"/>
112-
<line number="212" hits="1"/>
112+
<line number="211" hits="1"/>
113113
<line number="213" hits="1"/>
114114
<line number="214" hits="1"/>
115115
<line number="215" hits="1"/>
116-
<line number="217" hits="1"/>
116+
<line number="216" hits="1"/>
117117
<line number="218" hits="1"/>
118118
<line number="219" hits="1"/>
119119
<line number="220" hits="1"/>
120-
<line number="222" hits="1"/>
120+
<line number="221" hits="1"/>
121121
<line number="223" hits="1"/>
122122
<line number="224" hits="1"/>
123123
<line number="225" hits="1"/>
124124
<line number="226" hits="1"/>
125125
<line number="227" hits="1"/>
126126
<line number="228" hits="1"/>
127-
<line number="229" hits="0"/>
128-
<line number="231" hits="1"/>
129-
<line number="234" hits="1"/>
127+
<line number="229" hits="1"/>
128+
<line number="230" hits="0"/>
129+
<line number="232" hits="1"/>
130130
<line number="235" hits="1"/>
131131
<line number="236" hits="1"/>
132132
<line number="237" hits="1"/>
133133
<line number="238" hits="1"/>
134134
<line number="239" hits="1"/>
135135
<line number="240" hits="1"/>
136-
<line number="241" hits="0"/>
137-
<line number="243" hits="1"/>
136+
<line number="241" hits="1"/>
137+
<line number="242" hits="0"/>
138138
<line number="244" hits="1"/>
139139
<line number="245" hits="1"/>
140140
<line number="246" hits="1"/>
141-
<line number="248" hits="1"/>
141+
<line number="247" hits="1"/>
142142
<line number="249" hits="1"/>
143143
<line number="250" hits="1"/>
144144
<line number="251" hits="1"/>
145-
<line number="253" hits="1"/>
145+
<line number="252" hits="1"/>
146146
<line number="254" hits="1"/>
147147
<line number="255" hits="1"/>
148148
<line number="256" hits="1"/>
149-
<line number="258" hits="1"/>
149+
<line number="257" hits="1"/>
150150
<line number="259" hits="1"/>
151151
<line number="260" hits="1"/>
152-
<line number="262" hits="1"/>
153-
<line number="275" hits="1"/>
154-
<line number="277" hits="1"/>
152+
<line number="261" hits="1"/>
153+
<line number="263" hits="1"/>
154+
<line number="276" hits="1"/>
155155
<line number="278" hits="1"/>
156156
<line number="279" hits="1"/>
157157
<line number="280" hits="1"/>
158158
<line number="281" hits="1"/>
159-
<line number="283" hits="1"/>
159+
<line number="282" hits="1"/>
160160
<line number="284" hits="1"/>
161161
<line number="285" hits="1"/>
162-
<line number="286" hits="0"/>
163-
<line number="287" hits="1"/>
162+
<line number="286" hits="1"/>
163+
<line number="287" hits="0"/>
164164
<line number="288" hits="1"/>
165165
<line number="289" hits="1"/>
166166
<line number="290" hits="1"/>
167167
<line number="291" hits="1"/>
168168
<line number="292" hits="1"/>
169169
<line number="293" hits="1"/>
170170
<line number="294" hits="1"/>
171-
<line number="296" hits="1"/>
172-
<line number="298" hits="1"/>
171+
<line number="295" hits="1"/>
172+
<line number="297" hits="1"/>
173173
<line number="299" hits="1"/>
174-
<line number="301" hits="1"/>
175-
<line number="303" hits="1"/>
174+
<line number="300" hits="1"/>
175+
<line number="302" hits="1"/>
176176
<line number="304" hits="1"/>
177-
<line number="307" hits="1"/>
177+
<line number="305" hits="1"/>
178178
<line number="308" hits="1"/>
179-
<line number="310" hits="1"/>
180-
<line number="312" hits="1"/>
181-
<line number="314" hits="1"/>
179+
<line number="309" hits="1"/>
180+
<line number="311" hits="1"/>
181+
<line number="313" hits="1"/>
182182
<line number="315" hits="1"/>
183183
<line number="316" hits="1"/>
184-
<line number="318" hits="1"/>
185-
<line number="324" hits="1"/>
184+
<line number="317" hits="1"/>
185+
<line number="319" hits="1"/>
186186
<line number="325" hits="1"/>
187187
<line number="326" hits="1"/>
188-
<line number="328" hits="1"/>
189-
<line number="330" hits="1"/>
190-
<line number="332" hits="1"/>
188+
<line number="327" hits="1"/>
189+
<line number="329" hits="1"/>
190+
<line number="331" hits="1"/>
191191
<line number="333" hits="1"/>
192192
<line number="334" hits="1"/>
193193
<line number="335" hits="1"/>
194-
<line number="337" hits="1"/>
195-
<line number="343" hits="1"/>
194+
<line number="336" hits="1"/>
195+
<line number="338" hits="1"/>
196196
<line number="344" hits="1"/>
197197
<line number="345" hits="1"/>
198198
<line number="346" hits="1"/>
199199
<line number="347" hits="1"/>
200200
<line number="348" hits="1"/>
201201
<line number="349" hits="1"/>
202202
<line number="350" hits="1"/>
203-
<line number="352" hits="1"/>
204-
<line number="359" hits="1"/>
203+
<line number="351" hits="1"/>
204+
<line number="353" hits="1"/>
205205
<line number="360" hits="1"/>
206206
<line number="361" hits="1"/>
207-
<line number="363" hits="1"/>
207+
<line number="362" hits="1"/>
208+
<line number="365" hits="1"/>
208209
</lines>
209210
</class>
210211
</classes>

netSplit.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ def _client_worker(listener: _socket, cs: _socket.socket, addr: Tuple[str, int])
361361
if err:
362362
print(f'client {addr} error: {err}')
363363

364+
# This just displays all traffic
364365
DEBUG = False
365366

366367
if __name__ == '__main__':

tests/unit/test_handle_and_helpers.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,11 @@ def test_handle_client_empty_initial():
5252
def test_handle_client_short_version():
5353
cli, conn, srv = make_connected_pair()
5454
try:
55-
# Client sends only a short prefix of VERSION then closes
56-
cli.sendall(netSplit.VERSION[:3].encode())
55+
# Client sends only a short prefix of VERSION then closes. Use
56+
# VERSION[:-1] so the test remains valid even if VERSION length
57+
# changes (ensures a true prefix, not the full value).
58+
prefix = netSplit.VERSION[:-1] if len(netSplit.VERSION) > 1 else netSplit.VERSION[:0]
59+
cli.sendall(prefix.encode())
5760
cli.close()
5861
listener = NetSocket(_socket.AF_INET, _socket.SOCK_STREAM)
5962
res = listener.handle_client(conn, ('127.0.0.1', 12345))

0 commit comments

Comments
 (0)