From 39fff57aa47c5ea7f4ee6edf3f1439be80c50181 Mon Sep 17 00:00:00 2001 From: Jonah Jeleniewski Date: Tue, 9 Jun 2026 13:09:00 +1000 Subject: [PATCH] Handle empty `DCC_CodePage` values without emitting a warning --- .../delphi/msbuild/DelphiProjectFactory.java | 2 +- .../msbuild/DelphiProjectFactoryTest.java | 20 +++++++++++++++++++ .../msbuild/DelphiProjectHelperTest.java | 13 ++++++++++++ .../projects/CodePageProject/Blank.dproj | 5 +++++ .../projects/CodePageProject/Padded.dproj | 5 +++++ 5 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 delphi-frontend/src/test/resources/au/com/integradev/delphi/projects/CodePageProject/Blank.dproj create mode 100644 delphi-frontend/src/test/resources/au/com/integradev/delphi/projects/CodePageProject/Padded.dproj diff --git a/delphi-frontend/src/main/java/au/com/integradev/delphi/msbuild/DelphiProjectFactory.java b/delphi-frontend/src/main/java/au/com/integradev/delphi/msbuild/DelphiProjectFactory.java index 64026c8e8..a0bb5bfc0 100644 --- a/delphi-frontend/src/main/java/au/com/integradev/delphi/msbuild/DelphiProjectFactory.java +++ b/delphi-frontend/src/main/java/au/com/integradev/delphi/msbuild/DelphiProjectFactory.java @@ -152,7 +152,7 @@ private static Map createUnitAliases(MSBuildState state) { private static Integer createCodePage(MSBuildState state) { String codePage = state.getProperty("DCC_CodePage"); - if (codePage == null) { + if (codePage.isEmpty()) { return null; } diff --git a/delphi-frontend/src/test/java/au/com/integradev/delphi/msbuild/DelphiProjectFactoryTest.java b/delphi-frontend/src/test/java/au/com/integradev/delphi/msbuild/DelphiProjectFactoryTest.java index 5663db83f..a1eedbb7c 100644 --- a/delphi-frontend/src/test/java/au/com/integradev/delphi/msbuild/DelphiProjectFactoryTest.java +++ b/delphi-frontend/src/test/java/au/com/integradev/delphi/msbuild/DelphiProjectFactoryTest.java @@ -66,6 +66,12 @@ class DelphiProjectFactoryTest { private static final String CODE_PAGE_PROJECT = "/au/com/integradev/delphi/projects/CodePageProject/Utf8.dproj"; + private static final String BLANK_CODE_PAGE_PROJECT = + "/au/com/integradev/delphi/projects/CodePageProject/Blank.dproj"; + + private static final String PADDED_CODE_PAGE_PROJECT = + "/au/com/integradev/delphi/projects/CodePageProject/Padded.dproj"; + private EnvironmentVariableProvider environmentVariableProvider; private DelphiProject createProject(String resource) { @@ -201,4 +207,18 @@ void testCodePageProject() { assertThat(project.getCodePage()).isEqualTo(65001); } + + @Test + void testBlankCodePageProject() { + DelphiProject project = createProject(BLANK_CODE_PAGE_PROJECT); + + assertThat(project.getCodePage()).isNull(); + } + + @Test + void testWhitespacePaddedCodePageProjectIsInvalid() { + DelphiProject project = createProject(PADDED_CODE_PAGE_PROJECT); + + assertThat(project.getCodePage()).isNull(); + } } diff --git a/delphi-frontend/src/test/java/au/com/integradev/delphi/msbuild/DelphiProjectHelperTest.java b/delphi-frontend/src/test/java/au/com/integradev/delphi/msbuild/DelphiProjectHelperTest.java index be3f349b2..dfef8900f 100644 --- a/delphi-frontend/src/test/java/au/com/integradev/delphi/msbuild/DelphiProjectHelperTest.java +++ b/delphi-frontend/src/test/java/au/com/integradev/delphi/msbuild/DelphiProjectHelperTest.java @@ -411,6 +411,19 @@ void testMissingProjectCodePageFallsBackToNativeCharset() { assertThat(delphiProjectHelper.getAnsiCharset()).isEqualTo(Charset.forName("windows-1252")); } + @Test + void testBlankProjectCodePageFallsBackToNativeCharset() { + setNativeEncoding("windows-1252"); + + addInputFile(PROJECTS_PATH + "CodePageProject/Utf8.dproj"); + addInputFile(PROJECTS_PATH + "CodePageProject/Blank.dproj"); + + DelphiProjectHelper delphiProjectHelper = + new DelphiProjectHelper(settings, fs, environmentVariableProvider); + + assertThat(delphiProjectHelper.getAnsiCharset()).isEqualTo(Charset.forName("windows-1252")); + } + @Test void testAcpProjectCodePageUsesNativeCharsetWithoutConflictWhenItMatchesExplicitCodePage() { setNativeEncoding("windows-1252"); diff --git a/delphi-frontend/src/test/resources/au/com/integradev/delphi/projects/CodePageProject/Blank.dproj b/delphi-frontend/src/test/resources/au/com/integradev/delphi/projects/CodePageProject/Blank.dproj new file mode 100644 index 000000000..72b48afc1 --- /dev/null +++ b/delphi-frontend/src/test/resources/au/com/integradev/delphi/projects/CodePageProject/Blank.dproj @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/delphi-frontend/src/test/resources/au/com/integradev/delphi/projects/CodePageProject/Padded.dproj b/delphi-frontend/src/test/resources/au/com/integradev/delphi/projects/CodePageProject/Padded.dproj new file mode 100644 index 000000000..8b68fb750 --- /dev/null +++ b/delphi-frontend/src/test/resources/au/com/integradev/delphi/projects/CodePageProject/Padded.dproj @@ -0,0 +1,5 @@ + + + 65001 + + \ No newline at end of file