1111# SPDX-License-Identifier: Apache-2.0
1212# *******************************************************************************
1313import os
14+ from collections .abc import Callable
1415from unittest .mock import ANY , MagicMock , patch
15- import score_header_service . header_service as hs
16+
1617import pytest
18+ import score_header_service .header_service as hs
1719
1820
1921@pytest .fixture (scope = "session" , autouse = True )
20- def add_metadata (record_testsuite_property ):
22+ def add_metadata (record_testsuite_property : Callable [[ str , str | list [ str ]], None ] ):
2123 record_testsuite_property ("Verifies" , ["GD__automatic_document_header_generation" ])
2224 record_testsuite_property (
2325 "Description" , "It should check the generation of the header information."
@@ -44,7 +46,7 @@ def test_register():
4446
4547
4648@patch ("random.randint" )
47- def test_generate_hash (randint_mock ):
49+ def test_generate_hash (randint_mock : MagicMock ):
4850 randint_mock .return_value = 42
4951 assert hs .generate_hash () == "73475cb4"
5052
@@ -53,11 +55,13 @@ def test_generate_hash(randint_mock):
5355@patch ("score_header_service.header_service._extract_github_data" )
5456@patch ("sphinx.application.Sphinx" )
5557def test_request_from_directive_github_data (
56- mock_app , mock_extract_github_data , mock_generate_hash
58+ mock_app : MagicMock ,
59+ mock_extract_github_data : MagicMock ,
60+ mock_generate_hash : MagicMock ,
5761):
5862 github_data = {
5963 "author" : "John Doe" ,
60- "approvers" : "apover_1 " ,
64+ "approvers" : "approver1 " ,
6165 "reviewers" : "reviewer_1" ,
6266 "hash" : "abcdef" ,
6367 }
@@ -83,11 +87,13 @@ def test_request_from_directive_github_data(
8387@patch ("score_header_service.header_service._extract_merge_commit_data" )
8488@patch ("sphinx.application.Sphinx" )
8589def test_request_from_directive_commit_data (
86- mock_app , mock_extract_merge_commit_data , mock_generate_hash
90+ mock_app : MagicMock ,
91+ mock_extract_merge_commit_data : MagicMock ,
92+ mock_generate_hash : MagicMock ,
8793):
8894 github_data = {
8995 "author" : "John Doe" ,
90- "approvers" : "apover_1 " ,
96+ "approvers" : "approver1 " ,
9197 "reviewers" : "reviewer_1" ,
9298 "hash" : "abcdef" ,
9399 }
@@ -115,15 +121,15 @@ def test_request_from_directive_commit_data(
115121
116122@patch ("score_header_service.header_service.HeaderService.request_from_directive" )
117123@patch ("sphinx.application.Sphinx" )
118- def test_debug (mock_app , mock_request_from_directive ):
124+ def test_debug (mock_app : MagicMock , mock_request_from_directive : MagicMock ):
119125 debug_data = [{"key" : "value" }]
120126 mock_request_from_directive .return_value = debug_data
121127 header_service = hs .HeaderService (mock_app , "dummy-service" , None )
122128 assert header_service .debug (None ) == debug_data
123129
124130
125131@patch ("score_header_service.header_service.subprocess.run" )
126- def test_extract_merge_commit_data (run_mock ):
132+ def test_extract_merge_commit_data (run_mock : MagicMock ):
127133 lines = """abcdef
128134John Doe
129135Approved: {approver1} ( {approver1@mail.com} ) on {2024-11-1}
@@ -137,7 +143,8 @@ def test_extract_merge_commit_data(run_mock):
137143 result_mock .stdout .decode .return_value = lines
138144 run_mock .return_value = result_mock
139145
140- assert hs ._extract_merge_commit_data ("/req/feature1" ) == {
146+ # private functions just used in test
147+ assert hs ._extract_merge_commit_data ("/req/feature1" ) == { # type: ignore
141148 "author" : "John Doe" ,
142149 "approver" : ["approver1, approver1@mail.com" , "approver2, approver2@mail.com" ],
143150 "reviewer" : [
@@ -157,12 +164,12 @@ def test_extract_merge_commit_data(run_mock):
157164
158165
159166@patch ("score_header_service.header_service.subprocess.run" )
160- def test_extract_merge_commit_data_error (run_mock ):
167+ def test_extract_merge_commit_data_error (run_mock : MagicMock ):
161168 result_mock = MagicMock ()
162169 result_mock .returncode = 1
163170 run_mock .return_value = result_mock
164171
165- assert hs ._extract_merge_commit_data ("/req/feature1 " ) == {
172+ assert hs ._extract_merge_commit_data ("/req/feature2 " ) == { # type: ignore
166173 "author" : "N/A" ,
167174 "approver" : "N/A" ,
168175 "reviewer" : "N/A" ,
@@ -180,15 +187,15 @@ def test_extract_merge_commit_data_error(run_mock):
180187@patch ("score_header_service.header_service.Auth.Token" )
181188@patch ("score_header_service.header_service.Github" )
182189def test_extract_github_data (
183- mock_github ,
184- mock_auth_token ,
185- mock_extract_github_token ,
186- mock_extract_pull_request ,
187- mock_extract_repo ,
188- mock_extract_org ,
189- mock_extract_team_info ,
190- mock_extract_reviewers ,
191- mock_extract_approvers ,
190+ mock_github : MagicMock ,
191+ mock_auth_token : MagicMock ,
192+ mock_extract_github_token : MagicMock ,
193+ mock_extract_pull_request : MagicMock ,
194+ mock_extract_repo : MagicMock ,
195+ mock_extract_org : MagicMock ,
196+ mock_extract_team_info : MagicMock ,
197+ mock_extract_reviewers : MagicMock ,
198+ mock_extract_approvers : MagicMock ,
192199):
193200 mock_extract_github_token .return_value = "fake_token"
194201 mock_auth_token .return_value = "fake_token"
@@ -210,7 +217,7 @@ def test_extract_github_data(
210217 mock_extract_reviewers .return_value = "reviewer1; reviewer2"
211218 mock_extract_team_info .return_value = {"team1" : "approver3" }
212219
213- data = hs ._extract_github_data ()
220+ data = hs ._extract_github_data () # type: ignore
214221 assert data == {
215222 "author" : "author1" ,
216223 "approvers" : "approver1" ,
@@ -220,9 +227,9 @@ def test_extract_github_data(
220227
221228
222229@patch ("score_header_service.header_service.Auth.Token" )
223- def test_extract_github_data_exception (mock_auth_token ):
230+ def test_extract_github_data_exception (mock_auth_token : MagicMock ):
224231 mock_auth_token .side_effect = Exception ("Error" )
225- assert hs ._extract_github_data () == {
232+ assert hs ._extract_github_data () == { # type: ignore
226233 "author" : "N/A" ,
227234 "approvers" : "N/A" ,
228235 "reviewers" : "N/A" ,
@@ -232,22 +239,22 @@ def test_extract_github_data_exception(mock_auth_token):
232239
233240def test_extract_org ():
234241 with patch .dict (os .environ , {"GITHUB_REPOSITORY" : "org/repo" }):
235- assert hs ._extract_org () == "org"
242+ assert hs ._extract_org () == "org" # type: ignore
236243
237244
238245def test_extract_repo ():
239246 with patch .dict (os .environ , {"GITHUB_REPOSITORY" : "org/repo" }):
240- assert hs ._extract_repo () == "org/repo"
247+ assert hs ._extract_repo () == "org/repo" # type: ignore
241248
242249
243250def test_extract_github_token ():
244251 with patch .dict (os .environ , {"GH_TOKEN" : "fake_token" }):
245- assert hs ._extract_github_token () == "fake_token"
252+ assert hs ._extract_github_token () == "fake_token" # type: ignore
246253
247254
248255def test_extract_pull_request ():
249256 with patch .dict (os .environ , {"GITHUB_REF_NAME" : "123/merge" }):
250- assert hs ._extract_pull_request () == "123"
257+ assert hs ._extract_pull_request () == "123" # type: ignore
251258
252259
253260def test_extract_team_info ():
@@ -268,13 +275,13 @@ def test_extract_team_info():
268275 mock_team1 .get_members .return_value = [mock_member1 , mock_member2 ]
269276 mock_org .get_teams .return_value = [mock_team1 , mock_team2 ]
270277 mock_org .get_team .side_effect = lambda id : mock_team1 if id == 1 else mock_team2
271- assert hs ._extract_team_info (mock_org ) == {
278+ assert hs ._extract_team_info (mock_org ) == { # type: ignore
272279 "automotive-score-committers" : ["approver1" , "approver3" ]
273280 }
274281
275282
276283@patch ("score_header_service.header_service._append_approver_teams" )
277- def test_extract_appprovers (mock_append_approver_teams ):
284+ def test_extract_approvers (mock_append_approver_teams : MagicMock ):
278285 mock_review1 = MagicMock ()
279286 mock_review2 = MagicMock ()
280287 mock_review3 = MagicMock ()
@@ -285,19 +292,20 @@ def test_extract_appprovers(mock_append_approver_teams):
285292 mock_review2 .user .login = "approver2"
286293 mock_review3 .user .login = "approver3"
287294 mock_append_approver_teams .return_value = ["approver1" , "approver2" ]
288- assert (
289- hs . _extract_approvers (
290- [mock_review1 , mock_review2 , mock_review3 ],
291- { "team1" : [ "approver1" , "approver2" ]},
292- )
293- == " approver1; approver2"
295+ mock_paginated_list = MagicMock ()
296+ mock_paginated_list . __iter__ . return_value = iter (
297+ [mock_review1 , mock_review2 , mock_review3 ]
298+ )
299+ result = hs . _extract_approvers ( # type: ignore
300+ mock_paginated_list , { "team1" : [ " approver1" , " approver2"]}
294301 )
302+ assert result == "approver1; approver2"
295303
296304
297305def test_append_approver_teams ():
298306 approvers = ["approver1" , "approver2" ]
299307 team_info = {"team1" : ["approver1" ]}
300- assert hs ._append_approver_teams (approvers , team_info ) == [
308+ assert hs ._append_approver_teams (approvers , team_info ) == [ # type: ignore
301309 "approver1 (team1)" ,
302310 "approver2" ,
303311 ]
@@ -313,7 +321,9 @@ def test_extract_reviewers():
313321 mock_review1 .user .login = "reviewer1"
314322 mock_review2 .user .login = "reviewer2"
315323 mock_review3 .user .login = "reviewer3"
316- assert (
317- hs . _extract_reviewers ([ mock_review1 , mock_review2 , mock_review3 ], "author1" )
318- == "reviewer1; reviewer3"
324+ mock_paginated_list = MagicMock ()
325+ mock_paginated_list . __iter__ . return_value = iter (
326+ [ mock_review1 , mock_review2 , mock_review3 ]
319327 )
328+ result = hs ._extract_reviewers (mock_paginated_list , "author1" ) # type: ignore
329+ assert result == "reviewer1; reviewer3"
0 commit comments