Skip to content

Commit ba9b121

Browse files
author
TheSnoozer
committed
partially revert 614975e and ensure that the plugin works when there is a relative or full path configured as output property
1 parent 2370978 commit ba9b121

File tree

3 files changed

+52
-6
lines changed

3 files changed

+52
-6
lines changed

src/main/java/pl/project13/core/GitCommitIdPlugin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ public static void runPlugin(@Nonnull Callback cb, @Nullable Properties contextP
306306
cb.getProjectName()
307307
).maybeGeneratePropertiesFile(
308308
properties,
309+
cb.getProjectBaseDir(),
309310
cb.getGenerateGitPropertiesFile(),
310311
cb.getPropertiesSourceCharset(),
311312
cb.shouldPropertiesEscapeUnicode()

src/main/java/pl/project13/core/PropertiesFileGenerator.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.io.*;
2828
import java.nio.charset.Charset;
2929
import java.nio.file.Files;
30+
import java.nio.file.Paths;
3031
import java.util.Comparator;
3132
import java.util.Properties;
3233

@@ -46,8 +47,15 @@ public PropertiesFileGenerator(LogInterface log, BuildFileChangeListener buildFi
4647
this.projectName = projectName;
4748
}
4849

49-
public void maybeGeneratePropertiesFile(@Nonnull Properties localProperties, File gitPropsFile, Charset sourceCharset, boolean escapeUnicode) throws GitCommitIdExecutionException {
50+
public void maybeGeneratePropertiesFile(
51+
@Nonnull Properties localProperties,
52+
File projectDir,
53+
File propsFile,
54+
Charset sourceCharset,
55+
boolean escapeUnicode
56+
) throws GitCommitIdExecutionException {
5057
try {
58+
final File gitPropsFile = craftPropertiesOutputFile(projectDir, propsFile);
5159
final boolean isJsonFormat = CommitIdPropertiesOutputFormat.JSON.equals(propertiesOutputFormat);
5260

5361
boolean shouldGenerate = true;
@@ -114,4 +122,15 @@ public static OrderedProperties createOrderedProperties() {
114122
.withOrdering(Comparator.nullsLast(Comparator.naturalOrder()))
115123
.build();
116124
}
125+
126+
private static File craftPropertiesOutputFile(File projectDir, File propsFile) {
127+
File returnPath;
128+
if (propsFile.isAbsolute()) {
129+
returnPath = propsFile;
130+
} else {
131+
returnPath = projectDir.toPath().resolve(propsFile.toPath()).toFile();
132+
}
133+
134+
return returnPath;
135+
}
117136
}

src/test/java/pl/project13/core/PropertiesFileGeneratorTest.java

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@
2424
import pl.project13.core.log.LogInterface;
2525
import pl.project13.core.util.BuildFileChangeListener;
2626

27+
import java.io.File;
2728
import java.io.IOException;
2829
import java.nio.file.Files;
2930
import java.nio.file.Path;
3031
import java.util.Properties;
3132

3233
import static java.nio.charset.StandardCharsets.UTF_8;
3334
import static org.junit.Assert.assertEquals;
35+
import static org.junit.Assert.assertTrue;
3436
import static org.mockito.Mockito.mock;
3537

3638
public class PropertiesFileGeneratorTest {
@@ -57,7 +59,8 @@ public void generatedPropertiesFileDoesNotEscapeUnicode() throws GitCommitIdExec
5759
properties.put(GitCommitPropertyConstant.COMMIT_MESSAGE_SHORT, "測試中文");
5860

5961
Path propertiesPath = temporaryFolder.getRoot().toPath().resolve("git.properties");
60-
propertiesFileGenerator.maybeGeneratePropertiesFile(properties, propertiesPath.toFile(), UTF_8, false);
62+
propertiesFileGenerator.maybeGeneratePropertiesFile(
63+
properties, temporaryFolder.getRoot(), propertiesPath.toFile(), UTF_8, false);
6164

6265
byte[] bytes = Files.readAllBytes(propertiesPath);
6366
String actualContent = new String(bytes, UTF_8);
@@ -76,7 +79,8 @@ public void generatedPropertiesFileEscapeUnicode() throws GitCommitIdExecutionEx
7679
properties.put(GitCommitPropertyConstant.COMMIT_MESSAGE_SHORT, "測試中文");
7780

7881
Path propertiesPath = temporaryFolder.getRoot().toPath().resolve("git.properties");
79-
propertiesFileGenerator.maybeGeneratePropertiesFile(properties, propertiesPath.toFile(), UTF_8, true);
82+
propertiesFileGenerator.maybeGeneratePropertiesFile(
83+
properties, temporaryFolder.getRoot(), propertiesPath.toFile(), UTF_8, true);
8084

8185
byte[] bytes = Files.readAllBytes(propertiesPath);
8286
String actualContent = new String(bytes, UTF_8);
@@ -94,7 +98,8 @@ public void generatedPropertiesFileDoesNotContainDateComment() throws GitCommitI
9498
properties.put(GitCommitPropertyConstant.BRANCH, "develop");
9599

96100
Path propertiesPath = temporaryFolder.getRoot().toPath().resolve("git.properties");
97-
propertiesFileGenerator.maybeGeneratePropertiesFile(properties, propertiesPath.toFile(), UTF_8, true);
101+
propertiesFileGenerator.maybeGeneratePropertiesFile(
102+
properties, temporaryFolder.getRoot(), propertiesPath.toFile(), UTF_8, true);
98103

99104
byte[] bytes = Files.readAllBytes(propertiesPath);
100105
String actualContent = new String(bytes, UTF_8);
@@ -111,10 +116,12 @@ public void rereadGeneratedPropertiesFile() throws GitCommitIdExecutionException
111116
properties.put(GitCommitPropertyConstant.BRANCH, "develop");
112117

113118
Path propertiesPath = temporaryFolder.getRoot().toPath().resolve("git.properties");
114-
propertiesFileGenerator.maybeGeneratePropertiesFile(properties, propertiesPath.toFile(), UTF_8, true);
119+
propertiesFileGenerator.maybeGeneratePropertiesFile(
120+
properties, temporaryFolder.getRoot(), propertiesPath.toFile(), UTF_8, true);
115121

116122
// Re-read the generated properties file.
117-
propertiesFileGenerator.maybeGeneratePropertiesFile(properties, propertiesPath.toFile(), UTF_8, true);
123+
propertiesFileGenerator.maybeGeneratePropertiesFile(
124+
properties, temporaryFolder.getRoot(), propertiesPath.toFile(), UTF_8, true);
118125

119126
byte[] bytes = Files.readAllBytes(propertiesPath);
120127
String actualContent = new String(bytes, UTF_8);
@@ -123,4 +130,23 @@ public void rereadGeneratedPropertiesFile() throws GitCommitIdExecutionException
123130
+ "commit.id.full=b5993378ffadd1f84dc8da220b9204d157ec0f29\n";
124131
assertEquals(expectedContent, actualContent);
125132
}
133+
134+
@Test
135+
public void worksWithRelativeFileLocation() throws GitCommitIdExecutionException, IOException {
136+
Properties properties = new Properties();
137+
properties.put(GitCommitPropertyConstant.COMMIT_ID_FULL, "b5993378ffadd1f84dc8da220b9204d157ec0f29");
138+
139+
Path relativePath = new File("src/blah/blub/git.properties").toPath();
140+
propertiesFileGenerator.maybeGeneratePropertiesFile(
141+
properties, temporaryFolder.getRoot(), relativePath.toFile(), UTF_8, false);
142+
143+
144+
Path absolutePath = temporaryFolder.getRoot().toPath().resolve("src/blah/blub/git.properties");
145+
assertTrue(absolutePath.toFile().exists());
146+
byte[] bytes = Files.readAllBytes(absolutePath);
147+
String actualContent = new String(bytes, UTF_8);
148+
String expectedContent = "#Generated by Git-Commit-Id-Plugin\n"
149+
+ "commit.id.full=b5993378ffadd1f84dc8da220b9204d157ec0f29\n";
150+
assertEquals(expectedContent, actualContent);
151+
}
126152
}

0 commit comments

Comments
 (0)