Index: src/test/api/java/org/apache/harmony/security/tests/java/security/PolicyTest.java
===================================================================
--- src/test/api/java/org/apache/harmony/security/tests/java/security/PolicyTest.java (revision 494741)
+++ src/test/api/java/org/apache/harmony/security/tests/java/security/PolicyTest.java (working copy)
@@ -22,7 +22,9 @@
package org.apache.harmony.security.tests.java.security;
+import java.net.URL;
import java.security.CodeSource;
+import java.security.Permission;
import java.security.PermissionCollection;
import java.security.Policy;
import java.security.ProtectionDomain;
@@ -35,6 +37,9 @@
import org.apache.harmony.security.tests.support.SecurityChecker;
+import tests.support.Support_Exec;
+import tests.support.resource.Support_Resources;
+
/**
* Tests for Policy
*/
@@ -158,4 +163,45 @@
assertTrue(c.contains(sp));
//no check for static permissions
}
+
+ /**
+ * Test property expansion in policy files
+ */
+ public void testPropertyExpansion() throws Exception {
+
+ String policyFile = Support_Resources
+ .getAbsoluteResourcePath("PolicyTest.txt");
+
+ String[] arg = new String[] { "-Dtest.bin.dir=api",
+ "-Djava.security.policy=" + policyFile,
+ CodeBasePropertyExpansion.class.getName() };
+
+ Support_Exec.execJava(arg, null, true);
+ }
+
+ /**
+ * Test for property expansion in codeBase URL
+ */
+ public static class CodeBasePropertyExpansion {
+ public static void main(String[] args) throws Exception {
+
+ // Regression for HARMONY-2910
+ Policy p = Policy.getPolicy();
+ CodeSource codeSource = new CodeSource(new URL("file:api/*"),
+ (java.security.cert.Certificate[]) null);
+
+ PermissionCollection pCollection = p.getPermissions(codeSource);
+ Enumeration elements = pCollection.elements();
+
+ SecurityPermission perm = new SecurityPermission(
+ "codeBaseForPolicyTest");
+
+ while (elements.hasMoreElements()) {
+ if (elements.nextElement().equals(perm)) {
+ return; // passed
+ }
+ }
+ fail("Failed to find SecurityPermission");
+ }
+ }
}
Index: src/test/resources/PolicyTest.txt
===================================================================
--- src/test/resources/PolicyTest.txt (revision 0)
+++ src/test/resources/PolicyTest.txt (revision 0)
@@ -0,0 +1,3 @@
+grant codeBase "file:${test.bin.dir}/-" {
+ permission java.security.SecurityPermission "codeBaseForPolicyTest";
+};
Property changes on: src\test\resources\PolicyTest.txt
___________________________________________________________________
Name: svn:eol-style
+ native