コード例 #1
0
ファイル: test_scope_plugin.py プロジェクト: Kuniwak/vint
    def test_reference_reachability_with_referenced_all(self):
        ast = self.create_ast(Fixtures.REFERENCED_ALL)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_undeclared = {
            'g:explicit_global_var': False,
            'b:buffer_local_var': False,
            'w:window_local_var': False,
            't:tab_local_var': False,
            's:script_local_var': False,
            'implicit_global_var': False,
            'g:implicit_global_var': False,
            '$ENV_VAR': False,
            '@"': False,
            '&opt_var': False,
            'v:count': False,
            'count': False,
            'g:': False,
            'b:': False,
            'w:': False,
            't:': False,
            'v:': False,
            'v:key': False,
            'v:val': False,
            'filter': False,
            'g:dict': True,
        }

        self.assertVariablesUndeclared(expected_variables_undeclared,
                                       scope_plugin,
                                       ast)
コード例 #2
0
ファイル: test_scope_plugin.py プロジェクト: Kuniwak/vint
    def test_reference_reachability_with_referenced_all_params(self):
        ast = self.create_ast(Fixtures.REFERENCED_ALL_PARAMS)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_unused = {
            'a:': False,
            'l:': False,
            'a:0': False,
            'a:000': False,

            'a:param': False,

            'a:param1': False,
            'a:param2': False,

            'a:param_var': False,

            'a:param_with_range': False,
            'a:firstline': False,
            'a:lastline': False,
        }

        self.assertVariablesUndeclared(expected_variables_unused,
                                       scope_plugin,
                                       ast)
コード例 #3
0
ファイル: test_scope_plugin.py プロジェクト: w0rp/vint
    def test_reference_reachability_with_referenced_all(self):
        ast = self.create_ast(Fixtures.REFERENCED_ALL)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_undeclared = {
            'g:explicit_global_var': False,
            'b:buffer_local_var': False,
            'w:window_local_var': False,
            't:tab_local_var': False,
            's:script_local_var': False,
            'implicit_global_var': False,
            'g:implicit_global_var': False,
            '$ENV_VAR': False,
            '@"': False,
            '&opt_var': False,
            'v:count': False,
            'count': False,
            'g:': False,
            'b:': False,
            'w:': False,
            't:': False,
            'v:': False,
            'v:key': False,
            'v:val': False,
            'filter': False,
            'g:dict': True,
        }

        self.assertVariablesUndeclared(expected_variables_undeclared,
                                       scope_plugin, ast)
コード例 #4
0
ファイル: test_scope_plugin.py プロジェクト: mattn/vint
    def assertProcessing(self, file_path, expected_scope_tree):
        parser = Parser()
        ast = parser.parse_file(file_path)

        plugin = ScopePlugin()
        plugin.process(ast)

        self.assertScopeTree(ast['vint_scope_tree'], expected_scope_tree)
コード例 #5
0
ファイル: test_scope_plugin.py プロジェクト: mattn/vint
    def assertProcessing(self, file_path, expected_scope_tree):
        parser = Parser()
        ast = parser.parse_file(file_path)

        plugin = ScopePlugin()
        plugin.process(ast)

        self.assertScopeTree(ast['vint_scope_tree'], expected_scope_tree)
コード例 #6
0
ファイル: test_scope_plugin.py プロジェクト: w0rp/vint
    def test_reference_reachability_with_unreferenced_var(self):
        ast = self.create_ast(Fixtures.UNREFERENCED_VAR)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_undeclared = {
            's:implicit_global_var': True,
        }

        self.assertVariablesUndeclared(expected_variables_undeclared,
                                       scope_plugin, ast)
コード例 #7
0
ファイル: test_scope_plugin.py プロジェクト: Kuniwak/vint
    def test_reference_reachability_with_unreferenced_var(self):
        ast = self.create_ast(Fixtures.UNREFERENCED_VAR)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_undeclared = {
            's:implicit_global_var': True,
        }

        self.assertVariablesUndeclared(expected_variables_undeclared,
                                       scope_plugin,
                                       ast)
コード例 #8
0
ファイル: test_scope_plugin.py プロジェクト: w0rp/vint
    def test_reference_reachability_with_unanalyzable(self):
        ast = self.create_ast(Fixtures.UNANALYZABLE)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_undeclared = {
            'list_slice': True,
            'dict': True,
        }

        self.assertVariablesUndeclared(expected_variables_undeclared,
                                       scope_plugin, ast)
コード例 #9
0
ファイル: test_scope_plugin.py プロジェクト: Kuniwak/vint
    def test_reference_reachability_with_unanalyzable(self):
        ast = self.create_ast(Fixtures.UNANALYZABLE)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_undeclared = {
            'list_slice': True,
            'dict': True,
        }

        self.assertVariablesUndeclared(expected_variables_undeclared,
                                       scope_plugin,
                                       ast)
コード例 #10
0
ファイル: test_scope_plugin.py プロジェクト: w0rp/vint
    def test_declarative_identifiers_referenced_with_referenced_all_func(self):
        ast = self.create_ast(Fixtures.REFERENCED_ALL_FUNC)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_unused = {
            'g:ExplicitGlobalFunc': False,
            's:ScriptLocalFunc': False,
            'ImplicitGlobalFunc': False,
        }

        self.assertVariablesUnused(expected_variables_unused, scope_plugin,
                                   ast)
コード例 #11
0
ファイル: test_scope_plugin.py プロジェクト: w0rp/vint
    def test_reference_reachability_with_referenced_all_funcs_in_func(self):
        ast = self.create_ast(Fixtures.REFERENCED_ALL_FUNC_IN_FUNC)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_undeclared = {
            'g:ExplicitGlobalFunc': False,
            'ImplicitGlobalFunc': False,
            's:ExplicitScriptLocalFunc': False,
        }

        self.assertVariablesUndeclared(expected_variables_undeclared,
                                       scope_plugin, ast)
コード例 #12
0
ファイル: test_scope_plugin.py プロジェクト: Kuniwak/vint
    def test_declarative_identifiers_referenced_with_referenced_all_func(self):
        ast = self.create_ast(Fixtures.REFERENCED_ALL_FUNC)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_unused = {
            'g:ExplicitGlobalFunc': False,
            's:ScriptLocalFunc': False,
            'ImplicitGlobalFunc': False,
        }

        self.assertVariablesUnused(expected_variables_unused,
                                   scope_plugin,
                                   ast)
コード例 #13
0
ファイル: test_scope_plugin.py プロジェクト: Kuniwak/vint
    def test_reference_reachability_with_referenced_all_funcs_in_func(self):
        ast = self.create_ast(Fixtures.REFERENCED_ALL_FUNC_IN_FUNC)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_undeclared = {
            'g:ExplicitGlobalFunc': False,
            'ImplicitGlobalFunc': False,
            's:ExplicitScriptLocalFunc': False,
        }

        self.assertVariablesUndeclared(expected_variables_undeclared,
                                       scope_plugin,
                                       ast)
コード例 #14
0
ファイル: test_scope_plugin.py プロジェクト: w0rp/vint
    def test_declarative_identifiers_referenced_with_unreferenced_func_in_func(
            self):
        ast = self.create_ast(Fixtures.UNREFERENCED_FUNC_IN_FUNC)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_unused = {
            'FuncContext': True,
            'g:ExplicitGlobalFunc': True,
            'ImplicitGlobalFunc': True,
            's:ExplicitScriptLocalFunc': True,
        }

        self.assertVariablesUnused(expected_variables_unused, scope_plugin,
                                   ast)
コード例 #15
0
ファイル: test_scope_plugin.py プロジェクト: Kuniwak/vint
    def test_declarative_identifiers_referenced_with_unreferenced_func_in_func(self):
        ast = self.create_ast(Fixtures.UNREFERENCED_FUNC_IN_FUNC)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_unused = {
            'FuncContext': True,
            'g:ExplicitGlobalFunc': True,
            'ImplicitGlobalFunc': True,
            's:ExplicitScriptLocalFunc': True,
        }

        self.assertVariablesUnused(expected_variables_unused,
                                   scope_plugin,
                                   ast)
コード例 #16
0
ファイル: test_scope_plugin.py プロジェクト: w0rp/vint
    def test_reference_reachability_with_unreferenced_params(self):
        ast = self.create_ast(Fixtures.UNREFERENCED_PARAMS)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_undeclared = {
            'param': True,
            'a:1': True,
            'a:firstline': True,
            'a:lastline': True,
            'a:18': True,
            'a:19': True,
            'a:20': True,
        }

        self.assertVariablesUndeclared(expected_variables_undeclared,
                                       scope_plugin, ast)
コード例 #17
0
ファイル: test_scope_plugin.py プロジェクト: mattn/vint
    def test_process_with_builtin(self):
        parser = Parser()
        ast = parser.parse_file(Fixtures['BUILTIN'])

        plugin = ScopePlugin()
        plugin.process(ast)

        expected_builtin_flags = {
            'abs': True,
            'sin': True,
            'strlen': True,
            'g:MyFunction': False,
        }

        # Keep identifier name that traverser visited
        identifiers_checking_map = {
            'abs': False,
            'sin': False,
            'strlen': False,
            'g:MyFunction': False,
        }

        def test_identifier(node):
            if NodeType(node['type']) is not NodeType.IDENTIFIER:
                return

            identifier = node

            # We focus to non-definition identifier
            if identifier[ScopePlugin.DEFINITION_IDENTIFIER_FLAG_KEY]:
                return

            identifier_name = identifier['value']
            identifiers_checking_map[identifier_name] = True

            is_builtin_identifier = identifier[
                ScopePlugin.BUILTIN_IDENTIFIER_FLAG_KEY]
            expected_builtin_flag = expected_builtin_flags[identifier_name]

            self.assertEqual(is_builtin_identifier, expected_builtin_flag)

        traverse(ast, on_enter=test_identifier)
        self.assertTrue(all(identifiers_checking_map.values()))
コード例 #18
0
ファイル: test_scope_plugin.py プロジェクト: mattn/vint
    def test_process_with_builtin(self):
        parser = Parser()
        ast = parser.parse_file(Fixtures['BUILTIN'])

        plugin = ScopePlugin()
        plugin.process(ast)

        expected_builtin_flags = {
            'abs': True,
            'sin': True,
            'strlen': True,
            'g:MyFunction': False,
        }

        # Keep identifier name that traverser visited
        identifiers_checking_map = {
            'abs': False,
            'sin': False,
            'strlen': False,
            'g:MyFunction': False,
        }

        def test_identifier(node):
            if NodeType(node['type']) is not NodeType.IDENTIFIER:
                return

            identifier = node

            # We focus to non-definition identifier
            if identifier[ScopePlugin.DEFINITION_IDENTIFIER_FLAG_KEY]:
                return

            identifier_name = identifier['value']
            identifiers_checking_map[identifier_name] = True

            is_builtin_identifier = identifier[ScopePlugin.BUILTIN_IDENTIFIER_FLAG_KEY]
            expected_builtin_flag = expected_builtin_flags[identifier_name]

            self.assertEqual(is_builtin_identifier, expected_builtin_flag)

        traverse(ast, on_enter=test_identifier)
        self.assertTrue(all(identifiers_checking_map.values()))
コード例 #19
0
ファイル: test_scope_plugin.py プロジェクト: Kuniwak/vint
    def test_reference_reachability_with_unreferenced_params(self):
        ast = self.create_ast(Fixtures.UNREFERENCED_PARAMS)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_undeclared = {
            'param': True,
            'a:1': True,
            'a:firstline': True,
            'a:lastline': True,

            'a:18': True,
            'a:19': True,
            'a:20': True,
        }

        self.assertVariablesUndeclared(expected_variables_undeclared,
                                       scope_plugin,
                                       ast)
コード例 #20
0
ファイル: test_scope_plugin.py プロジェクト: w0rp/vint
    def test_declarative_identifiers_referenced_with_referenced_all(self):
        ast = self.create_ast(Fixtures.REFERENCED_ALL)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_unused = {
            'g:explicit_global_var': False,
            'b:buffer_local_var': False,
            'w:window_local_var': False,
            't:tab_local_var': False,
            's:script_local_var': False,
            'implicit_global_var': False,
            '$ENV_VAR': False,
            '@"': False,
            '&opt_var': False,
            'v:count': False,
        }

        self.assertVariablesUnused(expected_variables_unused, scope_plugin,
                                   ast)
コード例 #21
0
ファイル: test_scope_plugin.py プロジェクト: Kuniwak/vint
    def test_declarative_identifiers_referenced_with_referenced_all(self):
        ast = self.create_ast(Fixtures.REFERENCED_ALL)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_unused = {
            'g:explicit_global_var': False,
            'b:buffer_local_var': False,
            'w:window_local_var': False,
            't:tab_local_var': False,
            's:script_local_var': False,
            'implicit_global_var': False,
            '$ENV_VAR': False,
            '@"': False,
            '&opt_var': False,
            'v:count': False,
        }

        self.assertVariablesUnused(expected_variables_unused,
                                   scope_plugin,
                                   ast)
コード例 #22
0
ファイル: test_scope_plugin.py プロジェクト: w0rp/vint
    def test_reference_reachability_with_referenced_all_params(self):
        ast = self.create_ast(Fixtures.REFERENCED_ALL_PARAMS)

        scope_plugin = ScopePlugin()
        scope_plugin.process(ast)

        expected_variables_unused = {
            'a:': False,
            'l:': False,
            'a:0': False,
            'a:000': False,
            'a:param': False,
            'a:param1': False,
            'a:param2': False,
            'a:param_var': False,
            'a:param_with_range': False,
            'a:firstline': False,
            'a:lastline': False,
        }

        self.assertVariablesUndeclared(expected_variables_unused, scope_plugin,
                                       ast)