SLING-5033 - return 404 if no tests found to execute

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1703597 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java b/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java
index ec27d98..adc3ce3 100644
--- a/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java
+++ b/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java
@@ -104,6 +104,18 @@
         }
 
         final TestSelector selector = getTestSelector(request);
+        final List<String> testNames = getTestNames(selector, forceReload);
+        
+        // 404 if no tests found
+        if(testNames.isEmpty()) {
+            final String msg = 
+            "WARNING: no test classes found for selector " + selector
+            + ", check the requirements of the active " +
+            "TestsProvider services for how to supply tests.";
+            response.sendError(HttpServletResponse.SC_NOT_FOUND, msg);
+            return;
+        }
+        
         final Renderer renderer = rendererSelector.getRenderer(selector);
         if(renderer == null) {
             throw new ServletException("No Renderer found for " + selector);
@@ -112,24 +124,12 @@
 
         renderer.setup(response, getClass().getSimpleName());
         renderer.info("info", "Test selector: " + selector);
-
-        // Any test classes?
-        final List<String> testNames = getTestNames(selector, forceReload);
-        if(testNames.isEmpty()) {
-            renderer.info(
-                    "warning",
-                    "No test classes found for selector " + selector
-                    + ", check the requirements of the active " +
-                    "TestsProvider services for how to supply tests."
-                    );
-        } else {
-            try {
-                testsManager.listTests(testNames, renderer);
-                final String postPath = getTestExecutionPath(request, selector, renderer.getExtension());
-                renderer.link("Execute these tests", postPath, "POST");
-            } catch(Exception e) {
-                throw new ServletException(e);
-            }
+        try {
+            testsManager.listTests(testNames, renderer);
+            final String postPath = getTestExecutionPath(request, selector, renderer.getExtension());
+            renderer.link("Execute these tests", postPath, "POST");
+        } catch(Exception e) {
+            throw new ServletException(e);
         }
         renderer.cleanup();
     }