Skip to content

Commit c579c93

Browse files
valentine-devwilkinsona
authored andcommitted
Support lower-case input in DurationStyle
See gh-32223
1 parent 724f9eb commit c579c93

File tree

3 files changed

+6
-1
lines changed

3 files changed

+6
-1
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/convert/DurationStyle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public String print(Duration value, ChronoUnit unit) {
6262
/**
6363
* ISO-8601 formatting.
6464
*/
65-
ISO8601("^[+-]?P.*$") {
65+
ISO8601("^[+-]?[pP].*$") {
6666

6767
@Override
6868
public Duration parse(String value, ChronoUnit unit) {

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/convert/DurationStyleTests.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ void detectAndParseWhenValueIsNullShouldThrowException() {
3939

4040
@Test
4141
void detectAndParseWhenIso8601ShouldReturnDuration() {
42+
assertThat(DurationStyle.detectAndParse("pt20.345s")).isEqualTo(Duration.parse("pt20.345s"));
4243
assertThat(DurationStyle.detectAndParse("PT20.345S")).isEqualTo(Duration.parse("PT20.345S"));
4344
assertThat(DurationStyle.detectAndParse("PT15M")).isEqualTo(Duration.parse("PT15M"));
4445
assertThat(DurationStyle.detectAndParse("+PT15M")).isEqualTo(Duration.parse("PT15M"));
@@ -143,6 +144,7 @@ void detectWhenSimpleShouldReturnSimple() {
143144

144145
@Test
145146
void detectWhenIso8601ShouldReturnIso8601() {
147+
assertThat(DurationStyle.detect("pt20.345s")).isEqualTo(DurationStyle.ISO8601);
146148
assertThat(DurationStyle.detect("PT20.345S")).isEqualTo(DurationStyle.ISO8601);
147149
assertThat(DurationStyle.detect("PT15M")).isEqualTo(DurationStyle.ISO8601);
148150
assertThat(DurationStyle.detect("+PT15M")).isEqualTo(DurationStyle.ISO8601);
@@ -161,6 +163,7 @@ void detectWhenUnknownShouldThrowException() {
161163

162164
@Test
163165
void parseIso8601ShouldParse() {
166+
assertThat(DurationStyle.ISO8601.parse("pt20.345s")).isEqualTo(Duration.parse("pt20.345s"));
164167
assertThat(DurationStyle.ISO8601.parse("PT20.345S")).isEqualTo(Duration.parse("PT20.345S"));
165168
assertThat(DurationStyle.ISO8601.parse("PT15M")).isEqualTo(Duration.parse("PT15M"));
166169
assertThat(DurationStyle.ISO8601.parse("+PT15M")).isEqualTo(Duration.parse("PT15M"));
@@ -173,6 +176,7 @@ void parseIso8601ShouldParse() {
173176

174177
@Test
175178
void parseIso8601WithUnitShouldIgnoreUnit() {
179+
assertThat(DurationStyle.ISO8601.parse("pt20.345s", ChronoUnit.SECONDS)).isEqualTo(Duration.parse("pt20.345s"));
176180
assertThat(DurationStyle.ISO8601.parse("PT20.345S", ChronoUnit.SECONDS)).isEqualTo(Duration.parse("PT20.345S"));
177181
assertThat(DurationStyle.ISO8601.parse("PT15M", ChronoUnit.SECONDS)).isEqualTo(Duration.parse("PT15M"));
178182
assertThat(DurationStyle.ISO8601.parse("+PT15M", ChronoUnit.SECONDS)).isEqualTo(Duration.parse("PT15M"));

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/convert/StringToDurationConverterTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class StringToDurationConverterTests {
3838

3939
@ConversionServiceTest
4040
void convertWhenIso8601ShouldReturnDuration(ConversionService conversionService) {
41+
assertThat(convert(conversionService, "pt20.345s")).isEqualTo(Duration.parse("pt20.345s"));
4142
assertThat(convert(conversionService, "PT20.345S")).isEqualTo(Duration.parse("PT20.345S"));
4243
assertThat(convert(conversionService, "PT15M")).isEqualTo(Duration.parse("PT15M"));
4344
assertThat(convert(conversionService, "+PT15M")).isEqualTo(Duration.parse("PT15M"));

0 commit comments

Comments
 (0)