diff --git a/api/src/job.ts b/api/src/job.ts index 88d3e5b4..3f259f49 100644 --- a/api/src/job.ts +++ b/api/src/job.ts @@ -542,7 +542,7 @@ const SUPPORTED_EXTENSIONS = new Set([ '.ics', '.ical', '.ifb', '.icalendar', '.conf', '.env', '.gitignore', '.ini', '.properties', '.toml', '.doc', '.docx', '.pdf', '.ppt', '.pptx', '.xls', '.xlsx', - '.odt', '.ods', '.odp', '.rtf', + '.odt', '.ods', '.odp', '.rtf', '.hwp', '.hwpx', '.avif', '.bmp', '.gif', '.ico', '.jpeg', '.jpg', '.png', '.tif', '.tiff', '.webp', '.eot', '.ttf', '.woff', '.woff2', diff --git a/api/src/walker.test.ts b/api/src/walker.test.ts index 44e252a6..14151f39 100644 --- a/api/src/walker.test.ts +++ b/api/src/walker.test.ts @@ -592,6 +592,21 @@ describe('walkDir / regular file handling', () => { expect(names).toEqual(['keep.py']); }); + it('keeps Hancom word processor documents', async () => { + await fsp.writeFile(path.join(tmpDir, 'report.hwp'), 'hwp'); + await fsp.writeFile(path.join(tmpDir, 'report.hwpx'), 'hwpx'); + await fsp.writeFile(path.join(tmpDir, 'UPPER.HWP'), 'hwp'); + + const job = makeJob(); + const internals = asInternals(job); + internals.submissionDir = tmpDir; + + await internals.walkDir(tmpDir, 0, new Map()); + + const names = internals.generatedFiles.map(f => f.name).sort(); + expect(names).toEqual(['UPPER.HWP', 'report.hwp', 'report.hwpx']); + }); + it('keeps supported extensionless output basenames', async () => { await fsp.writeFile(path.join(tmpDir, 'Dockerfile'), 'FROM scratch'); await fsp.mkdir(path.join(tmpDir, 'ci'));