def test_info_is_passed_to_chained_translators(): translator = mock.MagicMock(spec=TranslatorBase) t = ChainedTranslator(translator) t.translate("fake_package", "fake_into") translator.translate.assert_called_with("fake_package", into="fake_into")
def test_chained_translator_short_circuit_translate(): initial_empty_translator = mock.MagicMock(spec=TranslatorBase) initial_empty_translator.translate.return_value = None translator_with_value = mock.MagicMock(spec=TranslatorBase) translator_with_value.translate.return_value = "fake_success" translator_after_value = mock.MagicMock(spec=TranslatorBase) t = ChainedTranslator(initial_empty_translator, translator_with_value, translator_after_value) result = t.translate("fake_package", "fake_into") assert result == "fake_success" assert initial_empty_translator.translate.called assert translator_with_value.translate.called assert not translator_after_value.translate.called
def translator_from_options(options): interpreter = interpreter_from_options(options) platform = options.platform translators = [] if options.use_wheel: installer_impl = WheelInstaller translators.append(WheelTranslator(platform=platform, interpreter=interpreter)) else: installer_impl = EggInstaller translators.append(EggTranslator(platform=platform, interpreter=interpreter)) if options.allow_builds: translators.append(SourceTranslator(installer_impl=installer_impl, interpreter=interpreter)) return ChainedTranslator(*translators)
def get_translator(self, interpreter, supported_tags): translators = [] # TODO(wickman) This is not ideal -- consider an explicit link between a Package # and its Installer type rather than mapping this here, precluding the ability to # easily add new package types (or we just forego that forever.) for package in self._precedence: if package is WheelPackage: translators.append(WheelTranslator(supported_tags=supported_tags)) elif package is EggPackage: translators.append(EggTranslator(supported_tags=supported_tags)) elif package is SourcePackage: installer_impl = WheelInstaller if WheelPackage in self._precedence else EggInstaller translators.append(SourceTranslator( installer_impl=installer_impl, interpreter=interpreter, supported_tags=supported_tags)) return ChainedTranslator(*translators)