gazet / tests /test_config.py
Daniel Wiesmann
Add ruff.toml and fix lint errors (imports, type hints, formatting)
ad8201c
Raw
History Blame Contribute Delete
3.77 kB
"""Tests for gazet.config — data path resolution and environment overrides."""
import os
from pathlib import Path
from gazet import config
class TestPreferNormalized:
def test_prefers_normalized_when_exists(self, tmp_path, monkeypatch):
monkeypatch.setenv("GAZET_USE_NORMALIZED_DATA", "1")
norm_dir = tmp_path / "normalized"
norm_dir.mkdir()
(norm_dir / "test.parquet").touch()
orig = tmp_path / "original.parquet"
orig.touch()
result = config._prefer_normalized(norm_dir / "test.parquet", orig)
assert result == norm_dir / "test.parquet"
def test_falls_back_to_original_when_normalized_missing(self, tmp_path):
norm = tmp_path / "normalized.parquet" # doesn't exist
orig = tmp_path / "original.parquet"
orig.touch()
result = config._prefer_normalized(norm, orig)
assert result == orig
def test_wildcard_normalized_when_glob_matches(self, tmp_path, monkeypatch):
monkeypatch.setenv("GAZET_USE_NORMALIZED_DATA", "1")
norm_dir = tmp_path / "normalized"
norm_dir.mkdir()
(norm_dir / "data.parquet").touch()
orig = tmp_path / "original.parquet"
orig.touch()
result = config._prefer_normalized(norm_dir / "*.parquet", orig)
assert result == norm_dir / "*.parquet"
def test_wildcard_falls_back_when_no_match(self, tmp_path):
norm_dir = tmp_path / "empty"
norm_dir.mkdir()
orig = tmp_path / "original.parquet"
orig.touch()
result = config._prefer_normalized(norm_dir / "*.parquet", orig)
assert result == orig
def test_respects_use_normalized_off(self, tmp_path, monkeypatch):
monkeypatch.setenv("GAZET_USE_NORMALIZED_DATA", "0")
norm_dir = tmp_path / "normalized"
norm_dir.mkdir()
(norm_dir / "test.parquet").touch()
orig = tmp_path / "original.parquet"
orig.touch()
result = config._prefer_normalized(norm_dir / "test.parquet", orig)
# Should fall back because GAZET_USE_NORMALIZED_DATA is "0"
assert result == orig
class TestDataDir:
def test_data_dir_resolves(self):
# _DATA_DIR should be set (either from env or relative to this file)
assert isinstance(config._DATA_DIR, Path)
assert config._DATA_DIR.exists()
def test_divisions_path_is_set(self):
assert config.DIVISIONS_AREA_PATH
assert "divisions_area" in config.DIVISIONS_AREA_PATH
def test_natural_earth_path_is_set(self):
assert config.NATURAL_EARTH_PATH
assert "natural_earth" in config.NATURAL_EARTH_PATH
class TestSchemaInfo:
def test_schema_info_mentions_divisions_area(self):
assert "divisions_area" in config.SCHEMA_INFO
def test_schema_info_mentions_natural_earth(self):
assert "natural_earth" in config.SCHEMA_INFO
def test_schema_info_mentions_st_asgeojson(self):
assert "ST_AsGeoJSON" in config.SCHEMA_INFO
def test_schema_info_mentions_geometry(self):
assert "geometry" in config.SCHEMA_INFO
class TestLlamaConfig:
def test_llama_server_url_default(self):
assert config.LLAMA_SERVER_URL == "http://localhost:9000"
def test_llama_server_url_env(self, monkeypatch):
monkeypatch.setenv("LLAMA_SERVER_URL", "http://remote:8080")
# Reimport to pick up env var — config is module-level, so we
# need to check the env var directly since module is already loaded.
assert os.environ["LLAMA_SERVER_URL"] == "http://remote:8080"
def test_llama_max_tokens_default(self):
assert config.LLAMA_MAX_TOKENS == 2048
def test_llama_temperature_default(self):
assert config.LLAMA_TEMPERATURE == 0.0