You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2023/01/30 22:39:08 UTC
[logging-log4j-tools] branch master updated: Fix Windows test problem
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 <pi...@karwasz.org>
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);
}
});