1
+ import asyncio
2
+
1
3
from gidgethub import sansio
2
4
3
5
from miss_islington import delete_branch
4
6
5
7
6
8
class FakeGH :
7
- def __init__ (self ):
9
+ def __init__ (self , * , getitem = None ):
10
+ self ._getitem_return = getitem
11
+ self .getitem_url = None
8
12
self .post_data = None
9
13
14
+ async def getitem (self , url ):
15
+ self .getitem_url = url
16
+ to_return = self ._getitem_return [self .getitem_url ]
17
+ return to_return
18
+
10
19
async def delete (self , url ):
11
20
self .delete_url = url
12
21
13
22
23
+ async def noop_sleep (delay , result = None ):
24
+ pass
25
+
26
+
14
27
async def test_branch_deleted_when_pr_merged ():
15
28
data = {
16
29
"action" : "closed" ,
@@ -77,7 +90,7 @@ async def test_branch_deleted_and_thanks():
77
90
)
78
91
79
92
80
- async def test_branch_deleted_when_pr_closed ():
93
+ async def test_branch_deleted_when_pr_closed (monkeypatch ):
81
94
data = {
82
95
"action" : "closed" ,
83
96
"pull_request" : {
@@ -86,11 +99,16 @@ async def test_branch_deleted_when_pr_closed():
86
99
"merged" : False ,
87
100
"merged_by" : {"login" : None },
88
101
"head" : {"ref" : "backport-17ab8f0-3.7" },
102
+ "url" : "https://api.github.com/repos/python/cpython/pulls/5722" ,
89
103
},
90
104
}
91
105
event = sansio .Event (data , event = "pull_request" , delivery_id = "1" )
106
+ getitem = {
107
+ "https://api.github.com/repos/python/cpython/pulls/5722" : {"state" : "closed" },
108
+ }
92
109
93
- gh = FakeGH ()
110
+ monkeypatch .setattr (asyncio , "sleep" , noop_sleep )
111
+ gh = FakeGH (getitem = getitem )
94
112
await delete_branch .router .dispatch (event , gh )
95
113
assert gh .post_data is None # does not leave a comment
96
114
assert (
@@ -99,6 +117,30 @@ async def test_branch_deleted_when_pr_closed():
99
117
)
100
118
101
119
120
+ async def test_branch_not_deleted_when_pr_closed_and_reopened (monkeypatch ):
121
+ data = {
122
+ "action" : "closed" ,
123
+ "pull_request" : {
124
+ "number" : 5722 ,
125
+ "user" : {"login" : "miss-islington" },
126
+ "merged" : False ,
127
+ "merged_by" : {"login" : None },
128
+ "head" : {"ref" : "backport-17ab8f0-3.7" },
129
+ "url" : "https://api.github.com/repos/python/cpython/pulls/5722" ,
130
+ },
131
+ }
132
+ event = sansio .Event (data , event = "pull_request" , delivery_id = "1" )
133
+ getitem = {
134
+ "https://api.github.com/repos/python/cpython/pulls/5722" : {"state" : "opened" },
135
+ }
136
+
137
+ monkeypatch .setattr (asyncio , "sleep" , noop_sleep )
138
+ gh = FakeGH (getitem = getitem )
139
+ await delete_branch .router .dispatch (event , gh )
140
+ assert gh .post_data is None # does not leave a comment
141
+ assert not hasattr (gh , "delete_url" )
142
+
143
+
102
144
async def test_ignore_non_miss_islingtons_prs ():
103
145
data = {
104
146
"action" : "closed" ,
0 commit comments