* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
+#include "config.h"
+
#include <glib.h>
+#include <glib-unix.h>
#include <gstdio.h>
#include <string.h>
#include <stdlib.h>
guint i;
gchar **strv;
case G_TEST_LOG_NONE:
+ case G_TEST_LOG_START_SUITE:
+ case G_TEST_LOG_STOP_SUITE:
break;
case G_TEST_LOG_ERROR:
strv = g_strsplit (msg->strings[0], "\n", -1);
gboolean loop_pending;
gint i = 0;
- if (pipe (report_pipe) < 0)
+ if (!g_unix_open_pipe (report_pipe, FD_CLOEXEC, &error))
{
if (subtest_mode_fatal)
- g_error ("Failed to open pipe for test binary: %s: %s", binary, g_strerror (errno));
+ g_error ("Failed to open pipe for test binary: %s: %s", binary, error->message);
else
- g_warning ("Failed to open pipe for test binary: %s: %s", binary, g_strerror (errno));
+ g_warning ("Failed to open pipe for test binary: %s: %s", binary, error->message);
+ g_clear_error (&error);
return FALSE;
}
loop_pending = g_main_context_pending (NULL);
}
- g_source_remove (child_report_cb_id);
+ if (subtest_io_pending)
+ g_source_remove (child_report_cb_id);
+
close (report_pipe[0]);
g_test_log_buffer_free (tlb);
g_print ("gtester version %d.%d.%d\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
return;
}
- g_print ("Usage: gtester [OPTIONS] testprogram...\n");
+ g_print ("Usage:\n");
+ g_print ("gtester [OPTIONS] testprogram...\n\n");
/* 12345678901234567890123456789012345678901234567890123456789012345678901234567890 */
- g_print ("Options:\n");
- g_print (" -h, --help show this help message\n");
- g_print (" -v, --version print version informations\n");
- g_print (" --g-fatal-warnings make warnings fatal (abort)\n");
- g_print (" -k, --keep-going continue running after tests failed\n");
- g_print (" -l list paths of available test cases\n");
- g_print (" -m=perf, -m=slow, -m=quick -m=thorough\n");
- g_print (" run test cases in mode perf, slow/thorough or quick (default)\n");
- g_print (" -m=no-undefined don't run test cases that provoke assertions\n");
- g_print (" -p=TESTPATH only start test cases matching TESTPATH\n");
- g_print (" -s=TESTPATH skip test cases matching TESTPATH\n");
- g_print (" --seed=SEEDSTRING start all tests with random number seed SEEDSTRING\n");
- g_print (" -o=LOGFILE write the test log to LOGFILE\n");
- g_print (" -q, --quiet suppress per test binary output\n");
- g_print (" --verbose report success per testcase\n");
+ g_print ("Help Options:\n");
+ g_print (" -h, --help Show this help message\n\n");
+ g_print ("Utility Options:\n");
+ g_print (" -v, --version Print version informations\n");
+ g_print (" --g-fatal-warnings Make warnings fatal (abort)\n");
+ g_print (" -k, --keep-going Continue running after tests failed\n");
+ g_print (" -l List paths of available test cases\n");
+ g_print (" -m {perf|slow|thorough|quick} Run test cases according to mode\n");
+ g_print (" -m {undefined|no-undefined} Run test cases according to mode\n");
+ g_print (" -p=TESTPATH Only start test cases matching TESTPATH\n");
+ g_print (" -s=TESTPATH Skip test cases matching TESTPATH\n");
+ g_print (" --seed=SEEDSTRING Start tests with random seed SEEDSTRING\n");
+ g_print (" -o=LOGFILE Write the test log to LOGFILE\n");
+ g_print (" -q, --quiet Suppress per test binary output\n");
+ g_print (" --verbose Report success per testcase\n");
}
static void
main_selftest (int argc,
char **argv)
{
- /* gtester main() for --gtester-selftest invokations */
+ /* gtester main() for --gtester-selftest invocations */
g_test_init (&argc, &argv, NULL);
g_test_add ("/gtester/fixture-test", guint, NULL, fixture_setup, fixture_test, fixture_teardown);
return g_test_run();