@@ -81,7 +81,7 @@ async def mock_get_file_content(*args: Any, **kwargs: Any) -> bytes:
81
81
"pull_request" : {
82
82
"url" : pr_url ,
83
83
"body" : CHECKBOX_TICKED_UPPER , # Case doesn't matter
84
- "user" : {"login" : user },
84
+ "user" : {"login" : user , "type" : "User" },
85
85
"labels" : [],
86
86
"author_association" : "NONE" ,
87
87
"comments_url" : comments_url ,
@@ -130,7 +130,7 @@ async def mock_get_file_content(*args: Any, **kwargs: Any) -> bytes:
130
130
"url" : pr_url ,
131
131
"body" : CHECKBOX_TICKED_UPPER , # Case doesn't matter
132
132
"labels" : [],
133
- "user" : {"login" : user },
133
+ "user" : {"login" : user , "type" : "User" },
134
134
"author_association" : "NONE" ,
135
135
"comments_url" : comments_url ,
136
136
"issue_url" : issue_url ,
@@ -186,7 +186,7 @@ async def test_max_pr_by_user(
186
186
"pull_request" : {
187
187
"url" : pr_url ,
188
188
"body" : "" ,
189
- "user" : {"login" : user },
189
+ "user" : {"login" : user , "type" : "User" },
190
190
"labels" : [],
191
191
"author_association" : "NONE" ,
192
192
"comments_url" : comments_url ,
@@ -225,7 +225,7 @@ async def test_max_pr_by_user(
225
225
"pull_request" : {
226
226
"url" : pr_url ,
227
227
"body" : CHECKBOX_NOT_TICKED ,
228
- "user" : {"login" : user },
228
+ "user" : {"login" : user , "type" : "User" },
229
229
"labels" : [],
230
230
"author_association" : "NONE" ,
231
231
"comments_url" : comments_url ,
@@ -264,7 +264,7 @@ async def test_max_pr_by_user(
264
264
"pull_request" : {
265
265
"url" : pr_url ,
266
266
"body" : "" ,
267
- "user" : {"login" : user },
267
+ "user" : {"login" : user , "type" : "User" },
268
268
"labels" : [],
269
269
"author_association" : "NONE" ,
270
270
"comments_url" : comments_url ,
@@ -303,7 +303,7 @@ async def test_max_pr_by_user(
303
303
"body" : CHECKBOX_TICKED ,
304
304
"head" : {"sha" : sha },
305
305
"labels" : [],
306
- "user" : {"login" : user },
306
+ "user" : {"login" : user , "type" : "User" },
307
307
"author_association" : "NONE" ,
308
308
"comments_url" : comments_url ,
309
309
"issue_url" : issue_url ,
@@ -350,7 +350,7 @@ async def test_max_pr_by_user(
350
350
"pull_request" : {
351
351
"url" : pr_url ,
352
352
"body" : CHECKBOX_TICKED ,
353
- "user" : {"login" : user },
353
+ "user" : {"login" : user , "type" : "User" },
354
354
"labels" : [],
355
355
"author_association" : "NONE" ,
356
356
"comments_url" : comments_url ,
@@ -385,7 +385,7 @@ async def test_max_pr_by_user(
385
385
"pull_request" : {
386
386
"url" : pr_url ,
387
387
"body" : CHECKBOX_TICKED ,
388
- "user" : {"login" : user },
388
+ "user" : {"login" : user , "type" : "User" },
389
389
"labels" : [],
390
390
"author_association" : "NONE" ,
391
391
"comments_url" : comments_url ,
@@ -414,7 +414,7 @@ async def test_max_pr_by_user(
414
414
"url" : pr_url ,
415
415
"body" : "" , # body can be empty for member
416
416
"labels" : [],
417
- "user" : {"login" : user },
417
+ "user" : {"login" : user , "type" : "User" },
418
418
"author_association" : "MEMBER" ,
419
419
"comments_url" : comments_url ,
420
420
"issue_url" : issue_url ,
@@ -435,6 +435,50 @@ async def test_max_pr_by_user(
435
435
post_data = [{"labels" : [Label .REVIEW ]}],
436
436
),
437
437
),
438
+ # Pull request opened by a bot, so don't perform any validation checks nor any
439
+ # file checks. This will be verified by keeping the pull request body empty.
440
+ (
441
+ Event (
442
+ data = {
443
+ "action" : "opened" ,
444
+ "pull_request" : {
445
+ "url" : pr_url ,
446
+ "body" : "" ,
447
+ "labels" : [],
448
+ "user" : {"login" : "bot" , "type" : "Bot" },
449
+ "author_association" : "NONE" ,
450
+ "comments_url" : comments_url ,
451
+ "issue_url" : issue_url ,
452
+ "html_url" : html_pr_url ,
453
+ "requested_reviewers" : [],
454
+ "draft" : False ,
455
+ "mergeable" : True ,
456
+ },
457
+ "repository" : {"full_name" : repository },
458
+ },
459
+ event = "pull_request" ,
460
+ delivery_id = "pr_opened_by_bot" ,
461
+ ),
462
+ MockGitHubAPI (
463
+ getiter = {
464
+ files_url : [
465
+ {
466
+ "filename" : "annotation.py" ,
467
+ "contents_url" : "" ,
468
+ "status" : "added" ,
469
+ },
470
+ ]
471
+ }
472
+ ),
473
+ # No file checks should be performed by the bot. This is validated by
474
+ # passing an invalid file in the mock data and no comment/label added
475
+ # to the pull request.
476
+ ExpectedData (
477
+ getiter_url = [files_url ],
478
+ post_url = [labels_url ],
479
+ post_data = [{"labels" : [Label .REVIEW ]}],
480
+ ),
481
+ ),
438
482
# Pull request synchronize event to test whether the add labels function gets
439
483
# called if there are any labels to be added, post review comments gets called
440
484
# if there are comments to be posted and remove labels function gets called if
@@ -449,7 +493,7 @@ async def test_max_pr_by_user(
449
493
# This got added when the pull request was opened.
450
494
"labels" : [{"name" : Label .REVIEW }, {"name" : Label .TYPE_HINT }],
451
495
"head" : {"sha" : sha },
452
- "user" : {"login" : user },
496
+ "user" : {"login" : user , "type" : "User" },
453
497
"author_association" : "NONE" ,
454
498
"comments_url" : comments_url ,
455
499
"issue_url" : issue_url ,
@@ -496,7 +540,7 @@ async def test_max_pr_by_user(
496
540
# The label was added when the PR was opened.
497
541
"labels" : [{"name" : Label .REVIEW }],
498
542
"head" : {"sha" : sha },
499
- "user" : {"login" : user },
543
+ "user" : {"login" : user , "type" : "User" },
500
544
"author_association" : "NONE" ,
501
545
"comments_url" : comments_url ,
502
546
"issue_url" : issue_url ,
@@ -538,7 +582,7 @@ async def test_max_pr_by_user(
538
582
"body" : CHECKBOX_TICKED ,
539
583
"head" : {"sha" : sha },
540
584
"labels" : [],
541
- "user" : {"login" : user },
585
+ "user" : {"login" : user , "type" : "User" },
542
586
"author_association" : "NONE" ,
543
587
"comments_url" : comments_url ,
544
588
"issue_url" : issue_url ,
@@ -741,7 +785,7 @@ async def test_max_pr_by_user(
741
785
data = {
742
786
"action" : "synchronize" ,
743
787
"pull_request" : {
744
- "user" : {"login" : user },
788
+ "user" : {"login" : user , "type" : "User" },
745
789
"issue_url" : issue_url ,
746
790
"labels" : [{"name" : Label .CHANGE }],
747
791
"draft" : True ,
@@ -762,7 +806,7 @@ async def test_max_pr_by_user(
762
806
"pull_request" : {
763
807
"url" : pr_url ,
764
808
"html_url" : html_pr_url ,
765
- "user" : {"login" : user },
809
+ "user" : {"login" : user , "type" : "User" },
766
810
"issue_url" : issue_url ,
767
811
"labels" : [{"name" : Label .CHANGE }],
768
812
"draft" : False ,
@@ -823,7 +867,7 @@ async def test_max_pr_by_user(
823
867
"pull_request" : {
824
868
"url" : pr_url ,
825
869
"html_url" : html_pr_url ,
826
- "user" : {"login" : user },
870
+ "user" : {"login" : user , "type" : "User" },
827
871
"issue_url" : issue_url ,
828
872
"labels" : [{"name" : Label .REVIEW }],
829
873
"draft" : False ,
@@ -857,7 +901,7 @@ async def test_max_pr_by_user(
857
901
"pull_request" : {
858
902
"url" : pr_url ,
859
903
"html_url" : html_pr_url ,
860
- "user" : {"login" : user },
904
+ "user" : {"login" : user , "type" : "User" },
861
905
"issue_url" : issue_url ,
862
906
"labels" : [{"name" : Label .REVIEW }],
863
907
"draft" : False ,
@@ -879,7 +923,7 @@ async def test_max_pr_by_user(
879
923
"pull_request" : {
880
924
"url" : pr_url ,
881
925
"html_url" : html_pr_url ,
882
- "user" : {"login" : user },
926
+ "user" : {"login" : user , "type" : "User" },
883
927
"issue_url" : issue_url ,
884
928
"labels" : [
885
929
{"name" : Label .REVIEW },
@@ -907,7 +951,7 @@ async def test_max_pr_by_user(
907
951
"pull_request" : {
908
952
"url" : pr_url ,
909
953
"html_url" : html_pr_url ,
910
- "user" : {"login" : user },
954
+ "user" : {"login" : user , "type" : "User" },
911
955
"issue_url" : issue_url ,
912
956
"labels" : [{"name" : Label .REVIEW }],
913
957
"draft" : False ,
@@ -933,7 +977,7 @@ async def test_max_pr_by_user(
933
977
"pull_request" : {
934
978
"url" : pr_url ,
935
979
"html_url" : html_pr_url ,
936
- "user" : {"login" : user },
980
+ "user" : {"login" : user , "type" : "User" },
937
981
"issue_url" : issue_url ,
938
982
"labels" : [
939
983
{"name" : Label .REVIEW },
0 commit comments