Docker Build and Publish / build-and-push (push) Failing after 11s
The archive root was filtered by prefix, but the recursive walk below it was not, so anything inside a profile directory got indexed. NAS filesystems put sidecar metadata *inside* every folder rather than only at the share root: Synology writes @eaDir (thumbnails and indexing data), #recycle holds deletions, .sync is Resilio state. On the live share those account for 12,516 of 123,023 files. None currently sit inside a profile directory, so nothing was miscounted yet — but the moment that share gets indexed for Photos, every generated thumbnail would be counted as archive media and stat'd one by one over the network, which is the cost the index exists to avoid. One isSystemDirectory rule now applies at every level, and the root listing uses it too instead of keeping a second copy of the pattern. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011uBWhwV3wFQ5MBCcMHHem7
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { isSystemDirectory } from './archive-index';
|
|
|
|
describe('isSystemDirectory', () => {
|
|
it.each([
|
|
['@eaDir', 'Synology thumbnail/index metadata, written inside every folder'],
|
|
['@tmp', 'Synology scratch'],
|
|
['.sync', 'Resilio state'],
|
|
['.DS_Store', 'macOS'],
|
|
['#recycle', 'Synology deletions'],
|
|
['#snapshot', 'Synology snapshots'],
|
|
])('skips %s (%s)', name => {
|
|
expect(isSystemDirectory(name)).toBe(true);
|
|
});
|
|
|
|
it.each([
|
|
'4utumn07',
|
|
'4utumn07 - reels',
|
|
'story - dawn_petal',
|
|
'story highlights - official_band - A.B.C',
|
|
'story highlights - theoldlyricmuseinsta - 💙1999-2005 era',
|
|
'Heejin_Bubble heejinmedia',
|
|
'gallery-dl',
|
|
'posts',
|
|
])('keeps %s', name => {
|
|
expect(isSystemDirectory(name)).toBe(false);
|
|
});
|
|
|
|
it('does not treat a leading underscore as a system directory', () => {
|
|
// `_gemini-plans` is filtered separately at the archive root only; nothing
|
|
// below the root should be excluded just for starting with an underscore.
|
|
expect(isSystemDirectory('_gemini-plans')).toBe(false);
|
|
});
|
|
});
|