87 lines
2.9 KiB
Python
87 lines
2.9 KiB
Python
from pathlib import Path
|
|
import tempfile
|
|
import pytest
|
|
|
|
from config_auditor.generate import ConfigGenerator
|
|
|
|
|
|
class TestConfigGenerator:
|
|
def test_detect_node_project(self):
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
(Path(tmpdir) / "package.json").write_text('{"name": "test"}')
|
|
|
|
generator = ConfigGenerator()
|
|
result = generator.detect_project_type(Path(tmpdir))
|
|
|
|
assert result == "node"
|
|
|
|
def test_detect_python_project(self):
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
(Path(tmpdir) / "pyproject.toml").write_text('[tool.poetry]\nname = "test"')
|
|
|
|
generator = ConfigGenerator()
|
|
result = generator.detect_project_type(Path(tmpdir))
|
|
|
|
assert result == "python"
|
|
|
|
def test_detect_typescript_project(self):
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
(Path(tmpdir) / "tsconfig.json").write_text('{"compilerOptions": {}}')
|
|
|
|
generator = ConfigGenerator()
|
|
result = generator.detect_project_type(Path(tmpdir))
|
|
|
|
assert result == "typescript"
|
|
|
|
def test_detect_from_source_files(self):
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
src = Path(tmpdir) / "src"
|
|
src.mkdir()
|
|
(src / "main.ts").write_text("const x = 1;")
|
|
|
|
generator = ConfigGenerator()
|
|
result = generator.detect_project_type(Path(tmpdir))
|
|
|
|
assert result == "typescript"
|
|
|
|
def test_generate_from_node_template(self):
|
|
generator = ConfigGenerator()
|
|
config = generator.generate_from_template("node", Path("/tmp"))
|
|
|
|
assert "name" in config
|
|
assert "version" in config
|
|
assert "scripts" in config
|
|
assert "test" in config["scripts"]
|
|
|
|
def test_generate_from_python_template(self):
|
|
generator = ConfigGenerator()
|
|
config = generator.generate_from_template("python", Path("/tmp"))
|
|
|
|
assert "tool" in config
|
|
assert "poetry" in config["tool"]
|
|
|
|
def test_generate_from_typescript_template(self):
|
|
generator = ConfigGenerator()
|
|
config = generator.generate_from_template("typescript", Path("/tmp"))
|
|
|
|
assert "compilerOptions" in config
|
|
assert config["compilerOptions"]["strict"] is True
|
|
|
|
def test_analyze_project(self):
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
(Path(tmpdir) / "package.json").write_text('{"name": "test"}')
|
|
(Path(tmpdir) / "index.js").write_text("console.log('test');")
|
|
|
|
generator = ConfigGenerator()
|
|
result = generator.analyze_project(Path(tmpdir))
|
|
|
|
assert result["type"] == "node"
|
|
assert "package.json" in result["files"]
|
|
assert "index.js" in result["files"]
|
|
|
|
def test_unknown_template_raises_error(self):
|
|
generator = ConfigGenerator()
|
|
|
|
with pytest.raises(ValueError):
|
|
generator.generate_from_template("unknown", Path("/tmp"))
|