This is an automated email from the ASF dual-hosted git repository.
pkarwasz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git
The following commit(s) were added to refs/heads/master by this push:
new df58dd7 Fix Windows test problem
df58dd7 is described below
commit df58dd77614bc464bd5f15f35836e8f8c164e668
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Mon Jan 30 23:35:54 2023 +0100
Fix Windows test problem
The Windows Freemarker failure has been fixed by restraining the
templates to the `changelog` directory.
---
.../logging/log4j/changelog/ChangelogFiles.java | 7 +++++
.../changelog/exporter/ChangelogExporter.java | 35 +++++++++++++++-------
.../log4j/changelog/exporter/FreeMarkerUtils.java | 22 +++++++++-----
.../logging/log4j/changelog/FileTestUtils.java | 2 +-
4 files changed, 46 insertions(+), 20 deletions(-)
diff --git
a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogFiles.java
b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogFiles.java
index df35b37..abca953 100644
---
a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogFiles.java
+++
b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogFiles.java
@@ -56,6 +56,10 @@ public final class ChangelogFiles {
return changelogDirectory.resolve(".index.adoc.ftl");
}
+ public static String indexTemplateFile(final Path changelogDirectory,
final Path baseDir) {
+ return
baseDir.relativize(indexTemplateFile(changelogDirectory)).toString().replaceAll("\\\\",
"/");
+ }
+
public static Path releaseDirectory(final Path changelogDirectory, final
String releaseVersion) {
return changelogDirectory.resolve(releaseVersion);
}
@@ -68,4 +72,7 @@ public final class ChangelogFiles {
return releaseDirectory.resolve(".changelog.adoc.ftl");
}
+ public static String releaseChangelogTemplateFile(final Path
releaseDirectory, final Path baseDir) {
+ return
baseDir.relativize(releaseChangelogTemplateFile(releaseDirectory)).toString().replaceAll("\\\\",
"/");
+ }
}
diff --git
a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
index 41d0021..96ac864 100644
---
a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
+++
b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
@@ -60,12 +60,13 @@ public final class ChangelogExporter {
for (int releaseIndex = 0; releaseIndex <
releaseDirectories.size(); releaseIndex++) {
final Path releaseDirectory =
releaseDirectories.get(releaseIndex);
final ChangelogRelease changelogRelease =
changelogReleases.get(releaseIndex);
- final Path releaseChangelogTemplateFile =
ChangelogFiles.releaseChangelogTemplateFile(releaseDirectory);
+ final String releaseChangelogTemplateFile =
ChangelogFiles.releaseChangelogTemplateFile(releaseDirectory,
args.changelogDirectory);
try {
exportRelease(
args.outputDirectory,
releaseDirectory,
changelogRelease,
+ args.changelogDirectory,
releaseChangelogTemplateFile);
} catch (final Exception error) {
final String message =
@@ -95,20 +96,25 @@ public final class ChangelogExporter {
final Path upcomingReleaseDirectory =
ChangelogFiles.unreleasedDirectory(args.changelogDirectory,
upcomingReleaseVersionMajor);
final ChangelogRelease upcomingRelease =
upcomingRelease(upcomingReleaseVersionMajor);
- final Path upcomingReleaseChangelogTemplateFile =
-
ChangelogFiles.releaseChangelogTemplateFile(upcomingReleaseDirectory);
+ final String upcomingReleaseChangelogTemplateFile =
+
ChangelogFiles.releaseChangelogTemplateFile(upcomingReleaseDirectory,
args.changelogDirectory);
System.out.format("exporting upcoming release directory:
`%s`%n", upcomingReleaseDirectory);
exportRelease(
args.outputDirectory,
upcomingReleaseDirectory,
upcomingRelease,
+ args.changelogDirectory,
upcomingReleaseChangelogTemplateFile);
changelogReleases.add(upcomingRelease);
});
// Export the release index
- final Path changelogIndexTemplateFile =
ChangelogFiles.indexTemplateFile(args.changelogDirectory);
- exportIndex(args.outputDirectory, changelogReleases,
changelogIndexTemplateFile);
+ final String changelogIndexTemplateFile =
ChangelogFiles.indexTemplateFile(args.changelogDirectory,
args.changelogDirectory);
+ exportIndex(
+ args.outputDirectory,
+ changelogReleases,
+ args.changelogDirectory,
+ changelogIndexTemplateFile);
}
@@ -135,10 +141,11 @@ public final class ChangelogExporter {
final Path outputDirectory,
final Path releaseDirectory,
final ChangelogRelease changelogRelease,
- final Path releaseChangelogTemplateFile) {
+ final Path templateDirectory,
+ final String releaseChangelogTemplateFile) {
final Map<ChangelogEntry.Type, List<ChangelogEntry>>
changelogEntriesByType = readChangelogEntriesByType(releaseDirectory);
try {
- exportRelease(outputDirectory, changelogRelease,
changelogEntriesByType, releaseChangelogTemplateFile);
+ exportRelease(outputDirectory, changelogRelease,
changelogEntriesByType, templateDirectory, releaseChangelogTemplateFile);
} catch (final IOException error) {
final String message = String.format("failed exporting release
from directory `%s`", releaseDirectory);
throw new UncheckedIOException(message, error);
@@ -162,14 +169,19 @@ public final class ChangelogExporter {
final Path outputDirectory,
final ChangelogRelease release,
final Map<ChangelogEntry.Type, List<ChangelogEntry>> entriesByType,
- final Path releaseChangelogTemplateFile)
+ final Path templateDirectory,
+ final String releaseChangelogTemplateFile)
throws IOException {
final String releaseChangelogFileName =
releaseChangelogFileName(release);
final Path releaseChangelogFile =
outputDirectory.resolve(releaseChangelogFileName);
final Map<String, Object> releaseChangelogTemplateData = new
LinkedHashMap<>();
releaseChangelogTemplateData.put("release", release);
releaseChangelogTemplateData.put("entriesByType", entriesByType);
- FreeMarkerUtils.render(releaseChangelogTemplateFile,
releaseChangelogTemplateData, releaseChangelogFile);
+ FreeMarkerUtils.render(
+ templateDirectory,
+ releaseChangelogTemplateFile,
+ releaseChangelogTemplateData,
+ releaseChangelogFile);
}
private static ChangelogRelease upcomingRelease(final int versionMajor) {
@@ -180,7 +192,8 @@ public final class ChangelogExporter {
private static void exportIndex(
final Path outputDirectory,
final List<ChangelogRelease> changelogReleases,
- final Path indexTemplateFile) {
+ final Path templateDirectory,
+ final String indexTemplateFile) {
final Object indexTemplateData = Collections.singletonMap(
"releases", IntStream
.range(0, changelogReleases.size())
@@ -196,7 +209,7 @@ public final class ChangelogExporter {
})
.collect(Collectors.toList()));
final Path indexFile = outputDirectory.resolve("index.adoc");
- FreeMarkerUtils.render(indexTemplateFile, indexTemplateData,
indexFile);
+ FreeMarkerUtils.render(templateDirectory, indexTemplateFile,
indexTemplateData, indexFile);
}
private static String releaseChangelogFileName(final ChangelogRelease
changelogRelease) {
diff --git
a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/FreeMarkerUtils.java
b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/FreeMarkerUtils.java
index 9deafcd..eaaa637 100644
---
a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/FreeMarkerUtils.java
+++
b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/FreeMarkerUtils.java
@@ -17,7 +17,6 @@
package org.apache.logging.log4j.changelog.exporter;
import java.io.BufferedWriter;
-import java.io.File;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Files;
@@ -28,21 +27,23 @@ import org.apache.logging.log4j.changelog.util.CharsetUtils;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import freemarker.cache.FileTemplateLoader;
-import freemarker.template.*;
+import freemarker.template.Configuration;
+import freemarker.template.DefaultObjectWrapper;
+import freemarker.template.DefaultObjectWrapperBuilder;
+import freemarker.template.Template;
+import freemarker.template.TemplateExceptionHandler;
final class FreeMarkerUtils {
private FreeMarkerUtils() {}
- private static final Configuration CONFIGURATION = createConfiguration();
-
@SuppressFBWarnings("DMI_HARDCODED_ABSOLUTE_FILENAME")
- private static Configuration createConfiguration() {
+ private static Configuration createConfiguration(final Path root) {
final Configuration configuration = new
Configuration(Configuration.VERSION_2_3_29);
configuration.setDefaultEncoding(CharsetUtils.CHARSET_NAME);
configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
try {
- configuration.setTemplateLoader(new FileTemplateLoader(new
File("/")));
+ configuration.setTemplateLoader(new
FileTemplateLoader(root.toFile()));
} catch (final IOException error) {
throw new UncheckedIOException(error);
}
@@ -58,9 +59,14 @@ final class FreeMarkerUtils {
}
@SuppressFBWarnings("TEMPLATE_INJECTION_FREEMARKER")
- static void render(final Path templateFile, final Object templateData,
final Path outputFile) {
+ static void render(
+ final Path templateDirectory,
+ final String templateFile,
+ final Object templateData,
+ final Path outputFile) {
try {
- final Template template =
CONFIGURATION.getTemplate(templateFile.toAbsolutePath().toString());
+ final Configuration configuration =
createConfiguration(templateDirectory);
+ final Template template = configuration.getTemplate(templateFile);
final Path outputFileParent = outputFile.getParent();
if (outputFileParent != null) {
Files.createDirectories(outputFileParent);
diff --git
a/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/FileTestUtils.java
b/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/FileTestUtils.java
index f7f491f..d62ea22 100644
---
a/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/FileTestUtils.java
+++
b/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/FileTestUtils.java
@@ -44,7 +44,7 @@ final class FileTestUtils {
final Path actualFilePath = actualContents.get(relativeFilePath);
final Path expectedFilePath =
expectedContents.get(relativeFilePath);
if (!Files.isDirectory(actualFilePath) ||
!Files.isDirectory(expectedFilePath)) {
-
assertThat(actualFilePath).hasSameBinaryContentAs(expectedFilePath);
+
assertThat(actualFilePath).hasSameTextualContentAs(expectedFilePath);
}
});