from pathlib import Path ROOT = Path(__file__).resolve().parents[2] def test_docker_compose_reads_real_env_file_not_example(): compose_content = (ROOT / "docker-compose.yml").read_text(encoding="utf-8") assert "- .env\n" in compose_content assert "- .env.example" not in compose_content def test_docker_compose_uses_fixed_project_name_for_stable_port_owner(): compose_content = (ROOT / "docker-compose.yml").read_text(encoding="utf-8") assert "name: hot-comments-tool" in compose_content assert '"8000:8000"' in compose_content or "- 8000:8000" in compose_content def test_docker_compose_mounts_data_directory_for_sqlite_wal_files(): compose_content = (ROOT / "docker-compose.yml").read_text(encoding="utf-8") assert "./data:/app/data" in compose_content assert "app.db:/app/data/app.db" not in compose_content def test_real_env_file_is_gitignored(): gitignore_lines = (ROOT / ".gitignore").read_text(encoding="utf-8").splitlines() assert ".env" in gitignore_lines def test_dockerfile_does_not_bootstrap_uv_from_runtime_pip(): dockerfile_content = (ROOT / "Dockerfile").read_text(encoding="utf-8") assert "pip install --no-cache-dir uv" not in dockerfile_content assert "uv pip install" not in dockerfile_content def test_dockerfile_installs_project_without_build_isolation(): dockerfile_content = (ROOT / "Dockerfile").read_text(encoding="utf-8") assert "COPY requirements.txt ./" in dockerfile_content assert "pip install --no-cache-dir -r requirements.txt" in dockerfile_content assert "pip install --no-cache-dir ." not in dockerfile_content assert "pip install --no-cache-dir --no-build-isolation ." not in dockerfile_content