diff --git a/src/main/java/org/cryptomator/common/PropertiesPreprocessor.java b/src/main/java/org/cryptomator/common/PropertiesPreprocessor.java index 342ad3e9d..785b249bf 100644 --- a/src/main/java/org/cryptomator/common/PropertiesPreprocessor.java +++ b/src/main/java/org/cryptomator/common/PropertiesPreprocessor.java @@ -1,5 +1,6 @@ package org.cryptomator.common; +import org.jetbrains.annotations.VisibleForTesting; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,7 +28,8 @@ public class PropertiesPreprocessor { LOG.info("Preprocessed cryptomator properties."); } - private static String process(String value) { + @VisibleForTesting + static String process(String value) { return TEMPLATE.matcher(value).replaceAll(match -> // switch (match.group(1)) { case "appdir" -> ENV.get("APPDIR"); diff --git a/src/test/java/org/cryptomator/common/PropertiesPreprocessorTest.java b/src/test/java/org/cryptomator/common/PropertiesPreprocessorTest.java new file mode 100644 index 000000000..eee900f9c --- /dev/null +++ b/src/test/java/org/cryptomator/common/PropertiesPreprocessorTest.java @@ -0,0 +1,24 @@ +package org.cryptomator.common; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.mockito.Mockito; + +public class PropertiesPreprocessorTest { + + @ParameterizedTest + @CsvSource(value = """ + org.example.@{mytest1}.test, org.example.@{mytest1}.test + @{only*word*digits*under_score\\},@{only*words*digits*under_score\\} + C:\\Users\\@{appdir}\\dir, C:\\Users\\\\dir + @{@{appdir}},@{} + Longer @{appdir} text with @{appdir}., Longer text with . + """) + public void test(String propertyValue, String expected) { + var result = PropertiesPreprocessor.process(propertyValue); + Assertions.assertEquals(result, expected); + } + +}