Skip to content

Commit 4ce6acb

Browse files
committed
add new handlers for testing
1 parent ac1b1cb commit 4ce6acb

1 file changed

Lines changed: 40 additions & 14 deletions

File tree

tests.py

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -185,17 +185,21 @@ def install(self, bin_name: str, **context):
185185
def test_load_or_install_does_not_log_error_for_expected_load_fallback(self):
186186
class FallbackProvider(BinProvider):
187187
name: str = 'fallback'
188+
installed: bool = False
188189

189-
def load(self, bin_name: str, **context):
190-
raise RuntimeError('simulated load miss')
190+
def default_abspath_handler(self, bin_name: str, **context):
191+
if not self.installed:
192+
return None
193+
return Path('/usr/bin/true')
191194

192-
def install(self, bin_name: str, **context):
193-
return BinProvider.load(
194-
EnvProvider(),
195-
'python',
196-
quiet=True,
197-
nocache=True,
198-
)
195+
def default_version_handler(self, bin_name: str, abspath: Optional[Path] = None, **context):
196+
if not self.installed:
197+
return None
198+
return SemVer('1.2.3')
199+
200+
def default_install_handler(self, bin_name: str, install_args: Optional[InstallArgs] = None, **context):
201+
self.installed = True
202+
return 'installed'
199203

200204
provider = FallbackProvider()
201205

@@ -210,15 +214,31 @@ def install(self, bin_name: str, **context):
210214
def test_multi_provider_load_or_install_logs_intermediate_failures_at_debug_only(self):
211215
class FirstFailsProvider(BinProvider):
212216
name: str = 'first_fail'
217+
installed: bool = False
213218

214-
def load_or_install(self, bin_name: str, **context):
219+
def default_abspath_handler(self, bin_name: str, **context):
220+
return None
221+
222+
def default_install_handler(self, bin_name: str, install_args: Optional[InstallArgs] = None, **context):
215223
raise RuntimeError('simulated first provider failure')
216224

217225
class SecondSucceedsProvider(BinProvider):
218226
name: str = 'second_ok'
227+
installed: bool = False
228+
229+
def default_abspath_handler(self, bin_name: str, **context):
230+
if not self.installed:
231+
return None
232+
return Path('/usr/bin/true')
219233

220-
def load_or_install(self, bin_name: str, **context):
221-
return BinProvider.load(EnvProvider(), 'python', quiet=True, nocache=True)
234+
def default_version_handler(self, bin_name: str, abspath: Optional[Path] = None, **context):
235+
if not self.installed:
236+
return None
237+
return SemVer('2.3.4')
238+
239+
def default_install_handler(self, bin_name: str, install_args: Optional[InstallArgs] = None, **context):
240+
self.installed = True
241+
return 'installed'
222242

223243
binary = Binary(
224244
name='demo-multi-provider-ok',
@@ -237,13 +257,19 @@ def test_multi_provider_load_or_install_failure_error_is_not_truncated(self):
237257
class FirstFailsProvider(BinProvider):
238258
name: str = 'first_fail'
239259

240-
def load_or_install(self, bin_name: str, **context):
260+
def default_abspath_handler(self, bin_name: str, **context):
261+
return None
262+
263+
def default_install_handler(self, bin_name: str, install_args: Optional[InstallArgs] = None, **context):
241264
raise RuntimeError('simulated first provider failure')
242265

243266
class ThirdFailsProvider(BinProvider):
244267
name: str = 'third_fail'
245268

246-
def load_or_install(self, bin_name: str, **context):
269+
def default_abspath_handler(self, bin_name: str, **context):
270+
return None
271+
272+
def default_install_handler(self, bin_name: str, install_args: Optional[InstallArgs] = None, **context):
247273
raise RuntimeError('simulated third provider failure with enough text to catch truncation')
248274

249275
binary = Binary(

0 commit comments

Comments
 (0)