2020-04-27 14:52:31 +02:00
|
|
|
|
2019-10-17 18:38:30 +02:00
|
|
|
package eu.dnetlib.maven.plugin.properties;
|
|
|
|
|
2020-04-18 12:42:58 +02:00
|
|
|
import static eu.dnetlib.maven.plugin.properties.WritePredefinedProjectProperties.PROPERTY_PREFIX_ENV;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
import static org.mockito.Mockito.doReturn;
|
|
|
|
import static org.mockito.Mockito.lenient;
|
|
|
|
|
|
|
|
import java.io.*;
|
|
|
|
import java.util.Properties;
|
2020-04-28 11:23:29 +02:00
|
|
|
|
2019-10-17 18:38:30 +02:00
|
|
|
import org.apache.maven.plugin.MojoExecutionException;
|
|
|
|
import org.apache.maven.project.MavenProject;
|
2020-03-25 17:23:22 +01:00
|
|
|
import org.junit.jupiter.api.*;
|
2020-03-25 16:47:39 +01:00
|
|
|
import org.junit.jupiter.api.extension.ExtendWith;
|
|
|
|
import org.junit.jupiter.api.io.TempDir;
|
2019-10-17 18:38:30 +02:00
|
|
|
import org.mockito.Mock;
|
2020-03-25 17:23:22 +01:00
|
|
|
import org.mockito.MockitoAnnotations;
|
2020-03-25 16:47:39 +01:00
|
|
|
import org.mockito.junit.jupiter.MockitoExtension;
|
|
|
|
|
2020-04-18 12:42:58 +02:00
|
|
|
/** @author mhorst, claudio.atzori */
|
2020-03-25 16:47:39 +01:00
|
|
|
@ExtendWith(MockitoExtension.class)
|
2021-08-11 12:13:22 +02:00
|
|
|
class WritePredefinedProjectPropertiesTest {
|
2019-10-17 18:38:30 +02:00
|
|
|
|
2020-04-27 14:52:31 +02:00
|
|
|
@Mock
|
|
|
|
private MavenProject mavenProject;
|
|
|
|
|
|
|
|
private WritePredefinedProjectProperties mojo;
|
|
|
|
|
|
|
|
@BeforeEach
|
|
|
|
public void init(@TempDir File testFolder) {
|
|
|
|
MockitoAnnotations.initMocks(this);
|
|
|
|
mojo = new WritePredefinedProjectProperties();
|
|
|
|
mojo.outputFile = getPropertiesFileLocation(testFolder);
|
|
|
|
mojo.project = mavenProject;
|
|
|
|
lenient().doReturn(new Properties()).when(mavenProject).getProperties();
|
|
|
|
}
|
|
|
|
|
|
|
|
// ----------------------------------- TESTS ---------------------------------------------
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteEmpty() throws Exception {
|
2020-04-27 14:52:31 +02:00
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(mojo.outputFile.getParentFile());
|
|
|
|
assertEquals(0, storedProperties.size());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteWithProjectProperties() throws Exception {
|
2020-04-27 14:52:31 +02:00
|
|
|
// given
|
|
|
|
String key = "projectPropertyKey";
|
|
|
|
String value = "projectPropertyValue";
|
|
|
|
Properties projectProperties = new Properties();
|
|
|
|
projectProperties.setProperty(key, value);
|
|
|
|
doReturn(projectProperties).when(mavenProject).getProperties();
|
|
|
|
|
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(mojo.outputFile.getParentFile());
|
|
|
|
assertEquals(1, storedProperties.size());
|
|
|
|
assertTrue(storedProperties.containsKey(key));
|
|
|
|
assertEquals(value, storedProperties.getProperty(key));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test()
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteWithProjectPropertiesAndInvalidOutputFile(@TempDir File testFolder) {
|
2020-04-27 14:52:31 +02:00
|
|
|
// given
|
|
|
|
String key = "projectPropertyKey";
|
|
|
|
String value = "projectPropertyValue";
|
|
|
|
Properties projectProperties = new Properties();
|
|
|
|
projectProperties.setProperty(key, value);
|
|
|
|
doReturn(projectProperties).when(mavenProject).getProperties();
|
|
|
|
mojo.outputFile = testFolder;
|
|
|
|
|
|
|
|
// execute
|
2023-09-07 11:58:59 +02:00
|
|
|
try {
|
|
|
|
mojo.execute();
|
|
|
|
Assertions.assertTrue(false); // not reached
|
|
|
|
} catch (Exception e) {
|
|
|
|
Assertions
|
|
|
|
.assertTrue(
|
|
|
|
MojoExecutionException.class.isAssignableFrom(e.getClass()) ||
|
|
|
|
IllegalArgumentException.class.isAssignableFrom(e.getClass()));
|
|
|
|
}
|
2020-04-27 14:52:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteWithProjectPropertiesExclusion(@TempDir File testFolder) throws Exception {
|
2020-04-27 14:52:31 +02:00
|
|
|
// given
|
|
|
|
String key = "projectPropertyKey";
|
|
|
|
String value = "projectPropertyValue";
|
|
|
|
String excludedKey = "excludedPropertyKey";
|
|
|
|
String excludedValue = "excludedPropertyValue";
|
|
|
|
Properties projectProperties = new Properties();
|
|
|
|
projectProperties.setProperty(key, value);
|
|
|
|
projectProperties.setProperty(excludedKey, excludedValue);
|
|
|
|
doReturn(projectProperties).when(mavenProject).getProperties();
|
|
|
|
mojo.setExclude(excludedKey);
|
|
|
|
|
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(testFolder);
|
|
|
|
assertEquals(1, storedProperties.size());
|
|
|
|
assertTrue(storedProperties.containsKey(key));
|
|
|
|
assertEquals(value, storedProperties.getProperty(key));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteWithProjectPropertiesInclusion(@TempDir File testFolder) throws Exception {
|
2020-04-27 14:52:31 +02:00
|
|
|
// given
|
|
|
|
String key = "projectPropertyKey";
|
|
|
|
String value = "projectPropertyValue";
|
|
|
|
String includedKey = "includedPropertyKey";
|
|
|
|
String includedValue = "includedPropertyValue";
|
|
|
|
Properties projectProperties = new Properties();
|
|
|
|
projectProperties.setProperty(key, value);
|
|
|
|
projectProperties.setProperty(includedKey, includedValue);
|
|
|
|
doReturn(projectProperties).when(mavenProject).getProperties();
|
|
|
|
mojo.setInclude(includedKey);
|
|
|
|
|
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(testFolder);
|
|
|
|
assertEquals(1, storedProperties.size());
|
|
|
|
assertTrue(storedProperties.containsKey(includedKey));
|
|
|
|
assertEquals(includedValue, storedProperties.getProperty(includedKey));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteIncludingPropertyKeysFromFile(@TempDir File testFolder) throws Exception {
|
2020-04-27 14:52:31 +02:00
|
|
|
// given
|
|
|
|
String key = "projectPropertyKey";
|
|
|
|
String value = "projectPropertyValue";
|
|
|
|
String includedKey = "includedPropertyKey";
|
|
|
|
String includedValue = "includedPropertyValue";
|
|
|
|
Properties projectProperties = new Properties();
|
|
|
|
projectProperties.setProperty(key, value);
|
|
|
|
projectProperties.setProperty(includedKey, includedValue);
|
|
|
|
doReturn(projectProperties).when(mavenProject).getProperties();
|
|
|
|
|
|
|
|
File includedPropertiesFile = new File(testFolder, "included.properties");
|
|
|
|
Properties includedProperties = new Properties();
|
|
|
|
includedProperties.setProperty(includedKey, "irrelevantValue");
|
|
|
|
includedProperties.store(new FileWriter(includedPropertiesFile), null);
|
|
|
|
|
|
|
|
mojo.setIncludePropertyKeysFromFiles(new String[] {
|
|
|
|
includedPropertiesFile.getAbsolutePath()
|
|
|
|
});
|
|
|
|
|
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(testFolder);
|
|
|
|
assertEquals(1, storedProperties.size());
|
|
|
|
assertTrue(storedProperties.containsKey(includedKey));
|
|
|
|
assertEquals(includedValue, storedProperties.getProperty(includedKey));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteIncludingPropertyKeysFromClasspathResource(@TempDir File testFolder)
|
2020-04-27 14:52:31 +02:00
|
|
|
throws Exception {
|
|
|
|
// given
|
|
|
|
String key = "projectPropertyKey";
|
|
|
|
String value = "projectPropertyValue";
|
|
|
|
String includedKey = "includedPropertyKey";
|
|
|
|
String includedValue = "includedPropertyValue";
|
|
|
|
Properties projectProperties = new Properties();
|
|
|
|
projectProperties.setProperty(key, value);
|
|
|
|
projectProperties.setProperty(includedKey, includedValue);
|
|
|
|
doReturn(projectProperties).when(mavenProject).getProperties();
|
|
|
|
|
|
|
|
mojo
|
|
|
|
.setIncludePropertyKeysFromFiles(
|
|
|
|
new String[] {
|
|
|
|
"/eu/dnetlib/maven/plugin/properties/included.properties"
|
|
|
|
});
|
|
|
|
|
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(testFolder);
|
|
|
|
assertEquals(1, storedProperties.size());
|
|
|
|
assertTrue(storedProperties.containsKey(includedKey));
|
|
|
|
assertEquals(includedValue, storedProperties.getProperty(includedKey));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteIncludingPropertyKeysFromBlankLocation() {
|
2020-04-27 14:52:31 +02:00
|
|
|
// given
|
|
|
|
String key = "projectPropertyKey";
|
|
|
|
String value = "projectPropertyValue";
|
|
|
|
String includedKey = "includedPropertyKey";
|
|
|
|
String includedValue = "includedPropertyValue";
|
|
|
|
Properties projectProperties = new Properties();
|
|
|
|
projectProperties.setProperty(key, value);
|
|
|
|
projectProperties.setProperty(includedKey, includedValue);
|
|
|
|
doReturn(projectProperties).when(mavenProject).getProperties();
|
|
|
|
|
|
|
|
mojo.setIncludePropertyKeysFromFiles(new String[] {
|
|
|
|
""
|
|
|
|
});
|
|
|
|
|
|
|
|
// execute
|
|
|
|
Assertions.assertThrows(MojoExecutionException.class, () -> mojo.execute());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteIncludingPropertyKeysFromXmlFile(@TempDir File testFolder)
|
2020-04-27 14:52:31 +02:00
|
|
|
throws Exception {
|
|
|
|
// given
|
|
|
|
String key = "projectPropertyKey";
|
|
|
|
String value = "projectPropertyValue";
|
|
|
|
String includedKey = "includedPropertyKey";
|
|
|
|
String includedValue = "includedPropertyValue";
|
|
|
|
Properties projectProperties = new Properties();
|
|
|
|
projectProperties.setProperty(key, value);
|
|
|
|
projectProperties.setProperty(includedKey, includedValue);
|
|
|
|
doReturn(projectProperties).when(mavenProject).getProperties();
|
|
|
|
|
|
|
|
File includedPropertiesFile = new File(testFolder, "included.xml");
|
|
|
|
Properties includedProperties = new Properties();
|
|
|
|
includedProperties.setProperty(includedKey, "irrelevantValue");
|
|
|
|
includedProperties.storeToXML(new FileOutputStream(includedPropertiesFile), null);
|
|
|
|
|
|
|
|
mojo.setIncludePropertyKeysFromFiles(new String[] {
|
|
|
|
includedPropertiesFile.getAbsolutePath()
|
|
|
|
});
|
|
|
|
|
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(testFolder);
|
|
|
|
assertEquals(1, storedProperties.size());
|
|
|
|
assertTrue(storedProperties.containsKey(includedKey));
|
|
|
|
assertEquals(includedValue, storedProperties.getProperty(includedKey));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteIncludingPropertyKeysFromInvalidXmlFile(@TempDir File testFolder)
|
2020-04-27 14:52:31 +02:00
|
|
|
throws Exception {
|
|
|
|
// given
|
|
|
|
String key = "projectPropertyKey";
|
|
|
|
String value = "projectPropertyValue";
|
|
|
|
String includedKey = "includedPropertyKey";
|
|
|
|
String includedValue = "includedPropertyValue";
|
|
|
|
Properties projectProperties = new Properties();
|
|
|
|
projectProperties.setProperty(key, value);
|
|
|
|
projectProperties.setProperty(includedKey, includedValue);
|
|
|
|
doReturn(projectProperties).when(mavenProject).getProperties();
|
|
|
|
|
|
|
|
File includedPropertiesFile = new File(testFolder, "included.xml");
|
|
|
|
Properties includedProperties = new Properties();
|
|
|
|
includedProperties.setProperty(includedKey, "irrelevantValue");
|
|
|
|
includedProperties.store(new FileOutputStream(includedPropertiesFile), null);
|
|
|
|
|
|
|
|
mojo.setIncludePropertyKeysFromFiles(new String[] {
|
|
|
|
includedPropertiesFile.getAbsolutePath()
|
|
|
|
});
|
|
|
|
|
|
|
|
// execute
|
|
|
|
Assertions.assertThrows(MojoExecutionException.class, () -> mojo.execute());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteWithQuietModeOn(@TempDir File testFolder) throws Exception {
|
2020-04-27 14:52:31 +02:00
|
|
|
// given
|
|
|
|
mojo.setQuiet(true);
|
|
|
|
mojo.setIncludePropertyKeysFromFiles(new String[] {
|
|
|
|
"invalid location"
|
|
|
|
});
|
|
|
|
|
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(testFolder);
|
|
|
|
assertEquals(0, storedProperties.size());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteIncludingPropertyKeysFromInvalidFile() {
|
2020-04-27 14:52:31 +02:00
|
|
|
// given
|
|
|
|
mojo.setIncludePropertyKeysFromFiles(new String[] {
|
|
|
|
"invalid location"
|
|
|
|
});
|
|
|
|
|
|
|
|
// execute
|
|
|
|
Assertions.assertThrows(MojoExecutionException.class, () -> mojo.execute());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteWithEnvironmentProperties(@TempDir File testFolder) throws Exception {
|
2020-04-27 14:52:31 +02:00
|
|
|
// given
|
|
|
|
mojo.setIncludeEnvironmentVariables(true);
|
|
|
|
|
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(testFolder);
|
|
|
|
assertTrue(storedProperties.size() > 0);
|
|
|
|
for (Object currentKey : storedProperties.keySet()) {
|
|
|
|
assertTrue(((String) currentKey).startsWith(PROPERTY_PREFIX_ENV));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteWithSystemProperties(@TempDir File testFolder) throws Exception {
|
2020-04-27 14:52:31 +02:00
|
|
|
// given
|
|
|
|
String key = "systemPropertyKey";
|
|
|
|
String value = "systemPropertyValue";
|
|
|
|
System.setProperty(key, value);
|
|
|
|
mojo.setIncludeSystemProperties(true);
|
|
|
|
|
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(testFolder);
|
|
|
|
assertTrue(storedProperties.size() > 0);
|
|
|
|
assertTrue(storedProperties.containsKey(key));
|
|
|
|
assertEquals(value, storedProperties.getProperty(key));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2021-08-11 12:13:22 +02:00
|
|
|
void testExecuteWithSystemPropertiesAndEscapeChars(@TempDir File testFolder)
|
2020-04-27 14:52:31 +02:00
|
|
|
throws Exception {
|
|
|
|
// given
|
|
|
|
String key = "systemPropertyKey ";
|
|
|
|
String value = "systemPropertyValue";
|
|
|
|
System.setProperty(key, value);
|
|
|
|
mojo.setIncludeSystemProperties(true);
|
|
|
|
String escapeChars = "cr,lf,tab,|";
|
|
|
|
mojo.setEscapeChars(escapeChars);
|
|
|
|
|
|
|
|
// execute
|
|
|
|
mojo.execute();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
assertTrue(mojo.outputFile.exists());
|
|
|
|
Properties storedProperties = getStoredProperties(testFolder);
|
|
|
|
assertTrue(storedProperties.size() > 0);
|
|
|
|
assertFalse(storedProperties.containsKey(key));
|
|
|
|
assertTrue(storedProperties.containsKey(key.trim()));
|
|
|
|
assertEquals(value, storedProperties.getProperty(key.trim()));
|
|
|
|
}
|
|
|
|
|
|
|
|
// ----------------------------------- PRIVATE -------------------------------------------
|
|
|
|
|
|
|
|
private File getPropertiesFileLocation(File testFolder) {
|
|
|
|
return new File(testFolder, "test.properties");
|
|
|
|
}
|
|
|
|
|
|
|
|
private Properties getStoredProperties(File testFolder)
|
2020-04-29 19:09:07 +02:00
|
|
|
throws IOException {
|
2020-04-27 14:52:31 +02:00
|
|
|
Properties properties = new Properties();
|
|
|
|
properties.load(new FileInputStream(getPropertiesFileLocation(testFolder)));
|
|
|
|
return properties;
|
|
|
|
}
|
2019-10-17 18:38:30 +02:00
|
|
|
}
|