Fix ResourceHintsWriter for leading/trailing wildcards
Closes gh-28597
This commit is contained in:
@@ -82,7 +82,12 @@ class ResourceHintsWriter {
|
||||
}
|
||||
|
||||
private String patternToRegexp(String pattern) {
|
||||
return Arrays.stream(pattern.split("\\*")).map(Pattern::quote).collect(Collectors.joining(".*"));
|
||||
String prefix = (pattern.startsWith("*") ? ".*" : "");
|
||||
String suffix = (pattern.endsWith("*") ? ".*" : "");
|
||||
return Arrays.stream(pattern.split("\\*"))
|
||||
.filter(s -> !s.isEmpty())
|
||||
.map(Pattern::quote)
|
||||
.collect(Collectors.joining(".*", prefix, suffix));
|
||||
}
|
||||
|
||||
private void addIfNotEmpty(Map<String, Object> attributes, String name, @Nullable Object value) {
|
||||
|
||||
@@ -57,7 +57,21 @@ public class ResourceHintsWriterTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void registerPattern() throws JSONException {
|
||||
void registerWildcardAtTheBeginningPattern() throws JSONException {
|
||||
ResourceHints hints = new ResourceHints();
|
||||
hints.registerPattern("*.properties");
|
||||
assertEquals("""
|
||||
{
|
||||
"resources": {
|
||||
"includes": [
|
||||
{ "pattern": ".*\\\\Q.properties\\\\E"}
|
||||
]
|
||||
}
|
||||
}""", hints);
|
||||
}
|
||||
|
||||
@Test
|
||||
void registerWildcardInTheMiddlePattern() throws JSONException {
|
||||
ResourceHints hints = new ResourceHints();
|
||||
hints.registerPattern("com/example/*.properties");
|
||||
assertEquals("""
|
||||
@@ -70,6 +84,20 @@ public class ResourceHintsWriterTests {
|
||||
}""", hints);
|
||||
}
|
||||
|
||||
@Test
|
||||
void registerWildcardAtTheEndPattern() throws JSONException {
|
||||
ResourceHints hints = new ResourceHints();
|
||||
hints.registerPattern("static/*");
|
||||
assertEquals("""
|
||||
{
|
||||
"resources": {
|
||||
"includes": [
|
||||
{ "pattern": "\\\\Qstatic/\\\\E.*"}
|
||||
]
|
||||
}
|
||||
}""", hints);
|
||||
}
|
||||
|
||||
@Test
|
||||
void registerPatternWithIncludesAndExcludes() throws JSONException {
|
||||
ResourceHints hints = new ResourceHints();
|
||||
|
||||
Reference in New Issue
Block a user