In order to know which files need to be cleaned up, a file.directory state
looks at its requirements.
Previously, it only looked at the name attribute of the required state and
supposed it was the name of the file to keep within this directory. It's
not completely right, as a requirement can also be made against a state ID,
in which case the 'name' attribute of the required state then have to be
used.
Fix#8646
If an NPM package was specified as a
url (i.e. git://github.com/Unitech/pm2), the state would crash with an
IndexError. Assume that not every package installed globally is
specified with a URL.
Example failing state:
kvsio:
npm.installed:
- name: git+ssh://github.com/dougluce/kvs.io.git
```
07:39:05,449 [salt.minion :1178][ERROR ] A command in 'pip.list' had a problem: Traceback (most recent call last):
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/bin/pip", line 9, in <module>
load_entry_point('pip==1.3.1', 'console_scripts', 'pip')()
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pkg_resources/__init__.py", line 546, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pkg_resources/__init__.py", line 2666, in load_entry_point
return ep.load()
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pkg_resources/__init__.py", line 2339, in load
return self.resolve()
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pkg_resources/__init__.py", line 2345, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pip/__init__.py", line 13, in <module>
from pip.commands import commands, get_similar_commands, get_summaries
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pip/commands/__init__.py", line 6, in <module>
from pip.commands.bundle import BundleCommand
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pip/commands/bundle.py", line 5, in <module>
from pip.commands.install import InstallCommand
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pip/commands/install.py", line 5, in <module>
from pip.req import InstallRequirement, RequirementSet, parse_requirements
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pip/req/__init__.py", line 3, in <module>
from .req_install import InstallRequirement
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pip/req/req_install.py", line 20, in <module>
import pip.wheel
File "/tmp/salt-tests-tmpdir/6833-pip-upgrade-pip/lib/python2.6/site-packages/pip/wheel.py", line 23, in <module>
from pip.exceptions import InvalidWheelFilename, UnsupportedWheel
ImportError: cannot import name InvalidWheelFilename
```
- present func: should not require key/fingerprint.
In normal mode, key AND fingerprint can be omitted but
test mode requires them, so fix the test mode to behave same
way.
- absent function: return correct ret when change suppose to be made.
- refactor a bit.