|
|
|
@@ -23,16 +23,60 @@ import org.junit.Before; |
|
|
|
import org.junit.Ignore; |
|
|
|
import org.junit.Rule; |
|
|
|
import org.junit.Test; |
|
|
|
import org.junit.runner.RunWith; |
|
|
|
import org.junit.runners.Parameterized; |
|
|
|
|
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.Collection; |
|
|
|
|
|
|
|
import static org.junit.Assert.assertEquals; |
|
|
|
|
|
|
|
/** |
|
|
|
* class to look at how we expand properties |
|
|
|
*/ |
|
|
|
@RunWith(Parameterized.class) |
|
|
|
public class PropertyExpansionTest { |
|
|
|
|
|
|
|
@Parameterized.Parameters(name = "expand \"{0}\" => \"{1}\"") |
|
|
|
public static Collection<Object[]> targets() { |
|
|
|
return Arrays.asList(new Object [][] { |
|
|
|
/* property expansion */ |
|
|
|
{"", ""}, |
|
|
|
{"$", "$"}, |
|
|
|
{"$$-", "$-"}, |
|
|
|
{"$$", "$"}, |
|
|
|
{"a${expanded}b", "aEXPANDEDb"}, |
|
|
|
{"${expanded}${expanded}", "EXPANDEDEXPANDED"}, |
|
|
|
{"$$$", "$$"}, |
|
|
|
{"$$$$-", "$$-"}, |
|
|
|
{"", ""}, |
|
|
|
{"Class$$subclass", "Class$subclass"}, |
|
|
|
/* dollar passthrough */ |
|
|
|
{"$-", "$-"}, |
|
|
|
{"Class$subclass", "Class$subclass"}, |
|
|
|
{"$$$-", "$$-"}, |
|
|
|
{"$$$$$", "$$$"}, |
|
|
|
{"${unassigned.property}", "${unassigned.property}"}, |
|
|
|
{"a$b", "a$b"}, |
|
|
|
{"$}}", "$}}"} |
|
|
|
/* old things |
|
|
|
{"Class$subclass", "Classsubclass"}, |
|
|
|
{"$$$-", "$-"}, |
|
|
|
{"a$b", "ab"}, |
|
|
|
{"$}}", "}}"}, |
|
|
|
*/ |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Parameterized.Parameter |
|
|
|
public String input; |
|
|
|
|
|
|
|
@Parameterized.Parameter(1) |
|
|
|
public String expected; |
|
|
|
|
|
|
|
@Rule |
|
|
|
public BuildFileRule buildRule = new BuildFileRule(); |
|
|
|
|
|
|
|
/** |
|
|
|
* we bind to an existing test file because we are too lazy to write our |
|
|
|
* own, and we don't really care what it is |
|
|
|
@@ -40,58 +84,15 @@ public class PropertyExpansionTest { |
|
|
|
@Before |
|
|
|
public void setUp() { |
|
|
|
buildRule.configureProject("src/etc/testcases/core/immutable.xml"); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* run through the test cases of expansion |
|
|
|
*/ |
|
|
|
@Test |
|
|
|
public void testPropertyExpansion() { |
|
|
|
assertExpandsTo("", ""); |
|
|
|
assertExpandsTo("$", "$"); |
|
|
|
assertExpandsTo("$$-", "$-"); |
|
|
|
assertExpandsTo("$$", "$"); |
|
|
|
buildRule.getProject().setProperty("expanded", "EXPANDED"); |
|
|
|
assertExpandsTo("a${expanded}b", "aEXPANDEDb"); |
|
|
|
assertExpandsTo("${expanded}${expanded}", "EXPANDEDEXPANDED"); |
|
|
|
assertExpandsTo("$$$", "$$"); |
|
|
|
assertExpandsTo("$$$$-", "$$-"); |
|
|
|
assertExpandsTo("", ""); |
|
|
|
assertExpandsTo("Class$$subclass", "Class$subclass"); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* new things we want |
|
|
|
* the test itself |
|
|
|
*/ |
|
|
|
@Test |
|
|
|
public void testDollarPassthru() { |
|
|
|
assertExpandsTo("$-", "$-"); |
|
|
|
assertExpandsTo("Class$subclass", "Class$subclass"); |
|
|
|
assertExpandsTo("$$$-", "$$-"); |
|
|
|
assertExpandsTo("$$$$$", "$$$"); |
|
|
|
assertExpandsTo("${unassigned.property}", "${unassigned.property}"); |
|
|
|
assertExpandsTo("a$b", "a$b"); |
|
|
|
assertExpandsTo("$}}", "$}}"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* old things we don't want; not a test anymore |
|
|
|
*/ |
|
|
|
@Test |
|
|
|
@Ignore("Previously disabled through naming convention") |
|
|
|
public void oldtestQuirkyLegacyBehavior() { |
|
|
|
assertExpandsTo("Class$subclass", "Classsubclass"); |
|
|
|
assertExpandsTo("$$$-", "$-"); |
|
|
|
assertExpandsTo("a$b", "ab"); |
|
|
|
assertExpandsTo("$}}", "}}"); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* little helper method to validate stuff |
|
|
|
*/ |
|
|
|
private void assertExpandsTo(String source, String expected) { |
|
|
|
assertEquals(source, expected, buildRule.getProject().replaceProperties(source)); |
|
|
|
public void test() { |
|
|
|
assertEquals(input, expected, buildRule.getProject().replaceProperties(input)); |
|
|
|
} |
|
|
|
|
|
|
|
} |