diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/WebTest.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/WebTest.java
index 1ea710b..fe7b4b2 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/WebTest.java
@@ -37,7 +37,7 @@
         port = args[1];
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for @WebServlet");
         WebTest webTest = new WebTest(args);
@@ -46,7 +46,7 @@
     }
 
     public void doTest() {
-        try { 
+        try {
             invoke();
         } catch (Exception ex) {
             System.out.println(TEST_NAME + " test failed");
@@ -56,7 +56,7 @@
     }
 
     private void invoke() throws Exception {
-        
+
         String url = "http://" + host + ":" + port + contextRoot
                      + "/myurl";
         System.out.println("opening connection to " + url);
@@ -95,10 +95,10 @@
             if (EXPECTED_RESPONSE.equals(line)) {
                 stat.addStatus(TEST_NAME, stat.PASS);
             } else {
-                System.out.println("Wrong response. Expected: " + 
+                System.out.println("Wrong response. Expected: " +
                         EXPECTED_RESPONSE + ", received: " + line);
                 stat.addStatus(TEST_NAME, stat.FAIL);
             }
-        }    
+        }
     }
 }
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/build.properties b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/build.properties
index bb7bc8d..5d7ede5 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/build.properties
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="cdi"/>
 <property name="appname" value="${module}-servlet-annotation-with-web-inf-lib"/>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/build.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/build.xml
index 7f7f3ee..f18141b 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/build.xml
@@ -40,7 +40,7 @@
         </delete>
         <delete file="lib/bean-lib.jar"/>
     </target>
-       
+
     <target name="compile" depends="clean">
         <!-- create WEB-INF/lib/bean-lib.jar -->
         <mkdir dir="${build.classes.dir}"/>
@@ -54,8 +54,8 @@
             <fileset dir="${build.classes.dir}"/>
         </jar>
         <delete dir="${build.classes.dir}"/>
-   
-        <!-- compile test servlet -->     
+
+        <!-- compile test servlet -->
         <mkdir dir="${build.classes.dir}"/>
         <echo message="common.xml: Compiling test source files" level="verbose"/>
         <mkdir dir="servlet"/>
@@ -63,23 +63,23 @@
     </target>
 
     <target name="build" depends="compile">
-       <property name="hasWebclient" value="yes"/> 
+       <property name="hasWebclient" value="yes"/>
         <antcall target="webclient-war-common">
             <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/> 
+            <param name="webclient.war.classes" value="**/*.class"/>
         </antcall>
 
         <javac srcdir="." classpath="${env.APS_HOME}/lib/reportbuilder.jar"
                includes="WebTest.java"/>
 
-    </target> 
+    </target>
 
     <target name="build-publish-war" depends="build, publish-war-common" />
-    
+
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest">
           <arg value="${http.host}"/>
@@ -91,10 +91,10 @@
          </classpath>
         </java>
     </target>
- 
+
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/servlet/TestBean.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/servlet/TestBean.java
index c696caf..608c4c7 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/servlet/TestBean.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/servlet/TestBean.java
@@ -14,8 +14,8 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-//Simple TestBean to test CDI. 
-public class TestBean 
+//Simple TestBean to test CDI.
+public class TestBean
 {
 
 }
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/servlet/TestServlet.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/servlet/TestServlet.java
index 908a5cd..8bd9e05 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/servlet/TestServlet.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/servlet/TestServlet.java
@@ -41,8 +41,8 @@
     @Inject TestBeanInWebInfLib tbiwil;
 
     BeanManager bm1;
-    
-    @Inject 
+
+    @Inject
     private transient org.jboss.logging.Logger log;
 
     public void service(HttpServletRequest req, HttpServletResponse res)
@@ -72,14 +72,14 @@
         //via BeanManager of WAR
         Set warBeans = bm.getBeans(TestBean.class,new AnnotationLiteral<Any>() {});
         if (warBeans.size() != 1) msg += "TestBean in WAR is not available via the WAR BeanManager";
-        
+
         Set webinfLibBeans = bm.getBeans(TestBeanInWebInfLib.class,new AnnotationLiteral<Any>() {});
         if (webinfLibBeans.size() != 1) msg += "TestBean in WEB-INF/lib is not available via the WAR BeanManager";
         System.out.println("Test Bean from WEB-INF/lib via BeanManager:" + webinfLibBeans);
-        
+
         //Test injection into WEB-INF/lib beans
         msg += tbiwil.testInjection();
-        
+
         writer.write("initParams: " + msg + "\n");
     }
 }
