From d02511cb206c85f5f7ae1a88ffb28b34fe0fda6d Mon Sep 17 00:00:00 2001 From: Christian Emmer <10749361+emmercm@users.noreply.github.com> Date: Tue, 16 Jul 2024 19:07:52 -0700 Subject: [PATCH] Fix: enable CRC32 checksums when patch files are provided (#1217) --- src/igir.ts | 5 +++++ test/igir.test.ts | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/igir.ts b/src/igir.ts index f359357d5..8a34025d2 100644 --- a/src/igir.ts +++ b/src/igir.ts @@ -287,6 +287,11 @@ export default class Igir { const minimumChecksum = this.options.getInputMinChecksum() ?? ChecksumBitmask.CRC32; let matchChecksum = minimumChecksum; + if (this.options.getPatchFileCount() > 0) { + matchChecksum |= ChecksumBitmask.CRC32; + this.logger.trace('using patch files, enabling CRC32 file checksums'); + } + if (this.options.shouldDir2Dat()) { Object.keys(ChecksumBitmask) .filter((bitmask): bitmask is keyof typeof ChecksumBitmask => Number.isNaN(Number(bitmask))) diff --git a/test/igir.test.ts b/test/igir.test.ts index 004a8a14a..040fb3f27 100644 --- a/test/igir.test.ts +++ b/test/igir.test.ts @@ -8,6 +8,7 @@ import Igir from '../src/igir.js'; import DATScanner from '../src/modules/datScanner.js'; import ArrayPoly from '../src/polyfill/arrayPoly.js'; import fsPoly from '../src/polyfill/fsPoly.js'; +import { ChecksumBitmask } from '../src/types/files/fileChecksums.js'; import FileFactory from '../src/types/files/fileFactory.js'; import Options, { GameSubdirMode, OptionsProps, RomFixExtension } from '../src/types/options.js'; import ProgressBarFake from './console/progressBarFake.js'; @@ -707,6 +708,7 @@ describe('with explicit DATs', () => { commands: ['copy', 'extract', 'test'], dat: [path.join(inputTemp, 'dats', '*')], input: [path.join(inputTemp, 'roms')], + inputMinChecksum: ChecksumBitmask[ChecksumBitmask.MD5].toLowerCase(), patch: [path.join(inputTemp, 'patches')], output: outputTemp, dirDatName: true,