Skip to content

test: move shared-module tests out of tests/claude-code/ into tests/shared/ #186

Description

@efenocchi

Context

tests/claude-code/ is currently the de-facto catch-all for tests of non-agent-specific src/ modules. The directory name is historical and misleading: a contributor looking for, say, deeplake-api coverage shouldn't have to guess that "claude-code" means "default bucket for everything shared."

PR #183 introduced tests/shared/ as the correct destination for new shared-module tests and moved standalone-embed-client.test.ts there as a first step. This issue tracks moving the rest.

Why now

  • The naming actively misleads new contributors.
  • Code-coverage reports group test files by directory; everything currently looks "claude-code coverage" when half of it is shared infra.
  • Per-agent test dirs (tests/codex/, tests/cursor/, tests/hermes/, tests/openclaw/, tests/pi/) already work the way the convention implies.

Out of scope for PR #183

This is a large mechanical rename touching ~30 files plus CI/IDE/coverage config. It deserves its own PR, not a drive-by inside an embeddings PR.

Files to move (snapshot at feat/openclaw-embed-producer-178)

Tests of src/ modules that have no claude-code specificity:

auth / api / config:

  • auth-creds.test.ts
  • auth-login-dispatch.test.ts
  • auth.test.ts
  • config.test.ts
  • debug.test.ts
  • deeplake-api-balance-exhausted.test.ts
  • deeplake-api-retry.test.ts
  • deeplake-api.test.ts

embeddings (all of src/embeddings/*):

  • embedding-sql.test.ts
  • embeddings-bundle-scan.test.ts
  • embeddings-client.test.ts
  • embeddings-daemon.test.ts
  • embeddings-disable.test.ts
  • embeddings-nomic.test.ts
  • embeddings-schema.test.ts
  • embeddings-self-heal.test.ts

grep / search:

  • grep-core.test.ts
  • grep-direct.test.ts
  • grep-interceptor.test.ts

mine-local / skillify:

  • mine-local-helpers.test.ts
  • mine-local-orchestrator.test.ts
  • local-manifest.test.ts
  • local-source.test.ts

notifications:

  • notifications-coverage.test.ts
  • notifications-org-stats-source.test.ts
  • notifications-primary-banner.test.ts
  • notifications-queue-lock.test.ts
  • notifications-transcript-parser.test.ts
  • notifications-usage-tracker.test.ts
  • notifications.test.ts

other shared:

  • bash-command-compiler.test.ts
  • deeplake-fs.test.ts
  • index-marker-store.test.ts
  • mcp-server.test.ts
  • output-cap.test.ts
  • plugin-cache.test.ts
  • plugin-cache-gc.test.ts
  • plugin-version-resolution.test.ts
  • query-cache.test.ts
  • user-config.test.ts

Roughly 30+ files.

Files to KEEP in tests/claude-code/

Tests of claude-code-specific hooks / bundles:

  • capture.test.ts, capture-hook.test.ts (claude-code SessionStart capture)
  • pre-tool-use*.test.ts (claude-code PreToolUse hook)
  • session-start*.test.ts, session-end*.test.ts
  • *-bundle*.test.ts (claude-code/bundle artifacts)
  • autoupdate.test.ts (claude-code-specific autoupdate path)
  • periodic-summary-bundles.test.ts (claude-code wiki-worker bundle)
  • plugin-cache-bundles.test.ts, plugin-cache-gc-bundle.integration.test.ts
  • wiki-worker-*.test.ts
  • skillify-*.test.ts (claude-code-specific skillify wiring)

The exact partition needs a careful pass — some files at the boundary (e.g. index-marker-store.test.ts) may need git log inspection to decide.

Suggested approach

  1. One PR, no behavior change.
  2. Use git mv so blame survives.
  3. Update vitest.config.ts include glob (remove tests/claude-code/** or keep both? — decide after the move shows what's actually left in tests/claude-code/).
  4. Update any path refs in docs / source comments (e.g. PR fix(embeddings): pi spawn-on-miss + openclaw embedding producer (#178) #183 had one in pi/extension-source/hivemind.ts).
  5. Verify npm test count matches before/after exactly.
  6. Update vitest.config.ts per-file coverage thresholds — paths in the thresholds: block are src/... so they don't move, but double-check nothing references test paths.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions