Coverage for tests / unit / config / test_config_cwd_cache.py: 100%
34 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Tests for cwd-aware pyproject.toml caching (#734)."""
3from __future__ import annotations
5from pathlib import Path
7import pytest
8from assertpy import assert_that
10from lintro.utils.config import clear_pyproject_cache, load_pyproject
13def test_load_pyproject_returns_different_data_per_cwd(
14 tmp_path: Path,
15 monkeypatch: pytest.MonkeyPatch,
16) -> None:
17 """load_pyproject returns different data after chdir to a new project.
19 Args:
20 tmp_path: Temporary directory for two project roots.
21 monkeypatch: Pytest monkeypatch for chdir.
22 """
23 clear_pyproject_cache()
25 # Project A
26 dir_a = tmp_path / "project_a"
27 dir_a.mkdir()
28 (dir_a / "pyproject.toml").write_text(
29 '[project]\nname = "alpha"\n',
30 )
32 # Project B
33 dir_b = tmp_path / "project_b"
34 dir_b.mkdir()
35 (dir_b / "pyproject.toml").write_text(
36 '[project]\nname = "beta"\n',
37 )
39 monkeypatch.chdir(dir_a)
40 data_a = load_pyproject()
41 assert_that(data_a["project"]["name"]).is_equal_to("alpha")
43 # Switching cwd should pick up the other pyproject
44 clear_pyproject_cache()
45 monkeypatch.chdir(dir_b)
46 data_b = load_pyproject()
47 assert_that(data_b["project"]["name"]).is_equal_to("beta")
50def test_load_pyproject_cwd_aware_without_cache_clear(
51 tmp_path: Path,
52 monkeypatch: pytest.MonkeyPatch,
53) -> None:
54 """load_pyproject returns correct data per cwd without explicit cache clear.
56 Args:
57 tmp_path: Temporary directory for two project roots.
58 monkeypatch: Pytest monkeypatch for chdir.
59 """
60 clear_pyproject_cache()
62 dir_a = tmp_path / "project_a"
63 dir_a.mkdir()
64 (dir_a / "pyproject.toml").write_text('[project]\nname = "alpha"\n')
66 dir_b = tmp_path / "project_b"
67 dir_b.mkdir()
68 (dir_b / "pyproject.toml").write_text('[project]\nname = "beta"\n')
70 monkeypatch.chdir(dir_a)
71 assert_that(load_pyproject()["project"]["name"]).is_equal_to("alpha")
73 # No cache clear — cwd change alone should return different data
74 monkeypatch.chdir(dir_b)
75 assert_that(load_pyproject()["project"]["name"]).is_equal_to("beta")
77 # Return to dir_a — should still get alpha from cache
78 monkeypatch.chdir(dir_a)
79 assert_that(load_pyproject()["project"]["name"]).is_equal_to("alpha")