@@ -64,15 +64,17 @@ async def test_ci_passed_with_awaiting_merge_label_pr_is_merged():
64
64
"user" : {"login" : "miss-islington" },
65
65
"merged_by" : {"login" : "Mariatta" },
66
66
},
67
- "/repos/python/cpython/pulls/5547" : {"labels" : [{"name" : "awaiting merge" }]},
67
+ "/repos/python/cpython/pulls/5547" : {
68
+ "labels" : [{"name" : "awaiting merge" }, {"name" : "CLA signed" }]
69
+ },
68
70
f"/search/issues?q=type:pr+repo:python/cpython+sha:{ sha } " : {
69
71
"total_count" : 1 ,
70
72
"items" : [
71
73
{
72
74
"number" : 5547 ,
73
75
"title" : "[3.6] bpo-32720: Fixed the replacement field grammar documentation. (GH-5544)" ,
74
76
"body" :
"\n \n `arg_name` and `element_index` are defined as `digit`+ instead of `integer`.\n (cherry picked from commit 7a561afd2c79f63a6008843b83733911d07f0119)\n \n Co-authored-by: Mariatta <[email protected] >" ,
75
- "labels" : [{"name" : "awaiting merge" }],
77
+ "labels" : [{"name" : "awaiting merge" }, { "name" : "CLA signed" } ],
76
78
}
77
79
],
78
80
},
@@ -200,7 +202,7 @@ async def test_awaiting_merge_label_added_and_ci_passed_pr_is_merged():
200
202
"action" : "labeled" ,
201
203
"pull_request" : {
202
204
"user" : {"login" : "miss-islington" },
203
- "labels" : [{"name" : "awaiting merge" }],
205
+ "labels" : [{"name" : "awaiting merge" }, { "name" : "CLA signed" } ],
204
206
"head" : {"sha" : sha },
205
207
},
206
208
}
@@ -224,15 +226,17 @@ async def test_awaiting_merge_label_added_and_ci_passed_pr_is_merged():
224
226
},
225
227
],
226
228
},
227
- "/repos/python/cpython/pulls/5547" : {"labels" : [{"name" : "awaiting merge" }]},
229
+ "/repos/python/cpython/pulls/5547" : {
230
+ "labels" : [{"name" : "awaiting merge" }, {"name" : "CLA signed" }]
231
+ },
228
232
f"/search/issues?q=type:pr+repo:python/cpython+sha:{ sha } " : {
229
233
"total_count" : 1 ,
230
234
"items" : [
231
235
{
232
236
"number" : 5547 ,
233
237
"title" : "[3.6] bpo-32720: Fixed the replacement field grammar documentation. (GH-5544)" ,
234
238
"body" :
"\n \n `arg_name` and `element_index` are defined as `digit`+ instead of `integer`.\n (cherry picked from commit 7a561afd2c79f63a6008843b83733911d07f0119)\n \n Co-authored-by: Mariatta <[email protected] >" ,
235
- "labels" : [{"name" : "awaiting merge" }],
239
+ "labels" : [{"name" : "awaiting merge" }, { "name" : "CLA signed" } ],
236
240
}
237
241
],
238
242
},
@@ -894,7 +898,11 @@ async def test_ci_passed_automerge():
894
898
"/repos/python/cpython/pulls/5547" : {
895
899
"user" : {"login" : "bedevere-bot" },
896
900
"merged_by" : None ,
897
- "labels" : [{"name" : "awaiting merge" }],
901
+ "labels" : [
902
+ {"name" : "awaiting merge" },
903
+ {"name" : "CLA signed" },
904
+ {"name" : AUTOMERGE_LABEL },
905
+ ],
898
906
},
899
907
f"/search/issues?q=type:pr+repo:python/cpython+sha:{ sha } " : {
900
908
"total_count" : 1 ,
@@ -903,7 +911,11 @@ async def test_ci_passed_automerge():
903
911
"number" : 5547 ,
904
912
"title" : "bpo-32720: Fixed the replacement field grammar documentation." ,
905
913
"body" :
"\n \n `arg_name` and `element_index` are defined as `digit`+ instead of `integer`.\n (cherry picked from commit 7a561afd2c79f63a6008843b83733911d07f0119)\n \n Co-authored-by: Mariatta <[email protected] >" ,
906
- "labels" : [{"name" : "awaiting merge" }, {"name" : AUTOMERGE_LABEL }],
914
+ "labels" : [
915
+ {"name" : "awaiting merge" },
916
+ {"name" : AUTOMERGE_LABEL },
917
+ {"name" : "CLA signed" },
918
+ ],
907
919
}
908
920
],
909
921
},
@@ -983,7 +995,11 @@ async def test_awaiting_merge_label_and_automerge_label_added_not_miss_islington
983
995
"action" : "labeled" ,
984
996
"pull_request" : {
985
997
"user" : {"login" : "Mariatta" },
986
- "labels" : [{"name" : "awaiting merge" }, {"name" : AUTOMERGE_LABEL }],
998
+ "labels" : [
999
+ {"name" : "awaiting merge" },
1000
+ {"name" : AUTOMERGE_LABEL },
1001
+ {"name" : "CLA signed" },
1002
+ ],
987
1003
"head" : {"sha" : sha },
988
1004
},
989
1005
}
@@ -1010,7 +1026,11 @@ async def test_awaiting_merge_label_and_automerge_label_added_not_miss_islington
1010
1026
"/repos/python/cpython/pulls/5547" : {
1011
1027
"user" : {"login" : "Mariatta" },
1012
1028
"merged_by" : None ,
1013
- "labels" : [{"name" : "awaiting merge" }, {"name" : AUTOMERGE_LABEL }],
1029
+ "labels" : [
1030
+ {"name" : "awaiting merge" },
1031
+ {"name" : AUTOMERGE_LABEL },
1032
+ {"name" : "CLA signed" },
1033
+ ],
1014
1034
},
1015
1035
f"/search/issues?q=type:pr+repo:python/cpython+sha:{ sha } " : {
1016
1036
"total_count" : 1 ,
@@ -1019,7 +1039,11 @@ async def test_awaiting_merge_label_and_automerge_label_added_not_miss_islington
1019
1039
"number" : 5547 ,
1020
1040
"title" : "bpo-32720: Fixed the replacement field grammar documentation." ,
1021
1041
"body" : "\n \n `arg_name` and `element_index` are defined as `digit`+ instead of `integer`." ,
1022
- "labels" : [{"name" : "awaiting merge" }, {"name" : AUTOMERGE_LABEL }],
1042
+ "labels" : [
1043
+ {"name" : "awaiting merge" },
1044
+ {"name" : AUTOMERGE_LABEL },
1045
+ {"name" : "CLA signed" },
1046
+ ],
1023
1047
}
1024
1048
],
1025
1049
},
@@ -1043,7 +1067,7 @@ async def test_awaiting_merge_label_and_automerge_label_added_not_miss_islington
1043
1067
)
1044
1068
1045
1069
1046
- async def test_awaiting_automerge_but_not_awaiting_merge ():
1070
+ async def test_automerge_but_not_awaiting_merge ():
1047
1071
sha = "f2393593c99dd2d3ab8bfab6fcc5ddee540518a9"
1048
1072
data = {
1049
1073
"action" : "labeled" ,
@@ -1116,3 +1140,154 @@ async def test_pr_not_found_for_commit():
1116
1140
await status_change .router .dispatch (event , gh )
1117
1141
assert not hasattr (gh , "post_data" ) # does not leave a comment
1118
1142
assert not hasattr (gh , "put_data" ) # does not leave a comment
1143
+
1144
+
1145
+ async def test_automerge_multi_commits_in_pr ():
1146
+ sha = "f2393593c99dd2d3ab8bfab6fcc5ddee540518a9"
1147
+ data = {
1148
+ "action" : "labeled" ,
1149
+ "pull_request" : {
1150
+ "user" : {"login" : "Mariatta" },
1151
+ "labels" : [
1152
+ {"name" : "awaiting merge" },
1153
+ {"name" : AUTOMERGE_LABEL },
1154
+ {"name" : "CLA signed" },
1155
+ ],
1156
+ "head" : {"sha" : sha },
1157
+ },
1158
+ }
1159
+
1160
+ event = sansio .Event (data , event = "pull_request" , delivery_id = "1" )
1161
+
1162
+ getitem = {
1163
+ f"/repos/python/cpython/commits/{ sha } /status" : {
1164
+ "state" : "success" ,
1165
+ "statuses" : [
1166
+ {
1167
+ "state" : "success" ,
1168
+ "description" : "Issue report skipped" ,
1169
+ "context" : "bedevere/issue-number" ,
1170
+ },
1171
+ {
1172
+ "state" : "success" ,
1173
+ "description" : "The Travis CI build passed" ,
1174
+ "target_url" : "https://travis-ci.org/python/cpython/builds/340259685?utm_source=github_status&utm_medium=notification" ,
1175
+ "context" : "continuous-integration/travis-ci/pr" ,
1176
+ },
1177
+ ],
1178
+ },
1179
+ "/repos/python/cpython/pulls/5547" : {
1180
+ "user" : {"login" : "Mariatta" },
1181
+ "merged_by" : None ,
1182
+ "labels" : [
1183
+ {"name" : "awaiting merge" },
1184
+ {"name" : AUTOMERGE_LABEL },
1185
+ {"name" : "CLA signed" },
1186
+ ],
1187
+ },
1188
+ f"/search/issues?q=type:pr+repo:python/cpython+sha:{ sha } " : {
1189
+ "total_count" : 1 ,
1190
+ "items" : [
1191
+ {
1192
+ "number" : 5547 ,
1193
+ "title" : "bpo-32720: Fixed the replacement field grammar documentation." ,
1194
+ "body" : "\n \n `arg_name` and `element_index` are defined as `digit`+ instead of `integer`." ,
1195
+ "labels" : [
1196
+ {"name" : "awaiting merge" },
1197
+ {"name" : AUTOMERGE_LABEL },
1198
+ {"name" : "CLA signed" },
1199
+ ],
1200
+ }
1201
+ ],
1202
+ },
1203
+ }
1204
+
1205
+ getiter = {
1206
+ "/repos/python/cpython/pulls/5547/commits" : [
1207
+ {"sha" : "5f007046b5d4766f971272a0cc99f8461215c1ec" },
1208
+ {"sha" : sha },
1209
+ ]
1210
+ }
1211
+
1212
+ gh = FakeGH (getitem = getitem , getiter = getiter )
1213
+ await status_change .router .dispatch (event , gh )
1214
+ assert not hasattr (gh , "post_data" ) # does not leave a comment
1215
+
1216
+ assert gh .put_data ["sha" ] == sha # is merged
1217
+ assert gh .put_data ["merge_method" ] == "squash"
1218
+ assert (
1219
+ gh .put_data ["commit_title" ]
1220
+ == "bpo-32720: Fixed the replacement field grammar documentation. (GH-5547)"
1221
+ )
1222
+ assert (
1223
+ gh .put_data ["commit_message" ]
1224
+ == "\n \n `arg_name` and `element_index` are defined as `digit`+ instead of `integer`."
1225
+ )
1226
+
1227
+
1228
+ async def test_automerge_commit_not_found ():
1229
+ sha = "f2393593c99dd2d3ab8bfab6fcc5ddee540518a9"
1230
+ data = {
1231
+ "action" : "labeled" ,
1232
+ "pull_request" : {
1233
+ "user" : {"login" : "Mariatta" },
1234
+ "labels" : [
1235
+ {"name" : "awaiting merge" },
1236
+ {"name" : AUTOMERGE_LABEL },
1237
+ {"name" : "CLA signed" },
1238
+ ],
1239
+ "head" : {"sha" : sha },
1240
+ },
1241
+ }
1242
+
1243
+ event = sansio .Event (data , event = "pull_request" , delivery_id = "1" )
1244
+
1245
+ getitem = {
1246
+ f"/repos/python/cpython/commits/{ sha } /status" : {
1247
+ "state" : "success" ,
1248
+ "statuses" : [
1249
+ {
1250
+ "state" : "success" ,
1251
+ "description" : "Issue report skipped" ,
1252
+ "context" : "bedevere/issue-number" ,
1253
+ },
1254
+ {
1255
+ "state" : "success" ,
1256
+ "description" : "The Travis CI build passed" ,
1257
+ "target_url" : "https://travis-ci.org/python/cpython/builds/340259685?utm_source=github_status&utm_medium=notification" ,
1258
+ "context" : "continuous-integration/travis-ci/pr" ,
1259
+ },
1260
+ ],
1261
+ },
1262
+ "/repos/python/cpython/pulls/5547" : {
1263
+ "user" : {"login" : "Mariatta" },
1264
+ "merged_by" : None ,
1265
+ "labels" : [
1266
+ {"name" : "awaiting merge" },
1267
+ {"name" : AUTOMERGE_LABEL },
1268
+ {"name" : "CLA signed" },
1269
+ ],
1270
+ },
1271
+ f"/search/issues?q=type:pr+repo:python/cpython+sha:{ sha } " : {
1272
+ "total_count" : 1 ,
1273
+ "items" : [
1274
+ {
1275
+ "number" : 5547 ,
1276
+ "title" : "bpo-32720: Fixed the replacement field grammar documentation." ,
1277
+ "body" : "\n \n `arg_name` and `element_index` are defined as `digit`+ instead of `integer`." ,
1278
+ "labels" : [
1279
+ {"name" : "awaiting merge" },
1280
+ {"name" : AUTOMERGE_LABEL },
1281
+ {"name" : "CLA signed" },
1282
+ ],
1283
+ }
1284
+ ],
1285
+ },
1286
+ }
1287
+
1288
+ getiter = {"/repos/python/cpython/pulls/5547/commits" : []}
1289
+
1290
+ gh = FakeGH (getitem = getitem , getiter = getiter )
1291
+ await status_change .router .dispatch (event , gh )
1292
+ assert not hasattr (gh , "post_data" ) # does not leave a comment
1293
+ assert not hasattr (gh , "put_data" ) # does not merge
0 commit comments