Exemple #1
0
def test_depsolver_conversion2():
  """
  Tests convert_deps_to_packageinfo_for_depsolver, but uses more complex
  version strings.
  """
  (depsolver_deps, dists_unable_to_convert) = \
      depsolver_integrate.convert_packs_to_packageinfo_for_depsolver(
      DEPS_EDGE_CASES)
  logger.info('Product of DEPS_EDGE_CASES conversion:\n' + str(depsolver_deps))
  
  assert len(dists_unable_to_convert) == 0
  logger.info("test_depsolver_conversion2(): Test passed.")

  return True # Test success
Exemple #2
0
def test_depsolver_conversion():
  """
  Tests convert_deps_to_packageinfo_for_depsolver
  """
  expected_depsolver_deps = DEPS_SIMPLE_PACKAGEINFOS
  (depsolver_deps, dists_unable_to_convert) = \
      depsolver_integrate.convert_packs_to_packageinfo_for_depsolver(
      testdata.DEPS_SIMPLE)

  logger.info(depsolver_deps)

  assert set(expected_depsolver_deps) == set(depsolver_deps), \
      'Conversion failed:\n  Expected: ' + str(expected_depsolver_deps) + \
      '\n  Got:      ' + str(depsolver_deps)
  
  assert len(dists_unable_to_convert) == 0

  logger.info("test_depsolver_conversion(): Test passed.")

  return True # Test success
Exemple #3
0
def main():

  # Try out the SAT solver in depsolver by using the wrapper function in
  # depsolver_integrate and passing that to the resolver tester in
  # resolver.test_resolvability.
  successes = []

  # Does the version string conversion work as expected?
  successes.append(test_depsolver_version_str_conversion())

  # Can we convert basic dependencies into depsolver PackageInfo?
  successes.append(test_depsolver_conversion())

  # Can we convert slightly more elaborate dependencies into depsolver
  # PackageInfo?
  successes.append(test_depsolver_conversion2())
  successes.append(test_depsolver_conversion3())


  # Basic resolvability test.
  successes.append(test_resolvability.test_resolver(
      depsolver_integrate.resolve_via_depsolver, # resolver function
      testdata.DEPS_SIMPLE_SOLUTION, #expected result
      'x(1)', # dist to install
      testdata.DEPS_SIMPLE, # dependency data
      use_raw_deps=True # Do not convert deps to edeps - func expects deps.
  ))


  # The next three test resolvable conflicts that my backtracker can't solve.
  successes.append(test_resolvability.test_resolver(
      depsolver_integrate.resolve_via_depsolver, # resolver function
      testdata.DEPS_SIMPLE2_SOLUTION, #expected result
      'x(1)', # dist to install
      testdata.DEPS_SIMPLE2, # dependency data
      use_raw_deps=True # Do not convert deps to edeps - func expects deps.
  ))

  successes.append(test_resolvability.test_resolver(
      depsolver_integrate.resolve_via_depsolver, # resolver function
      testdata.DEPS_SIMPLE3_SOLUTION, #expected result
      'x(1)', # dist to install
      testdata.DEPS_SIMPLE3, # dependency data
      use_raw_deps=True # Do not convert deps to edeps - func expects deps.
  ))

  successes.append(test_resolvability.test_resolver(
      depsolver_integrate.resolve_via_depsolver, # resolver function
      testdata.DEPS_SIMPLE4_SOLUTION, #expected result
      'x(1)', # dist to install
      testdata.DEPS_SIMPLE4, # dependency data
      use_raw_deps=True # Do not convert deps to edeps - func expects deps.
  ))

  # This tests a SLIGHTLY more complex version string, via the resolver.
  successes.append(test_resolvability.test_resolver(
      depsolver_integrate.resolve_via_depsolver, # resolver function
      DEPS_EDGE_CASES_SOLUTION, #expected result
      'pip-accel(0.9.10)', # dist to install
      DEPS_EDGE_CASES, # dependency data
      use_raw_deps=True # Do not convert deps to edeps - func expects deps.
  ))


  # # The next two test complex versions strings and are otherwise the same as 2.
  # successes.append(test_resolvability.test_resolver(
  #     depsolver_integrate.resolve_via_depsolver, # resolver function
  #     DEPS_SIMPLE5_SOLUTION, #expected result
  #     'x(1)', # dist to install
  #     DEPS_SIMPLE5, # dependency data
  #     use_raw_deps=True # Do not convert deps to edeps - func expects deps.
  # ))

  # successes.append(test_resolvability.test_resolver(
  #     depsolver_integrate.resolve_via_depsolver, # resolver function
  #     DEPS_SIMPLE6_SOLUTION, #expected result
  #     'x(1)', # dist to install
  #     DEPS_SIMPLE6, # dependency data
  #     use_raw_deps=True # Do not convert deps to edeps - func expects deps.
  # ))

  # This one tests an unresolvable conflict.
  successes.append(test_resolvability.test_resolver(
      depsolver_integrate.resolve_via_depsolver, # resolver function
      testdata.DEPS_UNRESOLVABLE_SOLUTION, #expected result
      'x(1)', # dist to install
      testdata.DEPS_UNRESOLVABLE, # dependency data
      use_raw_deps=True, # Do not convert deps to edeps - func expects deps.
      expected_exception=depresolve.UnresolvableConflictError
  ))



  # Now try a conversion of all deps into depsolver format.
  # We need to load the full dependencies dict
  depdata.ensure_data_loaded()

  assert(len(depdata.dependencies_by_dist))

  (deps_serious_depsolver, dists_unable_to_convert) = \
      depsolver_integrate.convert_packs_to_packageinfo_for_depsolver(
      depdata.dependencies_by_dist)

  assert len(depdata.dependencies_by_dist) == \
      len(deps_serious_depsolver) + len(dists_unable_to_convert), \
      'Programming error. Output of ' + \
      'convert_packs_to_packageinfo_for_depsolver does not make sense.'

  if not len(deps_serious_depsolver) > 100000:
      logger.info('Full conversion has failed. Number of converted packages '
          'is: ' + len(deps_serious_depsolver))
      successes.append(False)
  else:
    successes.append(True)
    


  assert False not in [success for success in successes], \
      "Some tests failed! Results are: " + str(successes)


  logger.info("All tests in main() successful. (: (:")