```==================== FAILURES =================...
# general
w
Copy code
==================== FAILURES ====================
                     ____________ test_exact_requirements _____________
                     
                         def test_exact_requirements():
                           with plugin_resolution(plugins=[('jake', '1.2.3'), ('jane', '3.4.5')]) as results:
                             working_set, chroot, repo_dir, cache_dir = results
                         
                             assert 2 == len(working_set.entries)
                         
                             # Kill the the repo source dir and re-resolve.  If the PluginResolver truly detects exact
                             # requirements it should skip any resolves and load directly from the still in-tact cache.
                             safe_rmtree(repo_dir)
                         
                             with plugin_resolution(chroot=chroot,
                     >                              plugins=[('jake', '1.2.3'), ('jane', '3.4.5')]) as results2:
                     
                     tests/python/pants_test/bin/test_plugin_resolver.py:107: 
                     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                     /usr/lib64/python2.7/contextlib.py:17: in __enter__
                         return self.gen.next()
                     tests/python/pants_test/bin/test_plugin_resolver.py:75: in plugin_resolution
                         yield plugin_resolver.resolve(WorkingSet(entries=[])), root_dir, repo_dir, cache_dir
                     .pants.d/python-setup/chroots/3e6b0b0542d5a19083f237d51c2ea47a6f99dd4f/pants/bin/plugin_resolver.py:49: in resolve
                         for plugin_location in self._resolve_plugin_locations():
                     .pants.d/python-setup/chroots/3e6b0b0542d5a19083f237d51c2ea47a6f99dd4f/pants/bin/plugin_resolver.py:73: in _resolve_exact_plugin_locations
                         for plugin in self._resolve_plugins():
                     .pants.d/python-setup/chroots/3e6b0b0542d5a19083f237d51c2ea47a6f99dd4f/pants/bin/plugin_resolver.py:93: in _resolve_plugins
                         cache_ttl=self._python_setup.resolver_cache_ttl)
                     .pants.d/python-setup/chroots/3e6b0b0542d5a19083f237d51c2ea47a6f99dd4f/.deps/pex-1.1.1-py2.py3-none-any.whl/pex/resolver.py:346: in resolve
                         return resolver.resolve(resolvables_from_iterable(requirements, builder))
                     .pants.d/python-setup/chroots/3e6b0b0542d5a19083f237d51c2ea47a6f99dd4f/.deps/pex-1.1.1-py2.py3-none-any.whl/pex/resolver.py:187: in resolve
                         resolvable_set.merge(resolvable, packages, parent)
                     .pants.d/python-setup/chroots/3e6b0b0542d5a19083f237d51c2ea47a6f99dd4f/.deps/pex-1.1.1-py2.py3-none-any.whl/pex/resolver.py:107: in merge
                         self._check()
                     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                     
                     self = <pex.resolver._ResolvableSet object at 0x7fde2fd50f50>
                     
                         def _check(self):
                           # Check whether or not the resolvables in this set are satisfiable, raise an exception if not.
                           for name, resolved_packages in self._collapse().items():
                             if not resolved_packages.packages:
                               raise Unsatisfiable('Could not satisfy all requirements for %s:\n    %s' % (
                     >             resolved_packages.resolvable, self._synthesize_parents(name)))
                     E         Unsatisfiable: Could not satisfy all requirements for jake==1.2.3:
                     E             jake==1.2.3