Add unit tests
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-04 15:00:21 +00:00
parent 58a8856fef
commit 07a8716d5a

133
tests/unit/test_config.py Normal file
View File

@@ -0,0 +1,133 @@
"""Tests for configuration loading."""
import tempfile
from pathlib import Path
import pytest
from depcheck.config import Config, load_config, should_ignore_package, should_ignore_file
from depcheck.models import Severity
class TestConfig:
"""Tests for configuration."""
def test_default_config(self):
"""Test default configuration values."""
config = Config()
assert config.ignore_patterns == []
assert config.ignore_packages == []
assert config.fail_level == Severity.MEDIUM
assert config.output_format == "terminal"
assert config.verbose is False
assert config.quiet is False
assert config.include_dev is True
def test_load_empty_yaml(self):
"""Test loading empty YAML config."""
with tempfile.NamedTemporaryFile(mode="w", suffix=".yaml", delete=False) as f:
f.write("")
f.flush()
config = load_config(Path(f.name))
assert config.ignore_patterns == []
def test_load_config_with_ignore_patterns(self):
"""Test loading config with ignore patterns."""
content = """
ignore_patterns:
- \"test/\"
- \"example/\"
"""
with tempfile.NamedTemporaryFile(mode="w", suffix=".yaml", delete=False) as f:
f.write(content)
f.flush()
config = load_config(Path(f.name))
assert len(config.ignore_patterns) == 2
assert "test/" in config.ignore_patterns
def test_load_config_with_fail_level(self):
"""Test loading config with fail level."""
content = """
fail_level: high
"""
with tempfile.NamedTemporaryFile(mode="w", suffix=".yaml", delete=False) as f:
f.write(content)
f.flush()
config = load_config(Path(f.name))
assert config.fail_level == Severity.HIGH
def test_invalid_fail_level_uses_default(self):
"""Test that invalid fail level uses default."""
content = """
fail_level: invalid
"""
with tempfile.NamedTemporaryFile(mode="w", suffix=".yaml", delete=False) as f:
f.write(content)
f.flush()
config = load_config(Path(f.name))
assert config.fail_level == Severity.MEDIUM
def test_load_config_with_output_settings(self):
"""Test loading config with output settings."""
content = """
output:
format: json
verbose: true
quiet: false
"""
with tempfile.NamedTemporaryFile(mode="w", suffix=".yaml", delete=False) as f:
f.write(content)
f.flush()
config = load_config(Path(f.name))
assert config.output_format == "json"
assert config.verbose is True
assert config.quiet is False
def test_load_config_with_ignore_packages(self):
"""Test loading config with ignored packages."""
content = """
ignore_packages:
- \"@types/*\"
- \"*test*\"
"""
with tempfile.NamedTemporaryFile(mode="w", suffix=".yaml", delete=False) as f:
f.write(content)
f.flush()
config = load_config(Path(f.name))
assert len(config.ignore_packages) == 2
def test_should_ignore_package(self):
"""Test package ignore checking."""
config = Config(ignore_packages=["@types/*", "*test*"])
assert should_ignore_package(config, "@types/node") is True
assert should_ignore_package(config, "test-utils") is True
assert should_ignore_package(config, "express") is False
def test_should_ignore_file(self):
"""Test file ignore checking."""
config = Config(ignore_patterns=["test/", "node_modules/"])
assert should_ignore_file(config, Path("/project/test/file.txt")) is True
assert should_ignore_file(config, Path("/project/node_modules/pkg/file.txt")) is True
assert should_ignore_file(config, Path("/project/src/file.txt")) is False
def test_missing_config_returns_defaults(self):
"""Test that missing config file returns defaults."""
config = load_config(Path("/nonexistent/config.yaml"))
assert config.ignore_patterns == []
assert config.fail_level == Severity.MEDIUM