Files
claude-desktop-debian/.github/CODEOWNERS
Sum Abiut 0217a2c0e1 ci: run BATS test suite on push and PR (#520)
* ci: run BATS test suite on push and PR

The /tests/ directory has 186 BATS tests
(launcher-common, launcher-xrdp-detection, and four
cowork-*.bats files) but no workflow ever invoked `bats`
— the entire suite was effectively inert.

A regression in launcher-common.sh or
cowork-vm-service.js would not fail any check,
including the BATS suite added by PR #395.

Add a standalone tests.yml workflow that:
- installs bats + nodejs
- runs `bats tests/*.bats`
- executes on every PR
- executes on pushes to main

Push triggers are path-filtered to:
- tests/
- scripts/
- .github/workflows/tests.yml

PR triggers remain unfiltered so required-check
behaviour stays predictable.

Kept this standalone rather than extending
test-artifacts.yml so unit tests run in seconds
instead of waiting for full artifact builds.

This can be promoted to a build gate later once
it proves stable in CI.

CODEOWNERS
- adds /.github/workflows/tests.yml under @sabiut
- keeps /tests/cowork-*.bats ownership with @RayCharlizard

This PR only enables CI coverage for existing tests
and does not modify cowork test logic.

* fix(tests): unset XDG_CONFIG_HOME in cowork-bwrap-config setup

The "doctor: reports custom bwrap mounts" and "doctor: warns
about disabled critical mount /usr" tests failed in CI but
passed locally.

Root cause:

- _doctor_check_bwrap_mounts in scripts/doctor.sh resolves
  the config dir via ${XDG_CONFIG_HOME:-$HOME/.config}/Claude
- The test setup() only sandboxes HOME via TEST_TMP
- GitHub Actions runners export XDG_CONFIG_HOME ambient
- Function reads the runner's real config dir, not the test
  fixture, and silently emits no output
- Assertions on /opt/tools, WARN, etc. fail

Surfaced by PR #520 wiring BATS into CI for the first time;
the bug existed before but was hidden by the suite never
running.

Fix: unset XDG_CONFIG_HOME in setup() so the function falls
back to \$HOME/.config (which is sandboxed). Comment in the
file documents why HOME alone is insufficient.

Verified: 186/186 pass with XDG_CONFIG_HOME set ambient
(reproduces CI env).
2026-04-27 11:48:21 +11:00

101 lines
4.1 KiB
Plaintext

# CODEOWNERS — per-subsystem review ownership
#
# Rules match top-to-bottom; the LAST matching rule wins.
# Layout:
# 1. Default owner
# 2. Explicit @aaddrick assignments grouped by logical role
# (listed even where redundant, so the intent is visible to
# future collaborators scanning the file)
# 3. Cowork and Nix overrides at the bottom so they stick
#
# Each listed user must be a repo collaborator (Settings →
# Collaborators) with at least read access, or GitHub silently
# ignores them.
# ---- Default: aaddrick owns anything not explicitly claimed ----
* @aaddrick
# ---- Build orchestration ----
# The top-level dispatcher and shared shell utilities.
/build.sh @aaddrick
/scripts/_common.sh @aaddrick
# ---- Setup (host detection, dependencies, upstream download) ----
/scripts/setup/ @aaddrick
# ---- Electron patches / minified JS ----
# The regex-driven patches applied to the unpacked app.asar, plus
# the frame-fix wrapper and native-binding stubs that ride along.
/scripts/patches/_common.sh @aaddrick
/scripts/patches/app-asar.sh @aaddrick
/scripts/patches/titlebar.sh @aaddrick
/scripts/patches/claude-code.sh @aaddrick
/scripts/frame-fix-wrapper.js @aaddrick
/scripts/claude-native-stub.js @aaddrick
# ---- Linux desktop integration ----
# Tray, menu bar, and quick-window behavior on Wayland/X11.
/scripts/patches/tray.sh @aaddrick
/scripts/patches/quick-window.sh @aaddrick
# ---- Staging (non-cowork) ----
# Electron copy-out, icon processing, locales, SSH helpers.
/scripts/staging/electron.sh @aaddrick
/scripts/staging/icons.sh @aaddrick
/scripts/staging/locales.sh @aaddrick
/scripts/staging/ssh-helpers.sh @aaddrick
# ---- Packaging formats (deb, rpm, AppImage) + runtime launcher ----
/scripts/packaging/ @aaddrick
/scripts/launcher-common.sh @aaddrick
# ---- Distribution & signing ----
# APT/DNF repo publishing, GPG signing, release automation.
# Most of this lives in workflows — gh-pages branch content isn't
# reachable via CODEOWNERS.
/.github/workflows/ @aaddrick
/scripts/resolve-download-url.py @aaddrick
# ---- CI / other GitHub metadata ----
/.github/ @aaddrick
# ---- Docs & style ----
/README.md @aaddrick
/CLAUDE.md @aaddrick
/STYLEGUIDE.md @aaddrick
/docs/ @aaddrick
# ---- Testing & release quality ----
# Integration test suite, artifact validation, flag-parsing tests,
# and the --doctor diagnostic tool. Cowork-specific tests stay with
# @RayCharlizard via the override below.
/tests/ @sabiut
/scripts/doctor.sh @sabiut
/.github/workflows/test-artifacts.yml @sabiut
/.github/workflows/test-flags.yml @sabiut
/.github/workflows/tests.yml @sabiut
# Shared review — either owner can approve.
# TROUBLESHOOTING is mostly the --doctor user-facing guide; lint
# touches everything, so either maintainer can sign off.
/docs/TROUBLESHOOTING.md @aaddrick @sabiut
/.github/workflows/shellcheck.yml @aaddrick @sabiut
#===============================================================================
# Overrides — listed last so their assignments stick against the
# broad globs above (/docs/, /.github/, etc.)
#===============================================================================
# ---- Cowork ----
# Electron-side patching, staging, daemon, and integration tests.
/scripts/patches/cowork.sh @RayCharlizard
/scripts/staging/cowork-resources.sh @RayCharlizard
/scripts/cowork-vm-service.js @RayCharlizard
/tests/cowork-*.bats @RayCharlizard
/docs/cowork-*.md @RayCharlizard
# ---- Nix ----
/flake.nix @typedrat
/flake.lock @typedrat
/nix/ @typedrat