Add test configuration and CLI tests
Some checks failed
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled

This commit is contained in:
2026-01-29 23:12:45 +00:00
parent b378002a36
commit 6b96b8360b

124
tests/conftest.py Normal file
View File

@@ -0,0 +1,124 @@
"""Pytest configuration and fixtures."""
import pytest
from pathlib import Path
import tempfile
import os
@pytest.fixture
def sample_python_code():
"""Sample Python code with various issues."""
return '''
import os
def dangerous_function(user_input):
password = "secret123"
result = eval(user_input)
cursor.execute("SELECT * FROM users WHERE name = '" + user_input + "'")
try:
do_something()
except:
pass
return 42 * multiplier
AWS_KEY = "AKIAIOSFODNN7EXAMPLE"
def process_items(items):
for i in range(len(items)):
print(items[i])
result = list(list(items))
return result
'''
@pytest.fixture
def sample_javascript_code():
"""Sample JavaScript code with various issues."""
return '''
const password = "secret123";
const AWS_KEY = "AKIAIOSFODNN7EXAMPLE";
function process(userInput) {
const result = eval(userInput);
const query = "SELECT * FROM users WHERE name = " + userInput;
try {
doSomething();
} catch (e) {
// silent catch
}
for (let i = 0; i < items.length; i++) {
console.log(items[i]);
}
}
'''
@pytest.fixture
def sample_typescript_code():
"""Sample TypeScript code with various issues."""
return '''
const apiKey = "AIzaSyDxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const token = "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
async function fetchData(userId: string) {
try {
const result = eval("getData(" + userId + ")");
return result;
} catch {
// empty catch
}
}
const config = {
password: "secret123"
};
'''
@pytest.fixture
def clean_python_code():
"""Sample clean Python code without issues."""
return '''
def calculate_total(items: list[int]) -> int:
"""Calculate the total of all items."""
total = 0
for item in items:
total += item
return total
class Calculator:
"""A simple calculator class."""
DEFAULT_MULTIPLIER = 1
def __init__(self, multiplier: int = DEFAULT_MULTIPLIER):
self.multiplier = multiplier
def multiply(self, value: int) -> int:
"""Multiply the value by the multiplier."""
return value * self.multiplier
'''
@pytest.fixture
def temp_file_with_content():
"""Create a temporary file with given content."""
def _create_temp_file(content: str, suffix: str = ".py") -> Path:
with tempfile.NamedTemporaryFile(mode="w", suffix=suffix, delete=False) as f:
f.write(content)
return Path(f.name)
return _create_temp_file
@pytest.fixture
def temp_directory():
"""Create a temporary directory with test files."""
def _create_temp_dir(files: dict[str, str]) -> Path:
tmpdir = tempfile.mkdtemp()
for filename, content in files.items():
filepath = Path(tmpdir) / filename
filepath.parent.mkdir(parents=True, exist_ok=True)
filepath.write_text(content)
return Path(tmpdir)
return _create_temp_dir