fix(tests): make the dockerignore lint follow the repository lints

tests/lint/repository/test_dockerignore.py from #1384 computes its own
PROJECT_ROOT through parents[3] and reads files with Path.read_text, so
test_project_root_import and test_no_uncached_file_reads fail on main
(found by the store-i18n quality gate after its main merge). It now
imports PROJECT_ROOT from the package and reads through
utils.cache.files.read_text, like its neighbours; its three checks are
unchanged.

Both lints fail with main's version of the file and pass with this
one; the test itself still passes.

| 🎯 Fix | 💥 Break | 💸 Cost | ⏱️ Time | 🛡️ Security | 🏆 Score | Gate |
| --- | --- | --- | --- | --- | --- | --- |
| 95 % | 1 % | – | – | ~100 % | 94 | ⏳ score passes, gate.py not run (store-i18n gate holds the slot) |

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
kevinveenbirkenbachandClaude Opus 5.5 committed 2026-11-05 17:10:08 +00:00
1 parent e2a4ecc15d
commit 5caa064345
1 file changed
+8 -6
+8 -6
View File
@@ -1,27 +1,29 @@
import re
import unittest
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parents[3]
from utils.cache.files import read_text
from . import PROJECT_ROOT
NESTED_CHECKOUTS = (".claude/worktrees/", ".worktrees/")
class TestDockerignore(unittest.TestCase):
def test_dockerignore_is_the_gitignore(self) -> None:
self.assertEqual(
(PROJECT_ROOT / ".gitignore").read_text(),
(PROJECT_ROOT / ".dockerignore").read_text(),
read_text(str(PROJECT_ROOT / ".gitignore")),
read_text(str(PROJECT_ROOT / ".dockerignore")),
"Run 'make fix-dockerignore': .dockerignore must be a copy of .gitignore.",
)
def test_nested_checkouts_stay_out_of_the_build_context(self) -> None:
lines = (PROJECT_ROOT / ".dockerignore").read_text().splitlines()
lines = read_text(str(PROJECT_ROOT / ".dockerignore")).splitlines()
for entry in NESTED_CHECKOUTS:
with self.subTest(entry=entry):
self.assertIn(entry, lines)
def test_compose_up_regenerates_the_dockerignore(self) -> None:
makefile = (PROJECT_ROOT / "Makefile").read_text()
makefile = read_text(str(PROJECT_ROOT / "Makefile"))
match = re.search(r"^compose-up:(.*)$", makefile, re.MULTILINE)
self.assertIsNotNone(match, "Makefile has no compose-up target")
self.assertIn("fix-dockerignore", match.group(1).split())