| ''' |
| @author Fabio Zadrozny |
| ''' |
| import sys |
| |
| try: |
| import __builtin__ #@UnusedImport |
| BUILTIN_MOD = '__builtin__' |
| except ImportError: |
| BUILTIN_MOD = 'builtins' |
| |
| |
| if sys.platform.find('java') == -1: |
| |
| HAS_WX = False |
| |
| import unittest |
| import _pydev_imports_tipper |
| import inspect |
| |
| class Test(unittest.TestCase): |
| |
| def p(self, t): |
| for a in t: |
| sys.stdout.write('%s\n' % (a,)) |
| |
| def testImports3(self): |
| tip = _pydev_imports_tipper.GenerateTip('os') |
| ret = self.assertIn('path', tip) |
| self.assertEquals('', ret[2]) |
| |
| def testImports2(self): |
| try: |
| tip = _pydev_imports_tipper.GenerateTip('OpenGL.GLUT') |
| self.assertIn('glutDisplayFunc', tip) |
| self.assertIn('glutInitDisplayMode', tip) |
| except ImportError: |
| pass |
| |
| def testImports4(self): |
| try: |
| tip = _pydev_imports_tipper.GenerateTip('mx.DateTime.mxDateTime.mxDateTime') |
| self.assertIn('now', tip) |
| except ImportError: |
| pass |
| |
| def testImports5(self): |
| tip = _pydev_imports_tipper.GenerateTip('%s.list' % BUILTIN_MOD) |
| s = self.assertIn('sort', tip) |
| self.CheckArgs( |
| s, |
| '(cmp=None, key=None, reverse=False)', |
| '(self, object cmp, object key, bool reverse)', |
| '(self, cmp: object, key: object, reverse: bool)', |
| '(key=None, reverse=False)', |
| ) |
| |
| def testImports2a(self): |
| tips = _pydev_imports_tipper.GenerateTip('%s.RuntimeError' % BUILTIN_MOD) |
| self.assertIn('__doc__', tips) |
| |
| def testImports2b(self): |
| try: |
| file |
| except: |
| pass |
| else: |
| tips = _pydev_imports_tipper.GenerateTip('%s' % BUILTIN_MOD) |
| t = self.assertIn('file' , tips) |
| self.assert_('->' in t[1].strip() or 'file' in t[1]) |
| |
| def testImports2c(self): |
| try: |
| file # file is not available on py 3 |
| except: |
| pass |
| else: |
| tips = _pydev_imports_tipper.GenerateTip('%s.file' % BUILTIN_MOD) |
| t = self.assertIn('readlines' , tips) |
| self.assert_('->' in t[1] or 'sizehint' in t[1]) |
| |
| def testImports(self): |
| ''' |
| You can print_ the results to check... |
| ''' |
| if HAS_WX: |
| tip = _pydev_imports_tipper.GenerateTip('wxPython.wx') |
| self.assertIn('wxApp' , tip) |
| |
| tip = _pydev_imports_tipper.GenerateTip('wxPython.wx.wxApp') |
| |
| try: |
| tip = _pydev_imports_tipper.GenerateTip('qt') |
| self.assertIn('QWidget' , tip) |
| self.assertIn('QDialog' , tip) |
| |
| tip = _pydev_imports_tipper.GenerateTip('qt.QWidget') |
| self.assertIn('rect' , tip) |
| self.assertIn('rect' , tip) |
| self.assertIn('AltButton' , tip) |
| |
| tip = _pydev_imports_tipper.GenerateTip('qt.QWidget.AltButton') |
| self.assertIn('__xor__' , tip) |
| |
| tip = _pydev_imports_tipper.GenerateTip('qt.QWidget.AltButton.__xor__') |
| self.assertIn('__class__' , tip) |
| except ImportError: |
| pass |
| |
| tip = _pydev_imports_tipper.GenerateTip(BUILTIN_MOD) |
| # for t in tip[1]: |
| # print_ t |
| self.assertIn('object' , tip) |
| self.assertIn('tuple' , tip) |
| self.assertIn('list' , tip) |
| self.assertIn('RuntimeError' , tip) |
| self.assertIn('RuntimeWarning' , tip) |
| |
| # Remove cmp as it's not available on py 3 |
| #t = self.assertIn('cmp' , tip) |
| #self.CheckArgs(t, '(x, y)', '(object x, object y)', '(x: object, y: object)') #args |
| |
| t = self.assertIn('isinstance' , tip) |
| self.CheckArgs(t, '(object, class_or_type_or_tuple)', '(object o, type typeinfo)', '(o: object, typeinfo: type)') #args |
| |
| t = self.assertIn('compile' , tip) |
| self.CheckArgs(t, '(source, filename, mode)', '()', '(o: object, name: str, val: object)') #args |
| |
| t = self.assertIn('setattr' , tip) |
| self.CheckArgs(t, '(object, name, value)', '(object o, str name, object val)', '(o: object, name: str, val: object)') #args |
| |
| try: |
| import compiler |
| compiler_module = 'compiler' |
| except ImportError: |
| try: |
| import ast |
| compiler_module = 'ast' |
| except ImportError: |
| compiler_module = None |
| |
| if compiler_module is not None: #Not available in iron python |
| tip = _pydev_imports_tipper.GenerateTip(compiler_module) |
| if compiler_module == 'compiler': |
| self.assertArgs('parse', '(buf, mode)', tip) |
| self.assertArgs('walk', '(tree, visitor, walker, verbose)', tip) |
| self.assertIn('parseFile' , tip) |
| else: |
| self.assertArgs('parse', '(source, filename, mode)', tip) |
| self.assertArgs('walk', '(node)', tip) |
| self.assertIn('parse' , tip) |
| |
| |
| def CheckArgs(self, t, *expected): |
| for x in expected: |
| if x == t[2]: |
| return |
| self.fail('Found: %s. Expected: %s' % (t[2], expected)) |
| |
| |
| def assertArgs(self, tok, args, tips): |
| for a in tips[1]: |
| if tok == a[0]: |
| self.assertEquals(args, a[2]) |
| return |
| raise AssertionError('%s not in %s', tok, tips) |
| |
| def assertIn(self, tok, tips): |
| for a in tips[1]: |
| if tok == a[0]: |
| return a |
| raise AssertionError('%s not in %s' % (tok, tips)) |
| |
| |
| def testSearch(self): |
| s = _pydev_imports_tipper.Search('inspect.ismodule') |
| (f, line, col), foundAs = s |
| self.assert_(line > 0) |
| |
| |
| def testDotNetLibraries(self): |
| if sys.platform == 'cli': |
| tip = _pydev_imports_tipper.GenerateTip('System.Drawing') |
| self.assertIn('Brushes' , tip) |
| |
| tip = _pydev_imports_tipper.GenerateTip('System.Drawing.Brushes') |
| self.assertIn('Aqua' , tip) |
| |
| |
| def testInspect(self): |
| |
| class C(object): |
| def metA(self, a, b): |
| pass |
| |
| obj = C.metA |
| if inspect.ismethod (obj): |
| pass |
| # print_ obj.im_func |
| # print_ inspect.getargspec(obj.im_func) |
| |
| |
| def suite(): |
| s = unittest.TestSuite() |
| s.addTest(Test("testImports5")) |
| unittest.TextTestRunner(verbosity=2).run(s) |
| |
| |
| if __name__ == '__main__': |
| if sys.platform.find('java') == -1: |
| # suite() |
| unittest.main() |
| else: |
| sys.stdout.write('Not running python tests in platform: %s\n' % (sys.platform,)) |
| |