Add test configuration and CLI tests
This commit is contained in:
160
tests/test_analyzers.py
Normal file
160
tests/test_analyzers.py
Normal file
@@ -0,0 +1,160 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user