Hi,

the attached patch is the outcome of talking with jcorval on IRC about a
test suite issue on Windows (release builds) in SVN 1.8. It resolves the
fact that the tests will be interrupted on Windows by a Windows popup
upon an abort()-call.

Atm this is triggered for the 1.8 test suite for the move-test (no 8)
which is marked as XFail and triggers an SVN_ERR_ASSERT() and therefore
breaks fully automated tests.

The chosen solution is based on an old discussion in 2011 which
triggered the case in a different (older) test:
http://svn.haxx.se/dev/archive-2011-01/0328.shtml
http://svn.haxx.se/dev/archive-2011-02/0011.shtml

The proposed patch introduces a new environment variable
(SVN_CMDLINE_DISABLE_WATSON_ON_ABORT) and if set, disables the Windows'
Watson crash reporting upon an abort-call.

More details available here: http://www.luke1410.de:8090/browse/MAXSVN-66

The patch was checked against trunk and 1.8.16 (running the whole test
suite (Win10 (1511) 64-bit x ra_local x fsfs)).

[[[
Resolve testsuite interruption on Windows in release mode, if a test
triggers
an abort.

* subversion/libsvn_subr/cmdline.c
  (svn_cmdline_init): check against the new
SVN_CMDLINE_DISABLE_WATSON_ON_ABORT
                      environment variable and disable Watson crash dumps in
                      this case

* subversion/tests/svn_test_main.c
  (svn_test_main): the same

* win-tests.py
  (): define the SVN_CMDLINE_DISABLE_WATSON_ON_ABORT environment
variable when
      running the test suite
]]]

Regards,
Stefan

Index: subversion/libsvn_subr/cmdline.c
===================================================================
--- subversion/libsvn_subr/cmdline.c	(revision 1755433)
+++ subversion/libsvn_subr/cmdline.c	(working copy)
@@ -162,6 +162,10 @@
         {
           /* In release mode: Redirect abort() errors to stderr */
           _set_error_mode(_OUT_TO_STDERR);
+          /* Allow scripts (e.g. our testsuite) to prevent creating a Watson crash
+            dump and also do not bring up the report dialog. */
+          if (getenv("SVN_CMDLINE_DISABLE_WATSON_ON_ABORT"))
+            _set_abort_behavior(0, _CALL_REPORTFAULT);
 
           /* In _DEBUG mode: Redirect all debug output (E.g. assert() to stderr.
              (Ignored in release builds) */
Index: subversion/tests/svn_test_main.c
===================================================================
--- subversion/tests/svn_test_main.c	(revision 1755433)
+++ subversion/tests/svn_test_main.c	(working copy)
@@ -878,6 +878,10 @@
     {
       /* In release mode: Redirect abort() errors to stderr */
       _set_error_mode(_OUT_TO_STDERR);
+      /* Allow scripts (e.g. our testsuite) to prevent creating a Watson crash
+         dump and also do not bring up the report dialog. */
+      if (getenv("SVN_CMDLINE_DISABLE_WATSON_ON_ABORT"))
+        _set_abort_behavior(0, _CALL_REPORTFAULT);
 
       /* In _DEBUG mode: Redirect all debug output (E.g. assert() to stderr.
          (Ignored in releas builds) */
Index: win-tests.py
===================================================================
--- win-tests.py	(revision 1755433)
+++ win-tests.py	(working copy)
@@ -1003,6 +1003,9 @@
 # Ensure the tests directory is correctly cased
 abs_builddir = fix_case(abs_builddir)
 
+# Disable Watson crash reporting while running the test suite
+os.environ['SVN_CMDLINE_DISABLE_WATSON_ON_ABORT'] = "1"
+
 daemon = None
 memcached = None
 # Run the tests

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to