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>

Reply via email to