List:Commits« Previous MessageNext Message »
From:Mats Kindahl Date:August 25 2006 11:53am
Subject:bk commit into 5.1 tree (mkindahl:1.2248)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of mkindahl. When mkindahl does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2006-08-25 13:53:16+02:00, mkindahl@stripped +5 -0
  mytap-changes.patch

  unittest/Makefile.am@stripped, 2006-08-25 13:04:07+02:00, mkindahl@stripped +3 -4
    Import patch mytap-changes.patch

  unittest/README.txt@stripped, 2006-08-25 13:04:07+02:00, mkindahl@stripped +6 -1
    Import patch mytap-changes.patch

  unittest/examples/Makefile.am@stripped, 2006-08-25 13:04:07+02:00, mkindahl@stripped +1 -1
    Import patch mytap-changes.patch

  unittest/mytap/tap.c@stripped, 2006-08-25 13:04:07+02:00, mkindahl@stripped +48 -2
    Import patch mytap-changes.patch

  unittest/mytap/tap.h@stripped, 2006-08-25 13:04:07+02:00, mkindahl@stripped +23 -4
    Import patch mytap-changes.patch

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	mkindahl
# Host:	production.mysql.com
# Root:	/usersnfs/mkindahl/mysql-5.1-clone

--- 1.5/unittest/mytap/tap.c	2006-08-25 13:53:25 +02:00
+++ 1.6/unittest/mytap/tap.c	2006-08-25 13:53:25 +02:00
@@ -20,10 +20,13 @@
 
 #include "tap.h"
 
+#include "my_config.h"
+
 #include <stdlib.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
+#include <signal.h>
 
 /**
    Test data structure.
@@ -70,7 +73,7 @@
 /**
    Emit a TAP directive.
 
-   TAP directives are comments after a have the form
+   TAP directives are comments after that have the form:
 
    @code
    ok 1 # skip reason for skipping
@@ -96,6 +99,25 @@
   fprintf(tapout, "\n");
 }
 
+static void
+handle_core_signal(int signo)
+{
+  BAIL_OUT("Signal %d thrown", signo);
+}
+
+void
+BAIL_OUT(char const *fmt, ...)
+{
+  va_list ap;
+  va_start(ap, fmt);
+  fprintf(tapout, "Bail out! ");
+  vfprintf(tapout, fmt, ap);
+  emit_endl();
+  va_end(ap);
+  exit(255);
+}
+
+
 void
 diag(char const *fmt, ...)
 {
@@ -103,14 +125,38 @@
   va_start(ap, fmt);
   fprintf(tapout, "# ");
   vfprintf(tapout, fmt, ap);
-  fprintf(tapout, "\n");
+  emit_endl();
   va_end(ap);
 }
 
+typedef struct signal_entry {
+  int signo;
+  void (*handler)(int);
+} signal_entry;
+
+static signal_entry install_signal[]= {
+  { SIGQUIT, handle_core_signal },
+  { SIGILL,  handle_core_signal },
+  { SIGABRT, handle_core_signal },
+  { SIGFPE,  handle_core_signal },
+  { SIGSEGV, handle_core_signal },
+  { SIGBUS,  handle_core_signal },
+  { SIGXCPU, handle_core_signal },
+  { SIGXFSZ, handle_core_signal },
+  { SIGSYS,  handle_core_signal },
+  { SIGTRAP, handle_core_signal }
+};
 
 void
 plan(int const count)
 {
+  /*
+    Install signal handler
+  */
+  size_t i;
+  for (i= 0; i < sizeof(install_signal)/sizeof(*install_signal); ++i)
+    signal(install_signal[i].signo, install_signal[i].handler);
+
   g_test.plan= count;
   switch (count)
   {

--- 1.5/unittest/mytap/tap.h	2006-08-25 13:53:25 +02:00
+++ 1.6/unittest/mytap/tap.h	2006-08-25 13:53:25 +02:00
@@ -21,8 +21,6 @@
 #ifndef TAP_H
 #define TAP_H
 
-#include "my_global.h"
-
 /*
   @defgroup MyTAP MySQL support for performing unit tests according to TAP.
 
@@ -67,6 +65,10 @@
    it was called with <code>NO_PLAN</code>, i.e., the test plan will
    be printed after all the test lines.
 
+   The plan() function will install signal handlers for all signals
+   that generate a core, so if you want to override these signals, do
+   it <em>after</em> you have called the plan() function.
+
    @param count The planned number of tests to run. 
 */
 void plan(int count);
@@ -130,10 +132,9 @@
      for (i = 0 ; i < 2 ; ++i)
        ok(duck[i] == paddling, "is duck %d paddling?", i);
    }
+   @endcode
 
    @see skip
-
-   @endcode
  */
 #define SKIP_BLOCK_IF(SKIP_IF_TRUE, COUNT, REASON) \
   if (SKIP_IF_TRUE) skip((COUNT),(REASON)); else
@@ -145,6 +146,24 @@
  */
 void diag(char const *fmt, ...)
   __attribute__((format(printf,1,2)));
+
+/**
+   Print a bail out message.
+
+   A bail out message can be issued when no further testing can be
+   done, e.g., when there are missing dependencies.
+
+   The test will exit with status 255.  This function does not return.
+
+   @note A bail out message is printed if a signal that generates a
+   core is raised.
+
+   @param fmt Bail out message in printf() format.
+*/
+
+void BAIL_OUT(char const *fmt, ...)
+  __attribute__((noreturn, format(printf,1,2)));
+
 
 /**
    Print summary report and return exit status.

--- 1.9/unittest/Makefile.am	2006-08-25 13:53:25 +02:00
+++ 1.10/unittest/Makefile.am	2006-08-25 13:53:25 +02:00
@@ -6,10 +6,9 @@
 
 unittests = mytap mysys
 
-test: unit
-	./unit run $(unittests)
+test:
+	perl unit.pl run $(unittests)
 
 unit: $(srcdir)/unit.pl
-	cp $(srcdir)/unit.pl $@
-	chmod 700 $@
+	install $(srcdir)/unit.pl $@
 

--- 1.3/unittest/README.txt	2006-08-25 13:53:25 +02:00
+++ 1.4/unittest/README.txt	2006-08-25 13:53:25 +02:00
@@ -9,7 +9,9 @@
 mysys                 Tests for mysys components
   bitmap-t.c          Unit test for MY_BITMAP
   base64-t.c          Unit test for base64 encoding functions
-examples              Example unit tests
+examples              Example unit tests.
+  core-t.c            Example of raising a signal in the middle of the test
+		      THIS TEST WILL STOP ALL FURTHER TESTING!
   simple-t.c          Example of a standard TAP unit test
   skip-t.c            Example where some test points are skipped
   skip_all-t.c        Example of a test where the entire test is skipped
@@ -23,6 +25,9 @@
 To make and execute all unit tests in the directory:
 
    make test
+
+Observe that the tests in the examples/ directory are just various
+examples of tests and are not expected to pass.
 
 
 Adding unit tests

--- 1.6/unittest/examples/Makefile.am	2006-08-25 13:53:25 +02:00
+++ 1.7/unittest/examples/Makefile.am	2006-08-25 13:53:25 +02:00
@@ -5,5 +5,5 @@
 
 LDADD              = -lmytap
 
-noinst_PROGRAMS    = simple-t skip-t todo-t skip_all-t no_plan-t
+noinst_PROGRAMS    = simple-t skip-t todo-t skip_all-t no_plan-t core-t
 
Thread
bk commit into 5.1 tree (mkindahl:1.2248)Mats Kindahl25 Aug