Commit Graph
3 Commits
Author SHA1 Message Date
jcabillot ef3ec3ba54 test: pytest suite (31 tests) + lazy config validation + CI pytest job
Lint / hadolint (pull_request) Successful in 28s
CI Shared Jobs / hadolint (pull_request) Successful in 28s
CI Shared Jobs / build-test (pull_request) Successful in 2m33s
CI Shared Jobs / pytest (pull_request) Successful in 2m57s
PR Checks / ci (pull_request) Successful in 3m26s
- src/server.py: CALDAV_DATA_PATH validation moved from import-time to
  _validate_startup_config(), called on __main__ or MCP_ICS_VALIDATE_ON_IMPORT=1.
  Module is now importable in tests without env setup.
- tests/: Radicale fixture tree (VCALENDAR/VADDRESSBOOK, hidden dirs, corrupt
  props, bad ics), covers discover_calendars, parse_ics_files, component_to_dt,
  format_dt, format_component (exclude/birthday filters, VEVENT vs VTODO shape),
  get_events_in_range (RRULE expansion, cross-calendar aggregation, sort),
  get_agenda (default +7d end, error dict, flag forwarding), /health endpoint,
  _validate_startup_config. 31 tests, <2s.
- .gitea/workflows/_ci-common.yaml: new pytest job running the test suite
  inside the built CI image (prod requirements).
- pkg/Dockerfile: COPY tests/
2026-10-09 00:06:27 +00:00
OpenCode Cabillot 155178c665 ci: smoke test = compileall (server.py raises on import without CALDAV_DATA_PATH)
CI Shared Jobs / hadolint (pull_request) Successful in 41s
CI Shared Jobs / build-test (pull_request) Successful in 3m38s
PR Checks / ci (pull_request) Successful in 4m40s
2026-10-08 20:40:10 +00:00
OpenCode Cabillot b71e470511 ci: align pipeline on web/mydl pattern
CI Shared Jobs / hadolint (pull_request) Successful in 3m43s
CI Shared Jobs / build-test (pull_request) Failing after 4m10s
PR Checks / ci (pull_request) Failing after 4m20s
Split the monolithic docker-build/release/test workflows into the shared
_ci-common.yaml + trigger-specific files used on web/mydl:

- pr.yaml       -> PR checks (hadolint + build smoke test)
- main.yaml     -> CI + local build + git semver tag (PAT, triggers tag.yaml)
- tag.yaml      -> CI + build/push :vX.Y.Z and :vX.Y.Z-latest (sole Docker push)
- cron.yaml     -> nightly rebuild of :vX.Y.Z-latest
- _ci-common.yaml -> hadolint + build-test with docker smoke and GHA cache

Docker pushes to :latest on every merge are replaced by versioned,
tested tags. The tag job uses SA_TOKEN_ACTION_PUSH_TAGS (a PAT) so the
tag push actually triggers tag.yaml - GITHUB_TOKEN would not.
2026-10-08 20:29:23 +00:00