From e342d7d2626b3c5237d56ac221b0aace8a6a021c Mon Sep 17 00:00:00 2001 From: Madhura Bhave Date: Wed, 18 Nov 2020 11:22:04 -0800 Subject: [PATCH] Fix processing of line immediately after # in properties file Fixes gh-24158 --- .../boot/env/OriginTrackedPropertiesLoader.java | 6 ++++-- .../boot/env/OriginTrackedPropertiesLoaderTests.java | 6 ++++++ .../org/springframework/boot/env/test-properties.properties | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedPropertiesLoader.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedPropertiesLoader.java index 96ee296bfb9e..a12a0eaab635 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedPropertiesLoader.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedPropertiesLoader.java @@ -168,8 +168,10 @@ boolean isNewDocument(CharacterReader reader) throws IOException { result = result && readAndExpect(reader, reader::isHyphenCharacter); result = result && readAndExpect(reader, reader::isHyphenCharacter); result = result && readAndExpect(reader, reader::isHyphenCharacter); - reader.read(); - reader.skipWhitespace(); + if (!reader.isEndOfLine()) { + reader.read(); + reader.skipWhitespace(); + } return result && reader.isEndOfLine(); } diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/env/OriginTrackedPropertiesLoaderTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/env/OriginTrackedPropertiesLoaderTests.java index 971c425bfa6e..16a6c8bca923 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/env/OriginTrackedPropertiesLoaderTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/env/OriginTrackedPropertiesLoaderTests.java @@ -293,6 +293,12 @@ void existingCommentsAreNotTreatedAsMultiDoc() throws Exception { assertThat(this.documents.size()).isEqualTo(1); } + @Test + void getPropertyAfterPoundCharacter() { + OriginTrackedValue value = getFromFirst("test-line-after-empty-pound"); + assertThat(getValue(value)).isEqualTo("abc"); + } + private OriginTrackedValue getFromFirst(String key) { return this.documents.get(0).asMap().get(key); } diff --git a/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/env/test-properties.properties b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/env/test-properties.properties index db81b6c3d731..4dba64e2705b 100644 --- a/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/env/test-properties.properties +++ b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/env/test-properties.properties @@ -43,3 +43,6 @@ test-iso8859-1-chars= test-with-trailing-space= trailing test-with-escaped-trailing-space= trailing\ + +# +test-line-after-empty-pound=abc \ No newline at end of file