Example #1
0
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")
Example #2
0
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")
Example #3
0
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
Example #4
0
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)
Example #5
0
  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)