Exemplo n.º 1
0
 def test_find_occurrences_and_class_hierarchies(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('class A(object):\n    def f():\n        pass\n'
                'class B(A):\n    def f():\n        pass\n')
     offset = mod1.read().rindex('f')
     result1 = find_occurrences(self.project, mod1, offset)
     result2 = find_occurrences(self.project, mod1,
                                offset, in_hierarchy=True)
     self.assertEquals(1, len(result1))
     self.assertEquals(2, len(result2))
Exemplo n.º 2
0
 def test_find_occurrences_and_class_hierarchies(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('class A(object):\n    def f():\n        pass\n'
                'class B(A):\n    def f():\n        pass\n')
     offset = mod1.read().rindex('f')
     result1 = find_occurrences(self.project, mod1, offset)
     result2 = find_occurrences(self.project, mod1,
                                offset, in_hierarchy=True)
     self.assertEquals(1, len(result1))
     self.assertEquals(2, len(result2))
Exemplo n.º 3
0
 def test_finding_occurrences_matching_when_unsure(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('class C(object):\n    def a_func(self):\n        pass\n'
                'def f(arg):\n    arg.a_func()\n')
     result = find_occurrences(
         self.project, mod1, mod1.read().index('a_func'), unsure=True)
     self.assertEquals(2, len(result))
Exemplo n.º 4
0
 def test_finding_occurrences_matching_when_unsure(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('class C(object):\n    def a_func(self):\n        pass\n'
                'def f(arg):\n    arg.a_func()\n')
     result = find_occurrences(
         self.project, mod1, mod1.read().index('a_func'), unsure=True)
     self.assertEquals(2, len(result))
Exemplo n.º 5
0
    def run(self):
        self.error = None
        self.foundList = []
        try:
            resource = self.ropeProject.get_file(self.path)
            result = find_occurrences(self.ropeProject, resource, self.offset)
            self.itemsDict = {}
            if len(result) == 0:
                self.error = "No usages found."
            else:
                for i in result:
                    line = i.lineno
                    path = i.resource.path
                    if path in self.itemsDict:
                        self.itemsDict[path].append(line)
                    else:
                        self.itemsDict[path] = [line]
        except Exception as err:
            exc_type, exc_value, exc_traceback = sys.exc_info()
            logging.error(
                repr(
                    traceback.format_exception(exc_type, exc_value,
                                               exc_traceback)))

            self.error = str(err)
Exemplo n.º 6
0
 def test_finding_occurrences(self):
     mod = testutils.create_module(self.project, 'mod')
     mod.write('a_var = 1\n')
     result = find_occurrences(self.project, mod, 1)
     self.assertEquals(mod, result[0].resource)
     self.assertEquals(0, result[0].offset)
     self.assertEquals(False, result[0].unsure)
Exemplo n.º 7
0
 def test_finding_occurrences(self):
     mod = testutils.create_module(self.project, "mod")
     mod.write("a_var = 1\n")
     result = find_occurrences(self.project, mod, 1)
     self.assertEqual(mod, result[0].resource)
     self.assertEqual(0, result[0].offset)
     self.assertEqual(False, result[0].unsure)
Exemplo n.º 8
0
 def test_find_occurrences_resources_parameter(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write('a_var = 1\n')
     mod2.write('import mod1\nmy_var = mod1.a_var')
     result = find_occurrences(self.project, mod1, 1, resources=[mod1])
     self.assertEquals(1, len(result))
     self.assertEquals((mod1, 0), (result[0].resource, result[0].offset))
Exemplo n.º 9
0
 def test_find_occurrences_and_class_hierarchies(self):
     mod1 = testutils.create_module(self.project, "mod1")
     mod1.write(
         dedent("""\
             class A(object):
                 def f():
                     pass
             class B(A):
                 def f():
                     pass
         """)
     )
     offset = mod1.read().rindex("f")
     result1 = find_occurrences(self.project, mod1, offset)
     result2 = find_occurrences(self.project, mod1, offset, in_hierarchy=True)
     self.assertEqual(1, len(result1))
     self.assertEqual(2, len(result2))
Exemplo n.º 10
0
 def test_find_occurrences_resources_parameter(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write('a_var = 1\n')
     mod2.write('import mod1\nmy_var = mod1.a_var')
     result = find_occurrences(self.project, mod1, 1, resources=[mod1])
     self.assertEquals(1, len(result))
     self.assertEquals((mod1, 0), (result[0].resource, result[0].offset))
Exemplo n.º 11
0
 def test_finding_occurrences_in_more_than_one_module(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write('a_var = 1\n')
     mod2.write('import mod1\nmy_var = mod1.a_var')
     result = find_occurrences(self.project, mod1, 1)
     self.assertEquals(2, len(result))
     modules = (result[0].resource, result[1].resource)
     self.assertTrue(mod1 in modules and mod2 in modules)
Exemplo n.º 12
0
 def test_finding_occurrences_in_more_than_one_module(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write('a_var = 1\n')
     mod2.write('import mod1\nmy_var = mod1.a_var')
     result = find_occurrences(self.project, mod1, 1)
     self.assertEquals(2, len(result))
     modules = (result[0].resource, result[1].resource)
     self.assertTrue(mod1 in modules and mod2 in modules)
Exemplo n.º 13
0
 def test_find_occurrences_resources_parameter(self):
     mod1 = testutils.create_module(self.project, "mod1")
     mod2 = testutils.create_module(self.project, "mod2")
     mod1.write("a_var = 1\n")
     mod2.write(
         dedent("""\
             import mod1
             my_var = mod1.a_var"""
         )
     )
     result = find_occurrences(self.project, mod1, 1, resources=[mod1])
     self.assertEqual(1, len(result))
     self.assertEqual((mod1, 0), (result[0].resource, result[0].offset))
Exemplo n.º 14
0
def getOccurencesForFilePosition(fileName, position, throwException):
    " Provides a list of the token at position occurences "
    result = []
    try:
        GlobalData().validateRopeProject()
        ropeProject = GlobalData().getRopeProject(fileName)
        resource = path_to_resource(ropeProject, fileName)

        result = find_occurrences(ropeProject, resource, position, True)
    except:
        if throwException:
            raise
    return _buildOccurrencesImplementationsResult(result)
Exemplo n.º 15
0
def getOccurencesForFilePosition( fileName, position, throwException ):
    " Provides a list of the token at position occurences "
    result = []
    try:
        GlobalData().validateRopeProject()
        ropeProject = GlobalData().getRopeProject( fileName )
        resource = path_to_resource( ropeProject, fileName )

        result = find_occurrences( ropeProject, resource, position, True )
    except:
        if throwException:
            raise
    return _buildOccurrencesImplementationsResult( result )
Exemplo n.º 16
0
 def test_finding_occurrences_in_more_than_one_module(self):
     mod1 = testutils.create_module(self.project, "mod1")
     mod2 = testutils.create_module(self.project, "mod2")
     mod1.write("a_var = 1\n")
     mod2.write(
         dedent("""\
             import mod1
             my_var = mod1.a_var"""
         )
     )
     result = find_occurrences(self.project, mod1, 1)
     self.assertEqual(2, len(result))
     modules = (result[0].resource, result[1].resource)
     self.assertTrue(mod1 in modules and mod2 in modules)
Exemplo n.º 17
0
 def test_finding_occurrences_matching_when_unsure(self):
     mod1 = testutils.create_module(self.project, "mod1")
     mod1.write(
         dedent("""\
             class C(object):
                 def a_func(self):
                     pass
             def f(arg):
                 arg.a_func()
         """)
     )
     result = find_occurrences(
         self.project, mod1, mod1.read().index("a_func"), unsure=True
     )
     self.assertEqual(2, len(result))
Exemplo n.º 18
0
def find_it():
    """ Find occurrences. """

    with RopeContext() as ctx:
        _, offset = get_assist_params()
        try:
            occurrences = findit.find_occurrences(
                ctx.project, ctx.resource, offset)
        except exceptions.BadIdentifierError:
            occurrences = []

    lst = []
    for oc in occurrences:
        lst.append(dict(
            filename=oc.resource.path,
            lnum=oc.lineno,
        ))
    vim.command('let l:output = %s' % json.dumps(lst))
Exemplo n.º 19
0
def find_it():
    """ Find occurrences. """
    with RopeContext() as ctx:
        _, offset = env.get_offset_params()
        try:
            occurrences = findit.find_occurrences(
                ctx.project, ctx.resource, offset)
        except exceptions.BadIdentifierError:
            occurrences = []

    lst = []
    for oc in occurrences:
        lst.append(dict(
            filename=oc.resource.path,
            text=env.lines[oc.lineno - 1] if oc.resource.real_path == env.curbuf.name else "", # noqa
            lnum=oc.lineno,
        ))
    env.let('loclist._loclist', lst)
Exemplo n.º 20
0
 def run(self):
     self.error = None
     self.foundList = []
     try:
         resource = self.ropeProject.get_file(self.path)
         result = find_occurrences(self.ropeProject, resource, self.offset)
         self.itemsDict = {}
         if len(result) == 0:
             self.error = "No usages found."
         else:
             for i in result:
                 line = i.lineno
                 path = i.resource.path
                 if path in self.itemsDict:
                     self.itemsDict[path].append(line)
                 else:
                     self.itemsDict[path] = [line]
     except Exception as err:
         self.error = str(err)
Exemplo n.º 21
0
def find_it():
    """ Find occurrences. """
    with RopeContext() as ctx:
        _, offset = env.get_offset_params()
        try:
            occurrences = findit.find_occurrences(
                ctx.project, ctx.resource, offset)
        except exceptions.BadIdentifierError:
            occurrences = []

    lst = []
    for oc in occurrences:
        lst.append(dict(
            filename=oc.resource.path,
            text=env.lines[oc.lineno - 1] if oc.resource.real_path == env.curbuf.name else "", # noqa
            lnum=oc.lineno,
            type=''
        ))
    env.run('g:PymodeLocList.current().extend', lst)
Exemplo n.º 22
0
 def run(self):
     self.error = None
     self.foundList = []
     try:
         resource = self.ropeProject.get_file(self.path)
         result = find_occurrences(self.ropeProject, resource, self.offset)
         self.itemsDict = {}
         if len(result) == 0:
             self.error = "No usages found."
         else:
             for i in result:
                 line = i.lineno
                 path = i.resource.path
                 if path in self.itemsDict:
                     self.itemsDict[path].append(line)
                 else:
                     self.itemsDict[path] = [line]
     except Exception as err:
         self.error = str(err)
Exemplo n.º 23
0
def getOccurencesForEditor(fileName, editor, throwException):
    " Provides a list of the current token occurences "

    temporaryName = ""
    result = []
    nameToSearch = ""
    try:
        temporaryName = _switchFileAndBuffer(fileName, editor)
        GlobalData().validateRopeProject()
        ropeProject = GlobalData().getRopeProject(fileName)
        position = editor.currentPosition()
        resource = path_to_resource(ropeProject, fileName)

        nameToSearch = worder.get_name_at(resource, position)
        result = find_occurrences(ropeProject, resource, position, True)
    except:
        if throwException:
            raise

    _restoreOriginalFile(fileName, temporaryName, editor)
    return nameToSearch, _buildOccurrencesImplementationsResult(result)
Exemplo n.º 24
0
def getOccurencesForEditor( fileName, editor, throwException ):
    " Provides a list of the current token occurences "

    temporaryName = ""
    result = []
    nameToSearch = ""
    try:
        temporaryName = _switchFileAndBuffer( fileName, editor )
        GlobalData().validateRopeProject()
        ropeProject = GlobalData().getRopeProject( fileName )
        position = editor.currentPosition()
        resource = path_to_resource( ropeProject, fileName )

        nameToSearch = worder.get_name_at( resource, position )
        result = find_occurrences( ropeProject, resource, position, True )
    except:
        if throwException:
            raise

    _restoreOriginalFile( fileName, temporaryName, editor )
    return nameToSearch, _buildOccurrencesImplementationsResult( result )
Exemplo n.º 25
0
    def run(self):
        self.error = None
        self.foundList = []
        try:
            resource = self.ropeProject.get_file(self.path)
            result = find_occurrences(self.ropeProject, resource, self.offset)
            self.itemsDict = {}
            if len(result) == 0:
                self.error = "No usages found."
            else:
                for i in result:
                    line = i.lineno
                    path = i.resource.path
                    if path in self.itemsDict:
                        self.itemsDict[path].append(line)
                    else:
                        self.itemsDict[path] = [line]
        except Exception as err:
            exc_type, exc_value, exc_traceback = sys.exc_info()
            logging.error(repr(traceback.format_exception(exc_type, exc_value,
                         exc_traceback)))

            self.error = str(err)
Exemplo n.º 26
0
def find_usages(_, main_project, other_projects, file_path, offset):
    """
    Find usages of symbol under cursor.
    """
    try:
        occurrences = []
        if other_projects:
            for path in [main_project] + other_projects:
                prj = Project(path, ropefolder=api.project.FOLDER,
                              fscommands=FileSystemCommands())
                prj.validate()
                mod = libutils.path_to_resource(prj, file_path)
                occurrences += find_occurrences(
                    prj, mod, offset, unsure=False, in_hierarchy=True)
                prj.close()
        else:
            prj = Project(main_project, ropefolder=api.project.FOLDER,
                          fscommands=FileSystemCommands())
            prj.validate()
            mod = libutils.path_to_resource(prj, file_path)
            occurrences = find_occurrences(prj, mod, offset, unsure=False,
                                           in_hierarchy=True)
        # transform results to a serialisable list of usages that is ready
        # to use by the find_results widget.
        occurrences_map = {}
        for location in occurrences:
            path = location.resource.real_path
            lineno = location.lineno - 1
            # convert file region to line region
            content = location.resource.read()
            offset = location.offset
            char = content[offset]
            while char != '\n':  # find start of line
                offset -= 1
                char = content[offset]
            # update offsets
            start = location.offset - offset - 1
            end = location.region[1] - offset - 1
            line_text = content.splitlines()[lineno]
            data = (lineno, line_text, [(start, end)])
            if path not in occurrences_map:
                occurrences_map[path] = [data]
            else:
                occurrences_map[path].append(data)
        results = []
        for key, value in occurrences_map.items():
            results.append((key, value))
        results = sorted(results, key=lambda x: x[0])
        return results
    except RopeError as e:
        error = RefactoringError()
        error.exc = str(e)
        error.traceback = traceback.format_exc()
        error.critical = False
        return error
    except Exception as e:
        error = RefactoringError()
        error.exc = str(e)
        error.traceback = traceback.format_exc()
        error.critical = True
        return error
Exemplo n.º 27
0
def find_usages(_, main_project, other_projects, file_path, offset):
    """
    Find usages of symbol under cursor.
    """
    try:
        occurrences = []
        if other_projects:
            for path in [main_project] + other_projects:
                prj = Project(path,
                              ropefolder=api.project.FOLDER,
                              fscommands=FileSystemCommands())
                prj.validate()
                mod = libutils.path_to_resource(prj, file_path)
                occurrences += find_occurrences(prj,
                                                mod,
                                                offset,
                                                unsure=False,
                                                in_hierarchy=True)
                prj.close()
        else:
            prj = Project(main_project,
                          ropefolder=api.project.FOLDER,
                          fscommands=FileSystemCommands())
            prj.validate()
            mod = libutils.path_to_resource(prj, file_path)
            occurrences = find_occurrences(prj,
                                           mod,
                                           offset,
                                           unsure=False,
                                           in_hierarchy=True)
        # transform results to a serialisable list of usages that is ready
        # to use by the find_results widget.
        occurrences_map = {}
        for location in occurrences:
            path = location.resource.real_path
            lineno = location.lineno - 1
            # convert file region to line region
            content = location.resource.read()
            offset = location.offset
            char = content[offset]
            while char != '\n':  # find start of line
                offset -= 1
                char = content[offset]
            # update offsets
            start = location.offset - offset - 1
            end = location.region[1] - offset - 1
            line_text = content.splitlines()[lineno]
            data = (lineno, line_text, [(start, end)])
            if path not in occurrences_map:
                occurrences_map[path] = [data]
            else:
                occurrences_map[path].append(data)
        results = []
        for key, value in occurrences_map.items():
            results.append((key, value))
        results = sorted(results, key=lambda x: x[0])
        return results
    except RopeError as e:
        error = RefactoringError()
        error.exc = str(e)
        error.traceback = traceback.format_exc()
        error.critical = False
        return error
    except Exception as e:
        error = RefactoringError()
        error.exc = str(e)
        error.traceback = traceback.format_exc()
        error.critical = True
        return error