Files
ai-code-refactor-cli/tests/test_analyzers.py
7000pctAUTO cd63600e06
Some checks failed
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
Add test configuration and CLI tests
2026-01-29 23:12:45 +00:00

161 lines
3.9 KiB
Python

"""Tests for language analyzers and parsers."""
import pytest
from pathlib import Path
from src.analyzers import PythonParser, JavaScriptParser, TypeScriptParser, ParserFactory
class TestPythonParser:
"""Tests for Python parser."""
def setup_method(self):
self.parser = PythonParser()
def test_parses_simple_function(self):
code = """
def hello():
print("Hello")
"""
tree = self.parser.parse(code)
assert tree is not None
assert tree.root_node is not None
def test_extracts_functions(self):
code = """
def foo():
pass
def bar():
pass
"""
tree = self.parser.parse(code)
functions = self.parser.get_functions(tree.root_node)
assert len(functions) == 2
def test_extracts_calls(self):
code = """
foo()
bar()
"""
tree = self.parser.parse(code)
calls = self.parser.get_calls(tree.root_node)
assert len(calls) == 2
def test_extracts_strings(self):
code = '''
name = "hello"
message = 'world'
'''
tree = self.parser.parse(code)
strings = self.parser.get_strings(tree.root_node)
assert len(strings) >= 2
def test_language_name(self):
assert self.parser.language_name == "python"
class TestJavaScriptParser:
"""Tests for JavaScript parser."""
def setup_method(self):
self.parser = JavaScriptParser()
def test_parses_simple_function(self):
code = """
function hello() {
console.log("Hello");
}
"""
tree = self.parser.parse(code)
assert tree is not None
assert tree.root_node is not None
def test_extracts_functions(self):
code = """
function foo() {}
function bar() {}
"""
tree = self.parser.parse(code)
functions = self.parser.get_functions(tree.root_node)
assert len(functions) == 2
def test_extracts_calls(self):
code = """
foo();
bar();
"""
tree = self.parser.parse(code)
calls = self.parser.get_calls(tree.root_node)
assert len(calls) == 2
def test_language_name(self):
assert self.parser.language_name == "javascript"
class TestTypeScriptParser:
"""Tests for TypeScript parser."""
def setup_method(self):
self.parser = TypeScriptParser()
def test_parses_simple_function(self):
code = """
function hello(): void {
console.log("Hello");
}
"""
tree = self.parser.parse(code)
assert tree is not None
assert tree.root_node is not None
def test_extracts_functions(self):
code = """
function foo(): void {}
function bar(): void {}
"""
tree = self.parser.parse(code)
functions = self.parser.get_functions(tree.root_node)
assert len(functions) == 2
def test_extracts_calls(self):
code = """
foo();
bar();
"""
tree = self.parser.parse(code)
calls = self.parser.get_calls(tree.root_node)
assert len(calls) == 2
def test_language_name(self):
assert self.parser.language_name == "typescript"
class TestParserFactory:
"""Tests for parser factory."""
def test_get_python_parser(self):
parser = ParserFactory.get_parser("python")
assert parser is not None
assert isinstance(parser, PythonParser)
def test_get_javascript_parser(self):
parser = ParserFactory.get_parser("javascript")
assert parser is not None
assert isinstance(parser, JavaScriptParser)
def test_get_typescript_parser(self):
parser = ParserFactory.get_parser("typescript")
assert parser is not None
assert isinstance(parser, TypeScriptParser)
def test_get_unknown_parser(self):
parser = ParserFactory.get_parser("unknown")
assert parser is None
def test_supported_languages(self):
languages = ParserFactory.supported_languages()
assert "python" in languages
assert "javascript" in languages
assert "typescript" in languages