package org.jfrog.build.extractor.release; import com.google.common.collect.Maps; import com.google.common.io.Files; import org.testng.annotations.Test; import java.io.File; import java.io.FileInputStream; import java.nio.charset.Charset; import java.util.Map; import java.util.Properties; import static org.testng.Assert.*; /** * @author Noam Y. Tenne */ public class PropertiesTransformerTest { @Test public void testTransformNoEols() throws Exception { File properties = File.createTempFile("temp", "properties"); Files.write("momo=1.0popo=2.0", properties, Charset.forName("utf-8")); Map<String, String> versions = Maps.newHashMap(); versions.put("momo", "2.0"); versions.put("popo", "3.0"); boolean transformed = new PropertiesTransformer(properties, versions).transform(); assertTrue(transformed); String transformedProps = Files.toString(properties, Charset.forName("utf-8")); assertFalse(transformedProps.contains("\n"), "Unexpected EOL."); assertFalse(transformedProps.contains("\r"), "Unexpected EOL."); } @Test public void testTransformCrEols() throws Exception { File properties = File.createTempFile("temp", "properties"); Files.write("momo=1.0\rpopo=2.0\r", properties, Charset.forName("utf-8")); Map<String, String> versions = Maps.newHashMap(); versions.put("momo", "2.0"); versions.put("popo", "3.0"); boolean transformed = new PropertiesTransformer(properties, versions).transform(); assertTrue(transformed); String transformedProps = Files.toString(properties, Charset.forName("utf-8")); assertFalse(transformedProps.contains("\n"), "Unexpected EOL."); assertTrue(transformedProps.contains("\r"), "Expected a CR EOL."); assertTrue(transformedProps.endsWith("\r"), "Expected the properties to end with an EOL"); } @Test public void testTransformLfEols() throws Exception { File properties = File.createTempFile("temp", "properties"); Files.write("momo=1.0\npopo=2.0\n", properties, Charset.forName("utf-8")); Map<String, String> versions = Maps.newHashMap(); versions.put("momo", "2.0"); versions.put("popo", "3.0"); boolean transformed = new PropertiesTransformer(properties, versions).transform(); assertTrue(transformed); String transformedProps = Files.toString(properties, Charset.forName("utf-8")); assertTrue(transformedProps.contains("\n"), "Expected an LF EOL."); assertFalse(transformedProps.contains("\r"), "Unexpected EOL."); assertTrue(transformedProps.endsWith("\n"), "Expected the properties to end with an EOL"); } @Test public void testTransformBothEols() throws Exception { File properties = File.createTempFile("temp", "properties"); Files.write("momo=1.0\r\npopo=2.0\r\n", properties, Charset.forName("utf-8")); Map<String, String> versions = Maps.newHashMap(); versions.put("momo", "2.0"); versions.put("popo", "3.0"); boolean transformed = new PropertiesTransformer(properties, versions).transform(); assertTrue(transformed); String transformedProps = Files.toString(properties, Charset.forName("utf-8")); assertTrue(transformedProps.contains("\n"), "Expected an LF EOL."); assertTrue(transformedProps.contains("\r"), "Expected a CR EOL."); assertTrue(transformedProps.endsWith("\r\n"), "Expected the properties to end with an EOL"); } @Test public void testTransformWithSpaces() throws Exception { File properties = File.createTempFile("temp", "properties"); Files.write("momo = 1.0 \r\npopo = 2.0 \r\n", properties, Charset.forName("utf-8")); Map<String, String> versions = Maps.newHashMap(); versions.put("momo", "2.0"); versions.put("popo", "3.0"); boolean transformed = new PropertiesTransformer(properties, versions).transform(); assertTrue(transformed); Properties transformedProperties = new Properties(); transformedProperties.load(new FileInputStream(properties)); assertEquals(transformedProperties.getProperty("momo"), "2.0", "Unexpected transformed property."); assertEquals(transformedProperties.getProperty("popo"), "3.0", "Unexpected transformed property."); } }