From a67c8e4bbd0488fe57417582757f18c3204f84d0 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 24 Apr 2024 15:34:05 +0100 Subject: [PATCH] Perform analysis even when property is not in the environment Closes gh-33261 --- ...InvalidConfigurationPropertyValueFailureAnalyzer.java | 4 ++-- ...idConfigurationPropertyValueFailureAnalyzerTests.java | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/InvalidConfigurationPropertyValueFailureAnalyzer.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/InvalidConfigurationPropertyValueFailureAnalyzer.java index b3baa188dfd..9e2bd7a235d 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/InvalidConfigurationPropertyValueFailureAnalyzer.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/InvalidConfigurationPropertyValueFailureAnalyzer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,7 +51,7 @@ class InvalidConfigurationPropertyValueFailureAnalyzer protected FailureAnalysis analyze(Throwable rootFailure, InvalidConfigurationPropertyValueException cause) { List descriptors = getDescriptors(cause.getName()); if (descriptors.isEmpty()) { - return null; + descriptors = List.of(new Descriptor(null, cause.getValue(), null)); } StringBuilder description = new StringBuilder(); appendDetails(description, cause, descriptors); diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/InvalidConfigurationPropertyValueFailureAnalyzerTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/InvalidConfigurationPropertyValueFailureAnalyzerTests.java index 6f8b468c7c0..d50cd24c283 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/InvalidConfigurationPropertyValueFailureAnalyzerTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/InvalidConfigurationPropertyValueFailureAnalyzerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,7 +45,8 @@ class InvalidConfigurationPropertyValueFailureAnalyzerTests { InvalidConfigurationPropertyValueException failure = new InvalidConfigurationPropertyValueException( "test.property", "invalid", "This is not valid."); FailureAnalysis analysis = new InvalidConfigurationPropertyValueFailureAnalyzer(null).analyze(failure); - assertThat(analysis).isNull(); + assertThat(analysis.getDescription()) + .contains("Invalid value 'invalid' for configuration property 'test.property'."); } @Test @@ -98,7 +99,9 @@ class InvalidConfigurationPropertyValueFailureAnalyzerTests { void analysisWithUnknownKey() { InvalidConfigurationPropertyValueException failure = new InvalidConfigurationPropertyValueException( "test.key.not.defined", "invalid", "This is not valid."); - assertThat(performAnalysis(failure)).isNull(); + FailureAnalysis analysis = performAnalysis(failure); + assertThat(analysis.getDescription()) + .contains("Invalid value 'invalid' for configuration property 'test.key.not.defined'."); } private void assertCommonParts(InvalidConfigurationPropertyValueException failure, FailureAnalysis analysis) {