diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-28 10:08:10 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-28 10:08:10 -0500 |
| commit | fc57dcac9a7c972fa59dbd0aded06ae0725000ca (patch) | |
| tree | ca61f78411bb8ce23c332a70a821642a21e44998 /tests/test-bootstrap.el | |
| parent | 2d9c27caa08b231983543c0a4be691d7926980d8 (diff) | |
| download | pearl-fc57dcac9a7c972fa59dbd0aded06ae0725000ca.tar.gz pearl-fc57dcac9a7c972fa59dbd0aded06ae0725000ca.zip | |
refactor(view-sync): pearl--save-query-mark-synced preserves unknown plist keys
The prior implementation rebuilt the spec from a fixed key set (:filter, :sort, :order, plus the four :linear-view-* sync keys and the optional :linear-view-url) and silently dropped anything else. No keys outside that set live on a saved-query entry today, but the persistence layer was coupled to the current schema. A future :description, a user-added annotation, or any new pearl field would vanish on every re-sync.
I switched to copy-then-plist-put: shallow-copy the existing spec, plist-put the four sync keys on top, and conditionally plist-put :linear-view-url when this call provided one. Arbitrary keys survive untouched. The URL-preservation behavior on a re-sync that omits view-url is unchanged: the prior :linear-view-url is already in the copied spec, so the when-view-url guard skips the put and leaves it in place.
I added one regression test that seeds an entry with :description and :user-tag alongside the standard keys and asserts all of them survive a mark-synced call. All 661 ert tests pass. make compile and make lint are clean.
Diffstat (limited to 'tests/test-bootstrap.el')
0 files changed, 0 insertions, 0 deletions
