From 02d15b6f957fc06cb616aa5ddf3102c612bc0ad3 Mon Sep 17 00:00:00 2001 From: Enkidu93 Date: Tue, 4 Aug 2026 13:23:22 -0400 Subject: [PATCH] Make project extraction case-insensitive; add test --- src/SIL.Machine/Corpora/ParatextProjectSettings.cs | 7 ++++++- .../Corpora/ParatextProjectSettingsTests.cs | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/SIL.Machine/Corpora/ParatextProjectSettings.cs b/src/SIL.Machine/Corpora/ParatextProjectSettings.cs index 28bdbbf45..1ff1dd904 100644 --- a/src/SIL.Machine/Corpora/ParatextProjectSettings.cs +++ b/src/SIL.Machine/Corpora/ParatextProjectSettings.cs @@ -89,8 +89,13 @@ public bool IsBookFileName(string fileName, out string bookId) { bookId = null; - if (!fileName.StartsWith(FileNamePrefix) || !fileName.EndsWith(FileNameSuffix)) + if ( + !fileName.StartsWith(FileNamePrefix, ignoreCase: true, CultureInfo.InvariantCulture) + || !fileName.EndsWith(FileNameSuffix, ignoreCase: true, CultureInfo.InvariantCulture) + ) + { return false; + } string bookPart = fileName.Substring( FileNamePrefix.Length, diff --git a/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs b/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs index 63be4d01b..4aa2b5d16 100644 --- a/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs +++ b/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs @@ -171,6 +171,14 @@ public void IsBookFileName_WrongBookPart_BookNumBookId() Assert.That(settings.IsBookFileName("PROJ100.SFM", out _), Is.False); } + [Test] + public void IsBookFileName_CaseInsensitive() + { + ParatextProjectSettings settings = CreateSettings("MAT"); + Assert.That(settings.IsBookFileName("PROJMRK.sfm", out string bookId), Is.True); + Assert.That(bookId, Is.EqualTo("MRK")); + } + private static ParatextProjectSettings CreateSettings(string fileNameForm) { return new ParatextProjectSettings(