deskctl/CONTRIBUTING.md
Hari 3819a85c47
tests and tooling (#4)
* init openspec

* clean out src, move mod into lib, remove trash

* create tests

* pre-commit hook

* add tests to CI

* update website

* README, CONTRIBUTING and Makefile

* openspec

* archive task

* fix ci order

* fix integration test

* fix validation tests
2026-03-25 19:29:59 -04:00

1.5 KiB

Contributing

Prerequisites

  • Rust toolchain
  • make
  • pre-commit for commit-time hooks
  • pnpm for site formatting checks
  • Linux with xvfb-run for integration tests

Install site dependencies before running site checks:

pnpm --dir site install

Repository Layout

  • src/lib.rs exposes the library target used by integration tests
  • src/main.rs is the thin CLI binary wrapper
  • src/ holds production code and unit tests
  • tests/ holds integration tests
  • tests/support/ holds shared X11 and daemon helpers for integration coverage

Keep integration-only helpers out of src/.

Local Validation

The repo uses one local validation surface through make:

make fmt-check
make lint
make test-unit
make test-integration
make site-format-check
make validate

make validate runs the full Phase 2 validation stack. It requires Linux, xvfb-run, and site dependencies to be installed.

Pre-commit Hooks

Install the hook workflow once:

pre-commit install

Run hooks across the repo on demand:

pre-commit run --all-files

The hook config intentionally stays small:

  • Rust files use default rustfmt
  • Site files reuse the existing site/ Prettier setup
  • Slower checks stay in CI or make validate

Integration Tests

Integration coverage is Linux/X11-only in this phase. The supported local entrypoint is:

make test-integration

That command runs the top-level X11 integration tests under xvfb-run with one test thread so the shared display/session environment stays deterministic.