|
|
- import os
- import unittest
- import shutil
- import sys
- import tempfile
-
- import mock
-
- import elpy.pydocutils
-
-
- class TestGetPydocCompletions(unittest.TestCase):
- def test_should_return_top_level_modules(self):
- modules = elpy.pydocutils.get_pydoc_completions("")
- self.assertIn('sys', modules)
- self.assertIn('json', modules)
-
- def test_should_return_submodules(self):
- modules = elpy.pydocutils.get_pydoc_completions("elpy")
- self.assertIn("elpy.rpc", modules)
- self.assertIn("elpy.server", modules)
- modules = elpy.pydocutils.get_pydoc_completions("os")
- self.assertIn("os.path", modules)
-
- def test_should_find_objects_in_module(self):
- self.assertIn("elpy.tests.test_pydocutils.TestGetPydocCompletions",
- elpy.pydocutils.get_pydoc_completions
- ("elpy.tests.test_pydocutils"))
-
- def test_should_find_attributes_of_objects(self):
- attribs = elpy.pydocutils.get_pydoc_completions(
- "elpy.tests.test_pydocutils.TestGetPydocCompletions")
- self.assertIn("elpy.tests.test_pydocutils.TestGetPydocCompletions."
- "test_should_find_attributes_of_objects",
- attribs)
-
- def test_should_return_none_for_inexisting_module(self):
- self.assertEqual([],
- elpy.pydocutils.get_pydoc_completions
- ("does_not_exist"))
-
- def test_should_work_for_unicode_strings(self):
- self.assertIsNotNone(elpy.pydocutils.get_pydoc_completions
- (u"sys"))
-
- def test_should_find_partial_completions(self):
- self.assertIn("multiprocessing",
- elpy.pydocutils.get_pydoc_completions
- ("multiprocess"))
- self.assertIn("multiprocessing.util",
- elpy.pydocutils.get_pydoc_completions
- ("multiprocessing.ut"))
-
- def test_should_ignore_trailing_dot(self):
- self.assertIn("elpy.pydocutils",
- elpy.pydocutils.get_pydoc_completions
- ("elpy."))
-
-
- class TestGetModules(unittest.TestCase):
- def test_should_return_top_level_modules(self):
- modules = elpy.pydocutils.get_modules()
- self.assertIn('sys', modules)
- self.assertIn('json', modules)
-
- def test_should_return_submodules(self):
- modules = elpy.pydocutils.get_modules("elpy")
- self.assertIn("rpc", modules)
- self.assertIn("server", modules)
-
- @mock.patch.object(elpy.pydocutils, 'safeimport')
- def test_should_catch_import_errors(self, safeimport):
- def raise_function(message):
- raise elpy.pydocutils.ErrorDuringImport(message,
- (None, None, None))
- safeimport.side_effect = raise_function
- self.assertEqual([], elpy.pydocutils.get_modules("foo.bar"))
-
- def test_should_not_fail_for_permission_denied(self):
- tmpdir = tempfile.mkdtemp(prefix="test-elpy-get-modules-")
- sys.path.append(tmpdir)
- os.chmod(tmpdir, 0o000)
- try:
- elpy.pydocutils.get_modules()
- finally:
- os.chmod(tmpdir, 0o755)
- shutil.rmtree(tmpdir)
- sys.path.remove(tmpdir)
|