This is an automated email from the ASF dual-hosted git repository. billblough pushed a commit to branch hermetic-tests in repository https://gitbox.apache.org/repos/asf/axis-axis2-java-core.git
commit 992fc018ce5bea89b51a9067f1cd4570e8d21a4f Author: Andreas Veithen <veit...@apache.org> AuthorDate: Mon Jan 16 17:00:36 2017 +0000 Create infrastructure to enforce test hermeticity. --- pom.xml | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/pom.xml b/pom.xml index 592e1e6..7601553 100644 --- a/pom.xml +++ b/pom.xml @@ -559,6 +559,8 @@ we can't use the project.version variable directly because of the dot. See http://maven.apache.org/plugins/maven-site-plugin/examples/creating-content.html --> <axis2_version>${project.version}</axis2_version> + + <hermeticTests>true</hermeticTests> </properties> <pluginRepositories> <pluginRepository> @@ -1322,6 +1324,7 @@ <value>${project.build.directory}/tmp</value> </property> </systemProperties> + <argLine>${securityManagerArgs}</argLine> </configuration> </plugin> <plugin> @@ -1373,6 +1376,51 @@ </configuration> </execution> <execution> + <id>generate-policy-file</id> + <phase>generate-test-resources</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <scripts> + <script><![CDATA[ + import static groovy.json.StringEscapeUtils.escapeJava + + if (project.packaging != 'pom' && project.properties['hermeticTests'] == 'true') { + new File(project.build.directory, "test.policy").withWriter { out -> + out.println "grant {" + out.println """ permission java.io.FilePermission "${escapeJava(System.properties.'java.home')}\${/}-", "read";""" + out.println """ permission java.io.FilePermission "${escapeJava(session.settings.localRepository)}\${/}-", "read";""" + session.sortedProjects.each({ + out.println """ permission java.io.FilePermission "${escapeJava(it.build.directory)}\${/}*", "read";""" + }) + out.println """ permission java.io.FilePermission "${escapeJava(project.basedir.absolutePath)}", "read";""" + out.println """ permission java.io.FilePermission "${escapeJava(project.basedir.absolutePath)}\${/}-", "read";""" + out.println """ permission java.io.FilePermission "${escapeJava(project.build.directory)}", "read,write";""" + out.println """ permission java.io.FilePermission "${escapeJava(project.build.directory)}\${/}-", "read,write,delete";""" + out.println """ permission java.lang.RuntimePermission "*";""" + out.println """ permission java.lang.reflect.ReflectPermission "*";""" + out.println """ permission java.net.NetPermission "*";""" + out.println """ permission java.net.SocketPermission "localhost", "connect,listen,accept,resolve";""" + out.println """ permission java.security.SecurityPermission "*";""" + out.println """ permission java.util.PropertyPermission "*", "read,write";""" + out.println """ permission javax.management.MBeanPermission "*", "*";""" + out.println """ permission javax.management.MBeanServerPermission "*";""" + out.println """ permission javax.management.MBeanTrustPermission "*";""" + out.println """ permission javax.xml.ws.WebServicePermission "publishEndpoint";""" + out.println """ permission org.osgi.framework.AdminPermission "*", "*";""" + out.println """ permission org.osgi.framework.ServicePermission "*", "register,get";""" + out.println "};" + } + project.properties['securityManagerArgs'] = '-Djava.security.manager -Djava.security.policy=' + project.build.directory.replace('\\', '/') + '/test.policy' + } else { + project.properties['securityManagerArgs'] = '' + } + ]]></script> + </scripts> + </configuration> + </execution> + <execution> <id>prepare-site</id> <phase>pre-site</phase> <goals>