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