From 3d3d54efc1027349b24b1c826aaa7f1d2d6ef37e Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Mon, 7 Jul 2025 12:17:38 -0700 Subject: [PATCH] Avoid generating fields names with reserved substitution format patterns e.g. ":Date" or ":First" --- src/org/labkey/test/util/TestDataGenerator.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/org/labkey/test/util/TestDataGenerator.java b/src/org/labkey/test/util/TestDataGenerator.java index 68315ca9bf..9ef0d9a483 100644 --- a/src/org/labkey/test/util/TestDataGenerator.java +++ b/src/org/labkey/test/util/TestDataGenerator.java @@ -580,6 +580,17 @@ public static String randomFieldName(@NotNull String part, int numStartChars, in String chars = ALL_ILLEGAL_QUERY_KEY_CHARACTERS + " %()=+-[]_|*`'\":;<>?!@#^" + NON_LATIN_STRING;// + WIDE_PLACEHOLDER ; String randomFieldName = randomName(part, numStartChars, numEndChars, chars, exclusion); + + // Avoid generating fields names with reserved substitution format patterns. e.g. ":Date" or ":First" + if (numStartChars > 0 && randomFieldName.charAt(numStartChars - 1) == ':' && + StringUtils.isAlpha(part.substring(0, 4))) // The shortest pattern is four characters (see org.labkey.api.util.SubstitutionFormat.getFormatNames) + { + String regenExclusion = Objects.requireNonNullElse(exclusion, "") + ":"; + randomFieldName = randomFieldName.substring(0, numStartChars - 1) + + randomString(1, regenExclusion, chars) + + randomFieldName.substring(numStartChars + 1); + } + TestLogger.log("Generated random field name: " + randomFieldName); return randomFieldName; }