X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=test%2Ftest_fixtures.hxx;fp=test%2Ftest_fixtures.hxx;h=882457c289e29ef3e9b0f491f774757faec2cd4d;hp=0000000000000000000000000000000000000000;hb=307b5e74c506b609d5c407be0943f45255ab5122;hpb=3d9c0861e86edcbfad10b84da332093fd6438f32 diff --git a/test/test_fixtures.hxx b/test/test_fixtures.hxx new file mode 100644 index 0000000..882457c --- /dev/null +++ b/test/test_fixtures.hxx @@ -0,0 +1,57 @@ +/* +Copyright (C) 2010 by Intra2net AG - Thomas Jarosch + +The software in this package is distributed under the GNU General +Public License version 2 (with a special exception described below). + +A copy of GNU General Public License (GPL) is included in this distribution, +in the file COPYING.GPL. + +As a special exception, if other files instantiate templates or use macros +or inline functions from this file, or you compile this file and link it +with other works to produce a work based on this file, this file +does not by itself cause the resulting work to be covered +by the GNU General Public License. + +However the source code for this file must still be made available +in accordance with section (3) of the GNU General Public License. + +This exception does not invalidate any other reasons why a work based +on this file might be covered by the GNU General Public License. +*/ +#ifndef __LIBT2N_TEST_FIXTURES +#define __LIBT2N_TEST_FIXTURES + +#include +#include +#include + +class KillChildOnShutdownFixture +{ +protected: + pid_t child_pid; + +public: + KillChildOnShutdownFixture() + : child_pid(0) + { + // Work around Boost.test reporting killed childs as "fatal error". + // Can be ignored with boost 1.40.0+, need to check after upgrade + signal(SIGCHLD, SIG_IGN); + } + + ~KillChildOnShutdownFixture() + { + // make sure the server-child is dead before the next test runs + if (child_pid) + { + // std::cout << "Killing child with pid: " << child_pid << std::endl; + kill(child_pid, SIGKILL); + + int status = 0; + waitpid(child_pid, &status, 0); + } + } +}; + +#endif