This is an automated email from the ASF dual-hosted git repository.

reschke pushed a commit to branch OAK-10522
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit 0df365f7ceebe225dcae606a7c2bf1e48a15c119
Author: Julian Reschke <[email protected]>
AuthorDate: Thu Nov 2 18:57:57 2023 +0100

    OAK-10522: avoid use of SecurityManager in indexing test
---
 .../apache/jackrabbit/oak/index/IndexCommand.java  |  8 ++-
 .../org/apache/jackrabbit/oak/index/ReindexIT.java | 58 ++++------------------
 2 files changed, 16 insertions(+), 50 deletions(-)

diff --git 
a/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexCommand.java 
b/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexCommand.java
index 8e4339cae4..f694c31adc 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexCommand.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexCommand.java
@@ -82,6 +82,11 @@ public class IndexCommand implements Command {
         Class.forName("org.apache.tika.parser.pdf.PDFParser");
     }
 
+    // to be overridden by test cases that want to check the return value
+    public void exit(int status) {
+        System.exit(status);
+    }
+
     @Override
     public void execute(String... args) throws Exception {
         OptionParser parser = new OptionParser();
@@ -100,7 +105,8 @@ public class IndexCommand implements Command {
                 checkTikaDependency();
             } catch (Throwable e) {
                 System.err.println("Missing tika parser dependencies, use 
--ignore-missing-tika-dep to force continue");
-                System.exit(1);
+                exit(1);
+                return;
             }
         }
 
diff --git 
a/oak-run/src/test/java/org/apache/jackrabbit/oak/index/ReindexIT.java 
b/oak-run/src/test/java/org/apache/jackrabbit/oak/index/ReindexIT.java
index 91a9760a8b..db709eb8fe 100644
--- a/oak-run/src/test/java/org/apache/jackrabbit/oak/index/ReindexIT.java
+++ b/oak-run/src/test/java/org/apache/jackrabbit/oak/index/ReindexIT.java
@@ -52,13 +52,11 @@ import javax.jcr.query.RowIterator;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintStream;
-import java.security.Permission;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import static org.apache.jackrabbit.guava.common.base.Charsets.UTF_8;
-import static java.lang.System.getSecurityManager;
-import static java.lang.System.setSecurityManager;
 import static org.apache.jackrabbit.oak.spi.state.NodeStateUtils.getNode;
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.CoreMatchers.hasItem;
@@ -69,7 +67,6 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 public class ReindexIT extends LuceneAbstractIndexCommandTest {
     private final ByteArrayOutputStream errContent = new 
ByteArrayOutputStream();
@@ -129,18 +126,25 @@ public class ReindexIT extends 
LuceneAbstractIndexCommandTest {
 
     @Test
     public void reindexIgnoreMissingTikaDepThrow() throws Exception{
+        final AtomicInteger exitCode = new AtomicInteger(-1);
         IndexCommand command = new IndexCommand() {
             @Override
             public void checkTikaDependency() throws ClassNotFoundException {
                 throw new ClassNotFoundException();
             }
+
+            @Override
+            public void exit(int status) {
+                exitCode.set(status);
+            }
         };
         String[] args = {
                 "--reindex",
                 "--", // -- indicates that options have ended and rest needs 
to be treated as non option
                 "test"
         };
-        assertExits(1, () -> command.execute(args));
+        command.execute(args);
+        assertEquals("Epxpect to exit with status 1", 1, exitCode.get());
         assertEquals("Missing tika parser dependencies, use 
--ignore-missing-tika-dep to force continue", 
errContent.toString("UTF-8").trim());
     }
 
@@ -422,48 +426,4 @@ public class ReindexIT extends 
LuceneAbstractIndexCommandTest {
         }
         return results;
     }
-
-    public static <E extends Throwable> void assertExits(final int 
expectedStatus, final ThrowingExecutable<E> executable) throws E {
-        final SecurityManager originalSecurityManager = getSecurityManager();
-        setSecurityManager(new SecurityManager() {
-            @Override
-            public void checkPermission(final Permission perm) {
-                if (originalSecurityManager != null)
-                    originalSecurityManager.checkPermission(perm);
-            }
-
-            @Override
-            public void checkPermission(final Permission perm, final Object 
context) {
-                if (originalSecurityManager != null)
-                    originalSecurityManager.checkPermission(perm, context);
-            }
-
-            @Override
-            public void checkExit(final int status) {
-                super.checkExit(status);
-                throw new ExitException(status);
-            }
-        });
-        try {
-            executable.run();
-            fail("Expected System.exit(" + expectedStatus + ") to be called, 
but it wasn't called.");
-        } catch (final ExitException e) {
-            assertEquals(expectedStatus, e.status);
-        } finally {
-            setSecurityManager(originalSecurityManager);
-        }
-    }
-
-    public interface ThrowingExecutable<E extends Throwable> {
-        void run() throws E;
-    }
-
-    private static class ExitException extends SecurityException {
-        final int status;
-
-        private ExitException(final int status) {
-            this.status = status;
-        }
-    }
-
 }

Reply via email to