sotashimozono_obsidian-remo.../plugin/tests/integration
Souta 57def8564e feat(shadow): round-trip plugin binaries for BRAT / non-marketplace (#429b)
Phase B/2. The enabled-plugins LIST round-trips (#434) and the
marketplace installer fetches binaries for registry plugins (#439,
Phase B/1) — but a BRAT / sideloaded plugin isn't on the marketplace,
so its code never reached another machine.

ShadowVaultBootstrap.pull/pushPluginBinaries round-trip the plugin
*code* (manifest.json / main.js / styles.css; never data.json) through
the remote vault's canonical `.obsidian/plugins/<id>/`. Wired into
runAutoConnect AFTER the marketplace installer so the plugins it
fetched live aren't re-pulled (pull only stages what's still missing =
the non-marketplace ones, preserving the installer's live load and
acting as a fallback when a marketplace fetch fails). The push makes
the remote `.obsidian/plugins/` a complete vault. A pulled binary loads
on the next vault open (Obsidian scans the plugins dir at startup).

- pull never overwrites a local file (local install authoritative)
- push is diff-gated (no churn) and skips remote-ssh (self-managed)
- per-file SSH errors are swallowed, never abort the batch

Tests: 7 unit (in-memory fakes) + 3 integration (real docker sshd:
cross-session round-trip, push→fresh-pull, local-authoritative).

Refs #429 #342

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 20:24:51 +09:00
..
helpers fix(sync): address PR #346 multi-agent review (C1 + I1-I5 + advisories) 2026-05-17 14:48:26 +09:00
config-consistency.e2e.test.ts feat(shadow): round-trip plugin binaries for BRAT / non-marketplace (#429b) 2026-06-30 20:24:51 +09:00
daemon.deploy.test.ts fix(test): drop pgrep-based assertions, use socket-existence as daemon liveness signal 2026-04-28 11:03:23 +09:00
invariants.e2e.test.ts fix(sync): address PR #346 multi-agent review (C1 + I1-I5 + advisories) 2026-05-17 14:48:26 +09:00
invariants.property.e2e.test.ts test(framework): make invariants.property hermetic per fast-check run 2026-05-17 15:08:25 +09:00
multiclient.rpc.test.ts test(plugin): Phase C.M5 — extract multiclientRpc helper for reuse (0.4.39) 2026-04-28 19:34:40 +09:00
multiclient.sftp.test.ts feat(test): Phase A1 — multi-client SFTP convergence integration tests + testing-strategy doc (0.4.19) 2026-04-28 10:51:08 +09:00
perf.sync.bench.test.ts fix: bench modify op expects 'created' not 'modified' event 2026-05-01 08:30:56 +09:00
restart-roundtrip.e2e.test.ts test(framework): assert post-fix contract directly; tests fail today by design 2026-05-12 10:18:03 +09:00
self-reflect-rpc.e2e.test.ts fix(sync): RPC writer self-reflect + echo de-dup (#341, fully closes) 2026-05-17 15:27:57 +09:00
self-reflect.e2e.test.ts fix(sync): address PR #346 multi-agent review (C1 + I1-I5 + advisories) 2026-05-17 14:48:26 +09:00
ssh.integration.test.ts feat(test): docker sshd integration test environment (Tier B-1+B-3, 0.4.0) 2026-04-27 14:05:55 +09:00
sync.e2e.test.ts test(framework): Layer 1 — writer self-reflect harness (failing tests for #341) 2026-05-12 09:16:22 +09:00
walk.equivalence.test.ts feat(test): Phase E1-α.3 — fs.walk vs adapter.list equivalence + qualitative benchmark (0.4.25) 2026-04-28 12:36:41 +09:00