Bug fix: Search only for files as candidates

pull/10346/head
Alejandro Guirao 11 years ago
parent affb66416f
commit b8cf131375

@ -176,7 +176,8 @@ class PluginLoader(object):
found = None found = None
for path in [p for p in self._get_paths() if p not in self._searched_paths]: for path in [p for p in self._get_paths() if p not in self._searched_paths]:
if os.path.isdir(path): if os.path.isdir(path):
for potential_file in os.listdir(path): for potential_file in (f for f in os.listdir(path)
if os.path.isfile(os.path.join(path, f))):
for suffix in suffixes: for suffix in suffixes:
if potential_file.endswith(suffix): if potential_file.endswith(suffix):
full_path = os.path.join(path, potential_file) full_path = os.path.join(path, potential_file)

@ -11,8 +11,11 @@ import passlib.hash
import string import string
import StringIO import StringIO
import copy import copy
import tempfile
import shutil
from nose.plugins.skip import SkipTest from nose.plugins.skip import SkipTest
from mock import patch
import ansible.utils import ansible.utils
import ansible.errors import ansible.errors
@ -914,3 +917,29 @@ class TestUtils(unittest.TestCase):
for (role, result) in tests: for (role, result) in tests:
self.assertEqual(ansible.utils.role_yaml_parse(role), result) self.assertEqual(ansible.utils.role_yaml_parse(role), result)
@patch('ansible.utils.plugins.module_finder._get_paths')
def test_find_plugin(self, mock_get_paths):
tmp_path = tempfile.mkdtemp()
mock_get_paths.return_value = [tmp_path,]
right_module_1 = 'module.py'
right_module_2 = 'module_without_extension'
wrong_module_1 = 'folder'
wrong_module_2 = 'inexistent'
path_right_module_1 = os.path.join(tmp_path, right_module_1)
path_right_module_2 = os.path.join(tmp_path, right_module_2)
path_wrong_module_1 = os.path.join(tmp_path, wrong_module_1)
open(path_right_module_1, 'w').close()
open(path_right_module_2, 'w').close()
os.mkdir(path_wrong_module_1)
self.assertEqual(ansible.utils.plugins.module_finder.find_plugin(right_module_1),
path_right_module_1)
self.assertEqual(ansible.utils.plugins.module_finder.find_plugin(right_module_2),
path_right_module_2)
self.assertEqual(ansible.utils.plugins.module_finder.find_plugin(wrong_module_1),
None)
self.assertEqual(ansible.utils.plugins.module_finder.find_plugin(wrong_module_2),
None)
shutil.rmtree(tmp_path)

Loading…
Cancel
Save