Browse Source

Avoid NPE in LoggingListener

This commit avoids an NPE that could arise when implementing an
ESTestCase for test classes placed in the default package.

Relates #20269
Stian Lindhom 9 years ago
parent
commit
c2eddaf2c9

+ 2 - 1
test/framework/src/main/java/org/elasticsearch/test/junit/listeners/LoggingListener.java

@@ -47,7 +47,8 @@ public class LoggingListener extends RunListener {
 
     @Override
     public void testRunStarted(Description description) throws Exception {
-        previousPackageLoggingMap = processTestLogging(description.getTestClass().getPackage().getAnnotation(TestLogging.class));
+        Package testClassPackage = description.getTestClass().getPackage();
+        previousPackageLoggingMap = processTestLogging(testClassPackage != null ? testClassPackage.getAnnotation(TestLogging.class) : null);
         previousClassLoggingMap = processTestLogging(description.getAnnotation(TestLogging.class));
     }
 

+ 21 - 0
test/framework/src/test/java/Dummy.java

@@ -0,0 +1,21 @@
+/*
+ * Licensed to Elasticsearch under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+class Dummy {
+}

+ 9 - 0
test/framework/src/test/java/org/elasticsearch/test/test/LoggingListenerTests.java

@@ -33,6 +33,15 @@ import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.nullValue;
 
 public class LoggingListenerTests extends ESTestCase {
+
+    public void testTestRunStartedSupportsClassInDefaultPackage() throws Exception {
+        LoggingListener loggingListener = new LoggingListener();
+        Description description = Description.createTestDescription(Class.forName("Dummy"), "dummy");
+
+        // Will throw an exception without the check for testClassPackage != null in testRunStarted
+        loggingListener.testRunStarted(description);
+    }
+
     public void testCustomLevelPerMethod() throws Exception {
         LoggingListener loggingListener = new LoggingListener();