Videre
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
import sys
|
||||
import subprocess
|
||||
import types as pytypes
|
||||
import os.path
|
||||
|
||||
import numpy as np
|
||||
|
||||
import builtins
|
||||
from numba.core import types
|
||||
from numba.tests.support import TestCase, temp_directory
|
||||
from numba.misc.help.inspector import inspect_function, inspect_module
|
||||
|
||||
|
||||
class TestInspector(TestCase):
|
||||
def check_function_descriptor(self, info, must_be_defined=False):
|
||||
self.assertIsInstance(info, dict)
|
||||
self.assertIn('numba_type', info)
|
||||
numba_type = info['numba_type']
|
||||
if numba_type is None:
|
||||
self.assertFalse(must_be_defined)
|
||||
else:
|
||||
self.assertIsInstance(numba_type, types.Type)
|
||||
self.assertIn('explained', info)
|
||||
self.assertIsInstance(info['explained'], str)
|
||||
self.assertIn('source_infos', info)
|
||||
self.assertIsInstance(info['source_infos'], dict)
|
||||
|
||||
def test_inspect_function_on_range(self):
|
||||
info = inspect_function(range)
|
||||
self.check_function_descriptor(info, must_be_defined=True)
|
||||
|
||||
def test_inspect_function_on_np_all(self):
|
||||
info = inspect_function(np.all)
|
||||
self.check_function_descriptor(info, must_be_defined=True)
|
||||
source_infos = info['source_infos']
|
||||
self.assertGreater(len(source_infos), 0)
|
||||
c = 0
|
||||
for srcinfo in source_infos.values():
|
||||
self.assertIsInstance(srcinfo['kind'], str)
|
||||
self.assertIsInstance(srcinfo['name'], str)
|
||||
self.assertIsInstance(srcinfo['sig'], str)
|
||||
self.assertIsInstance(srcinfo['filename'], str)
|
||||
self.assertIsInstance(srcinfo['lines'], tuple)
|
||||
self.assertIn('docstring', srcinfo)
|
||||
c += 1
|
||||
self.assertEqual(c, len(source_infos))
|
||||
|
||||
def test_inspect_module(self):
|
||||
c = 0
|
||||
for it in inspect_module(builtins):
|
||||
self.assertIsInstance(it['module'], pytypes.ModuleType)
|
||||
self.assertIsInstance(it['name'], str)
|
||||
self.assertTrue(callable(it['obj']))
|
||||
self.check_function_descriptor(it)
|
||||
c += 1
|
||||
self.assertGreater(c, 0)
|
||||
|
||||
def test_inspect_cli(self):
|
||||
# Try CLI on math module
|
||||
cmdbase = [sys.executable, '-m', 'numba.misc.help.inspector']
|
||||
|
||||
dirpath = temp_directory('{}.{}'.format(__name__,
|
||||
self.__class__.__name__))
|
||||
filename = os.path.join(dirpath, 'out')
|
||||
|
||||
# Try default format "html"
|
||||
expected_file = filename + '.html'
|
||||
cmds = cmdbase + ['--file', filename, 'math']
|
||||
# File shouldn't exist yet
|
||||
self.assertFalse(os.path.isfile(expected_file))
|
||||
# Run CLI
|
||||
subprocess.check_output(cmds)
|
||||
# File should exist now
|
||||
self.assertTrue(os.path.isfile(expected_file))
|
||||
|
||||
# Try changing the format to "rst"
|
||||
cmds = cmdbase + ['--file', filename, '--format', 'rst', 'math']
|
||||
expected_file = filename + '.rst'
|
||||
# File shouldn't exist yet
|
||||
self.assertFalse(os.path.isfile(expected_file))
|
||||
# Run CLI
|
||||
subprocess.check_output(cmds)
|
||||
# File should exist now
|
||||
self.assertTrue(os.path.isfile(expected_file))
|
||||
|
||||
# Try unsupported format
|
||||
cmds = cmdbase + ['--file', filename, '--format', 'foo', 'math']
|
||||
# Run CLI
|
||||
with self.assertRaises(subprocess.CalledProcessError) as raises:
|
||||
subprocess.check_output(cmds, stderr=subprocess.STDOUT)
|
||||
self.assertIn("\'foo\' is not supported",
|
||||
raises.exception.stdout.decode())
|
||||
Reference in New Issue
Block a user