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
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
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. (: (:")