Add test suite
Some checks failed
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.9) (push) Failing after 27s
CI / test (3.8) (push) Has been cancelled
CI / lint (push) Failing after 8s
CI / typecheck (push) Failing after 7s
CI / build-package (push) Successful in 10s
Some checks failed
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.9) (push) Failing after 27s
CI / test (3.8) (push) Has been cancelled
CI / lint (push) Failing after 8s
CI / typecheck (push) Failing after 7s
CI / build-package (push) Successful in 10s
This commit is contained in:
170
tests/conftest.py
Normal file
170
tests/conftest.py
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
"""Pytest configuration and fixtures for ConfigForge tests."""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import tempfile
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Dict, Any
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_json_config() -> Dict[str, Any]:
|
||||||
|
"""Sample JSON configuration for testing."""
|
||||||
|
return {
|
||||||
|
"database": {
|
||||||
|
"host": "localhost",
|
||||||
|
"port": 5432,
|
||||||
|
"name": "myapp",
|
||||||
|
"ssl": True
|
||||||
|
},
|
||||||
|
"server": {
|
||||||
|
"host": "0.0.0.0",
|
||||||
|
"port": 8080,
|
||||||
|
"debug": False
|
||||||
|
},
|
||||||
|
"logging": {
|
||||||
|
"level": "INFO",
|
||||||
|
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_yaml_config() -> str:
|
||||||
|
"""Sample YAML configuration for testing."""
|
||||||
|
return """database:
|
||||||
|
host: localhost
|
||||||
|
port: 5432
|
||||||
|
name: myapp
|
||||||
|
ssl: true
|
||||||
|
server:
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 8080
|
||||||
|
debug: false
|
||||||
|
logging:
|
||||||
|
level: INFO
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_toml_config() -> str:
|
||||||
|
"""Sample TOML configuration for testing."""
|
||||||
|
return """[database]
|
||||||
|
host = "localhost"
|
||||||
|
port = 5432
|
||||||
|
name = "myapp"
|
||||||
|
ssl = true
|
||||||
|
|
||||||
|
[server]
|
||||||
|
host = "0.0.0.0"
|
||||||
|
port = 8080
|
||||||
|
debug = false
|
||||||
|
|
||||||
|
[logging]
|
||||||
|
level = "INFO"
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_env_config() -> str:
|
||||||
|
"""Sample ENV configuration for testing."""
|
||||||
|
return """DATABASE_HOST=localhost
|
||||||
|
DATABASE_PORT=5432
|
||||||
|
DATABASE_NAME=myapp
|
||||||
|
DATABASE_SSL=true
|
||||||
|
SERVER_HOST=0.0.0.0
|
||||||
|
SERVER_PORT=8080
|
||||||
|
SERVER_DEBUG=false
|
||||||
|
LOGGING_LEVEL=INFO
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_json_schema() -> Dict[str, Any]:
|
||||||
|
"""Sample JSON Schema for validation testing."""
|
||||||
|
return {
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"title": "AppConfig",
|
||||||
|
"type": "object",
|
||||||
|
"required": ["database", "server"],
|
||||||
|
"properties": {
|
||||||
|
"database": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["host", "port", "name"],
|
||||||
|
"properties": {
|
||||||
|
"host": {"type": "string"},
|
||||||
|
"port": {"type": "integer", "minimum": 1, "maximum": 65535},
|
||||||
|
"name": {"type": "string"},
|
||||||
|
"ssl": {"type": "boolean"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"server": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["host", "port"],
|
||||||
|
"properties": {
|
||||||
|
"host": {"type": "string"},
|
||||||
|
"port": {"type": "integer", "minimum": 1, "maximum": 65535},
|
||||||
|
"debug": {"type": "boolean"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logging": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"level": {"type": "string", "enum": ["DEBUG", "INFO", "WARNING", "ERROR"]},
|
||||||
|
"format": {"type": "string"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_config_file(sample_json_config):
|
||||||
|
"""Create a temporary JSON config file."""
|
||||||
|
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
|
||||||
|
json.dump(sample_json_config, f)
|
||||||
|
filepath = f.name
|
||||||
|
yield filepath
|
||||||
|
os.unlink(filepath)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_yaml_config_file(sample_yaml_config):
|
||||||
|
"""Create a temporary YAML config file."""
|
||||||
|
with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', delete=False) as f:
|
||||||
|
f.write(sample_yaml_config)
|
||||||
|
filepath = f.name
|
||||||
|
yield filepath
|
||||||
|
os.unlink(filepath)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_toml_config_file(sample_toml_config):
|
||||||
|
"""Create a temporary TOML config file."""
|
||||||
|
with tempfile.NamedTemporaryFile(mode='w', suffix='.toml', delete=False) as f:
|
||||||
|
f.write(sample_toml_config)
|
||||||
|
filepath = f.name
|
||||||
|
yield filepath
|
||||||
|
os.unlink(filepath)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_env_config_file(sample_env_config):
|
||||||
|
"""Create a temporary ENV config file."""
|
||||||
|
with tempfile.NamedTemporaryFile(mode='w', suffix='.env', delete=False) as f:
|
||||||
|
f.write(sample_env_config)
|
||||||
|
filepath = f.name
|
||||||
|
yield filepath
|
||||||
|
os.unlink(filepath)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_schema_file(sample_json_schema):
|
||||||
|
"""Create a temporary JSON schema file."""
|
||||||
|
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
|
||||||
|
json.dump(sample_json_schema, f)
|
||||||
|
filepath = f.name
|
||||||
|
yield filepath
|
||||||
|
os.unlink(filepath)
|
||||||
Reference in New Issue
Block a user