64 tests covering: auth/setup and the CSRF gate, the "owner adds their own data, anyone linked can mute it" permission pattern shared across calendar-select/tasks-source/whiteboard-source, migration correctness (fresh install, idempotent re-run, expected columns), battery estimate outlier rejection, calendar_feed's fetch/merge/partial-failure handling, webdav_client's fetch/list-directory, the whiteboard force-refresh throttle bypass and browse endpoint, and render-size invariants across calendar views/orientations. No DB/HTTP fixtures need Docker, Node, or a real Immich/CalDAV/WebDAV server -- a fresh temp SQLite file plus a couple of small local HTTP servers as test doubles cover it all. Table data is wiped and reseeded between tests rather than relying on SQLAlchemy's transaction-rollback isolation pattern, which needs a pysqlite event-listener workaround app/db.py's engine doesn't have and has no reason to gain just for tests. Wired into .gitea/workflows/server-docker-build.yml as its own job that build-and-push now depends on, so a failing suite blocks the image push rather than just running alongside it for show.
38 lines
1.1 KiB
Plaintext
38 lines
1.1 KiB
Plaintext
# ESP-IDF firmware build output
|
|
firmware/build/
|
|
firmware/sdkconfig
|
|
firmware/sdkconfig.old
|
|
firmware/managed_components/
|
|
firmware/dependencies.lock
|
|
# build_for_board.sh's per-board build dir + generated sdkconfig
|
|
# (sdkconfig.xiao itself, the committed override fragment, is NOT
|
|
# ignored -- only the *_local generated file and its build output).
|
|
firmware/build_xiao/
|
|
firmware/sdkconfig.xiao_local
|
|
firmware/sdkconfig.xiao_local.old
|
|
|
|
# Python server
|
|
server/__pycache__/
|
|
server/**/__pycache__/
|
|
server/.venv/
|
|
server/*.egg-info/
|
|
server/data/
|
|
server/.pytest_cache/
|
|
# render-service/ (whiteboard mode's Node sidecar) -- installed fresh
|
|
# inside the Docker image, never committed. No package-lock.json exists
|
|
# yet either (no Node/npm available in this project's dev environment to
|
|
# generate one -- see render-service/README.md); if one's added later, do
|
|
# NOT ignore it, lockfiles belong in git.
|
|
server/render-service/node_modules/
|
|
# Real deploy config, copied from docker-compose.yml.example -- holds the
|
|
# Immich API key, must never be committed.
|
|
server/docker-compose.yml
|
|
.env
|
|
|
|
# Editor / OS cruft
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
.DS_Store
|
|
.claude/
|