test/jdk/java/util/spi/ToolProviderTest.java
changeset 53927 03924ad3f4d0
parent 47216 71c04702a3d5
--- a/test/jdk/java/util/spi/ToolProviderTest.java	Tue Feb 19 16:13:05 2019 +0000
+++ b/test/jdk/java/util/spi/ToolProviderTest.java	Tue Feb 26 13:14:26 2019 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,7 +28,6 @@
  * @run main/othervm ToolProviderTest
  */
 
-import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.nio.file.Files;
@@ -46,6 +45,10 @@
     void run() throws Exception {
         initServices();
 
+        System.out.println("Validate an NPE is thrown with null arguments");
+
+        testNullArgs();
+
         System.out.println("test without security manager present:");
         test();
 
@@ -63,6 +66,33 @@
         }
     }
 
+    private void testNullArgs() {
+        ToolProvider testProvider = ToolProvider.findFirst("test").get();
+
+        // out null check
+        expectNullPointerException(() -> testProvider.run(null, System.err));
+
+        // err null check
+        expectNullPointerException(() -> testProvider.run(System.out, null));
+
+        // args array null check
+        expectNullPointerException(() ->
+                testProvider.run(System.out, System.err, (String[]) null));
+
+        // args array elements null check
+        expectNullPointerException(() ->
+                testProvider.run(System.out, System.err, (String) null));
+    }
+
+    private static void expectNullPointerException(Runnable test) {
+        try {
+            test.run();
+            throw new Error("NullPointerException not thrown");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
     private void initServices() throws IOException {
         Path testClasses = Paths.get(System.getProperty("test.classes"));
         Path services = testClasses.resolve(Paths.get("META-INF", "services"));