@@ -41,17 +41,22 @@ class SecondaryService(DumbService):
4141 ISSUE_CLASS = SecondaryIssue
4242
4343
44- ARBITRARY_RECORD = {
45- 'title' : 'Hallo' ,
46- 'url' : 'https://example.com' ,
47- 'number' : 10 ,
48- 'labels' : [],
49- }
50- ARBITRARY_EXTRA = {'project' : 'one' , 'type' : 'issue' , 'annotations' : []}
44+ def yields_one (target_specific_url = False ):
45+ def issues (self ):
46+ record = {
47+ 'title' : 'Hallo' ,
48+ 'url' : 'https://example.com' ,
49+ 'number' : 10 ,
50+ 'labels' : [],
51+ }
52+
53+ if target_specific_url :
54+ record ['url' ] = f'https://example.com/{ self .config .target } '
5155
56+ extra = {'project' : 'one' , 'type' : 'issue' , 'annotations' : []}
57+ yield self .get_issue_for_record (record , extra )
5258
53- def yields_one (self ):
54- yield self .get_issue_for_record (ARBITRARY_RECORD , ARBITRARY_EXTRA )
59+ return issues
5560
5661
5762def yields_none (self ):
@@ -62,12 +67,6 @@ def raises(self):
6267 raise Exception ('message' )
6368
6469
65- def yields_per_target (self ):
66- """Yield one issue whose url is unique per target."""
67- record = dict (ARBITRARY_RECORD , url = f'https://example.com/{ self .config .target } ' )
68- yield self .get_issue_for_record (record , ARBITRARY_EXTRA )
69-
70-
7170def fake_service (issues , base = DumbService ):
7271 """
7372 Build a fake service class whose issues() is the given function.
@@ -106,9 +105,10 @@ def test_success(self):
106105 """
107106 A normal `bugwarrior pull` invocation.
108107 """
109- self .enter_context (register_services ({'test' : fake_service (yields_one )}))
110-
111- with self .caplog .at_level (logging .INFO ):
108+ with (
109+ register_services ({'test' : fake_service (yields_one ())}),
110+ self .caplog .at_level (logging .INFO ),
111+ ):
112112 self .runner .invoke (command .cli , args = ('pull' , '--debug' ))
113113
114114 logs = [rec .message for rec in self .caplog .records ]
@@ -121,9 +121,10 @@ def test_failure(self):
121121 """
122122 A broken `bugwarrior pull` invocation.
123123 """
124- self .enter_context (register_services ({'test' : fake_service (raises )}))
125-
126- with self .caplog .at_level (logging .ERROR ):
124+ with (
125+ register_services ({'test' : fake_service (raises )}),
126+ self .caplog .at_level (logging .ERROR ),
127+ ):
127128 self .runner .invoke (command .cli , args = ('pull' , '--debug' ))
128129
129130 self .assertNotEqual (self .caplog .records , [])
@@ -147,16 +148,15 @@ def test_partial_failure_survival(self):
147148 self .config ['my_broken_service' ] = {'service' : 'secondary' }
148149 self .write_rc (self .config )
149150
150- self . enter_context (
151+ with (
151152 register_services (
152153 {
153154 'test' : fake_service (yields_none ),
154155 'secondary' : fake_service (raises , base = SecondaryService ),
155156 }
156- )
157- )
158-
159- with self .caplog .at_level (logging .INFO ):
157+ ),
158+ self .caplog .at_level (logging .INFO ),
159+ ):
160160 self .runner .invoke (command .cli , args = ('pull' , '--debug' ))
161161
162162 logs = [rec .message for rec in self .caplog .records ]
@@ -175,23 +175,23 @@ def test_partial_failure_database_integrity(self):
175175
176176 # Add a task to each service.
177177 both_working = {
178- 'test' : fake_service (yields_per_target ),
179- 'secondary' : fake_service (yields_per_target , base = SecondaryService ),
178+ 'test' : fake_service (yields_one (target_specific_url = True )),
179+ 'secondary' : fake_service (
180+ yields_one (target_specific_url = True ), base = SecondaryService
181+ ),
180182 }
181- with register_services (both_working ):
182- with self .caplog .at_level (logging .DEBUG ):
183- self .runner .invoke (command .cli , args = ('pull' , '--debug' ))
183+ with register_services (both_working ), self .caplog .at_level (logging .DEBUG ):
184+ self .runner .invoke (command .cli , args = ('pull' , '--debug' ))
184185 logs = [rec .message for rec in self .caplog .records ]
185186 self .assertIn ('Adding 2 tasks' , logs )
186187
187188 # Break the secondary service and run pull again.
188189 secondary_broken = {
189- 'test' : fake_service (yields_per_target ),
190+ 'test' : fake_service (yields_one ( target_specific_url = True ) ),
190191 'secondary' : fake_service (raises , base = SecondaryService ),
191192 }
192- with register_services (secondary_broken ):
193- with self .caplog .at_level (logging .INFO ):
194- self .runner .invoke (command .cli , args = ('pull' , '--debug' ))
193+ with register_services (secondary_broken ), self .caplog .at_level (logging .INFO ):
194+ self .runner .invoke (command .cli , args = ('pull' , '--debug' ))
195195 logs = [rec .message for rec in self .caplog .records ]
196196
197197 # Make sure my_broken_service failed while my_service succeeded.
@@ -209,13 +209,15 @@ def test_locked_repository(self, file_lock):
209209 """
210210 # The service is never collected (the lock fails first), but config
211211 # loading still resolves it.
212- self .enter_context (register_services ({'test' : DumbService }))
213212 lockfile_path = pathlib .Path (self .lists_path ) / 'bugwarrior.lockfile'
214213 file_lock .return_value .__enter__ .side_effect = command .Timeout (
215214 str (lockfile_path )
216215 )
217216
218- with self .caplog .at_level (logging .CRITICAL ):
217+ with (
218+ register_services ({'test' : DumbService }),
219+ self .caplog .at_level (logging .CRITICAL ),
220+ ):
219221 result = self .runner .invoke (command .cli , args = ('pull' , '--debug' ))
220222
221223 self .assertEqual (result .exit_code , 1 )
@@ -231,9 +233,10 @@ def test_legacy_cli(self):
231233
232234 Also test that it logs a deprecation warning.
233235 """
234- self .enter_context (register_services ({'test' : fake_service (yields_one )}))
235-
236- with self .caplog .at_level (logging .INFO ):
236+ with (
237+ register_services ({'test' : fake_service (yields_one ())}),
238+ self .caplog .at_level (logging .INFO ),
239+ ):
237240 self .runner .invoke (command .pull , args = ('--debug' ))
238241
239242 logs = [rec .message for rec in self .caplog .records ]
0 commit comments