[Libreoffice-commits] core.git: desktop/source desktop/unx uitest/libreoffice

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Tue Oct 1 14:22:56 UTC 2019


 desktop/source/app/cmdlineargs.cxx |   14 ++++++++++++++
 desktop/source/app/cmdlinehelp.cxx |    3 ++-
 desktop/unx/source/args.c          |   13 +++++++++++++
 uitest/libreoffice/connection.py   |    2 +-
 4 files changed, 30 insertions(+), 2 deletions(-)

New commits:
commit d35840a2111beafe018851314a624e268e3cde6a
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Mon Sep 30 14:28:20 2019 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Tue Oct 1 16:21:54 2019 +0200

    uitest: make child soffice process die when parent dies
    
    using PR_SET_PDEATHSIG.
    
    Note that this can only be called by the child process in question, so
    we have to pass a new command line argument down to activate it.
    
    And we have to plumb it through the wrapper oosplash process.
    
    I wonder where else our testing infrastructure could benefit from this
    
    Change-Id: I55e8e9f7f4e6cc415046df04c804e51475b8a4c9
    Reviewed-on: https://gerrit.libreoffice.org/79854
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx
index 381147cd534e..46395ae87133 100644
--- a/desktop/source/app/cmdlineargs.cxx
+++ b/desktop/source/app/cmdlineargs.cxx
@@ -42,6 +42,11 @@
 #include <osl/file.hxx>
 #include <sal/log.hxx>
 
+#ifdef LINUX
+#include <sys/prctl.h>
+#include <signal.h>
+#endif
+
 using namespace com::sun::star::lang;
 using namespace com::sun::star::uri;
 using namespace com::sun::star::uno;
@@ -362,6 +367,15 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
             {
                 // Do nothing, accept only for backward compatibility
             }
+            else if ( oArg == "dont-survive-parent" )
+            {
+// only supported on linux for now
+#ifdef LINUX
+            prctl(PR_SET_PDEATHSIG, SIGKILL);
+#else
+            fprintf(stderr, "Warning: dont-survive-parent is not supported on this platform (yet).\n");
+#endif
+            }
             else if ( oArg == "nologo" )
             {
                 m_nologo = true;
diff --git a/desktop/source/app/cmdlinehelp.cxx b/desktop/source/app/cmdlinehelp.cxx
index bdb04bb9d4d8..b6afe63fe57a 100644
--- a/desktop/source/app/cmdlinehelp.cxx
+++ b/desktop/source/app/cmdlinehelp.cxx
@@ -112,7 +112,8 @@ namespace desktop
         "Developer arguments:                                                           \n"
         "   --terminate_after_init                                                      \n"
         "                       Exit after initialization complete (no documents loaded)\n"
-        "   --eventtesting      Exit after loading documents.                           \n\n"
+        "   --eventtesting      Exit after loading documents.                           \n"
+        "   --dont-survive-parent Exit when the parent exits (linux only)               \n\n"
         "New document creation arguments:                                               \n"
         "The arguments create an empty document of specified kind. Only one of them may \n"
         "be used in one command line. If filenames are specified after an argument,     \n"
diff --git a/desktop/unx/source/args.c b/desktop/unx/source/args.c
index 199b58a8e50e..81a8dbca4bb5 100644
--- a/desktop/unx/source/args.c
+++ b/desktop/unx/source/args.c
@@ -9,6 +9,10 @@
 #include <stdlib.h>
 #include <string.h>
 #include <osl/process.h>
+#ifdef LINUX
+#include <sys/prctl.h>
+#include <signal.h>
+#endif
 
 #include "args.h"
 
@@ -121,6 +125,15 @@ Args *args_parse (void)
                     args->pPageinType = pArgDescr[j].pPageinType;
                 break;
             }
+            if (rtl_ustr_ascii_compare_WithLength(
+                    arg, length, "dont-survive-parent")
+                == 0)
+            {
+#ifdef LINUX
+                prctl(PR_SET_PDEATHSIG, SIGKILL);
+#endif
+                break;
+            }
         }
     }
 
diff --git a/uitest/libreoffice/connection.py b/uitest/libreoffice/connection.py
index 50fdda33fd34..9e145c98a686 100644
--- a/uitest/libreoffice/connection.py
+++ b/uitest/libreoffice/connection.py
@@ -66,7 +66,7 @@ class OfficeConnection:
         argv = [soffice, "--accept=" + socket + ";urp",
                 "-env:UserInstallation=" + userdir,
                 "--quickstart=no", "--nofirststartwizard",
-                "--norestore", "--nologo"]
+                "--norestore", "--nologo", "--dont-survive-parent"]
         if "--valgrind" in self.args:
             argv.append("--valgrind")
 


More information about the Libreoffice-commits mailing list