diff --git a/Makefile-tests.am b/Makefile-tests.am index a44743c6..b4eada7b 100644 --- a/Makefile-tests.am +++ b/Makefile-tests.am @@ -67,20 +67,27 @@ CLEANFILES += \ tests/common/compose/test-repo-local.repo \ $(NULL) -testbin_cppflags = $(AM_CPPFLAGS) -I $(srcdir)/src/libpriv -I $(srcdir)/libglnx +testbin_cppflags = $(AM_CPPFLAGS) -I $(srcdir)/src/libpriv -I $(srcdir)/libglnx -I $(srcdir)/tests/common testbin_cflags = $(AM_CFLAGS) $(PKGDEP_RPMOSTREE_CFLAGS) testbin_ldadd = $(PKGDEP_RPMOSTREE_LIBS) librpmostree-1.la librpmostreepriv.la + +noinst_LTLIBRARIES += libtest.la +libtest_la_SOURCES = tests/common/libtest.c +libtest_la_CPPFLAGS = $(testbin_cppflags) +libtest_la_CFLAGS = $(testbin_cflags) +libtest_la_LIBADD = $(testbin_ldadd) + tests_check_jsonutil_CPPFLAGS = $(testbin_cppflags) tests_check_jsonutil_CFLAGS = $(testbin_cflags) -tests_check_jsonutil_LDADD = $(testbin_ldadd) +tests_check_jsonutil_LDADD = $(testbin_ldadd) libtest.la tests_check_postprocess_CPPFLAGS = $(testbin_cppflags) tests_check_postprocess_CFLAGS = $(testbin_cflags) -tests_check_postprocess_LDADD = $(testbin_ldadd) +tests_check_postprocess_LDADD = $(testbin_ldadd) libtest.la tests_check_test_utils_CPPFLAGS = $(testbin_cppflags) tests_check_test_utils_CFLAGS = $(testbin_cflags) -tests_check_test_utils_LDADD = $(testbin_ldadd) +tests_check_test_utils_LDADD = $(testbin_ldadd) libtest.la tests/check/test-compose.sh: tests/common/compose/test-repo.repo diff --git a/tests/common/libtest.c b/tests/common/libtest.c new file mode 100644 index 00000000..1c294157 --- /dev/null +++ b/tests/common/libtest.c @@ -0,0 +1,59 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2017 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * 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. + */ + +#include + +#include "libtest.h" + +/* Copied and adapted from: + * https://github.com/ostreedev/ostree/blob/master/tests/libostreetest.c + * + * This function hovers in a quantum superposition of horrifying and + * beautiful. Future generations may interpret it as modern art. + */ +gboolean +rot_test_run_libtest (const char *cmd, GError **error) +{ + const char *srcdir = g_getenv ("topsrcdir"); + int estatus; + g_autoptr(GPtrArray) argv = g_ptr_array_new (); + g_autoptr(GString) cmdstr = g_string_new (""); + + g_ptr_array_add (argv, "bash"); + g_ptr_array_add (argv, "-c"); + + g_string_append (cmdstr, "set -xeuo pipefail; . "); + g_string_append (cmdstr, srcdir); + g_string_append (cmdstr, "/tests/common/libtest.sh; "); + g_string_append (cmdstr, cmd); + + g_ptr_array_add (argv, cmdstr->str); + g_ptr_array_add (argv, NULL); + + if (!g_spawn_sync (NULL, (char**)argv->pdata, NULL, G_SPAWN_SEARCH_PATH, + NULL, NULL, NULL, NULL, &estatus, error)) + return FALSE; + + if (!g_spawn_check_exit_status (estatus, error)) + return FALSE; + + return TRUE; +} + diff --git a/tests/common/libtest.h b/tests/common/libtest.h new file mode 100644 index 00000000..22f0441b --- /dev/null +++ b/tests/common/libtest.h @@ -0,0 +1,33 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2016 Colin Walters + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * 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. + * + * Author: Colin Walters + */ + +/* Copied and adapted from: + * https://github.com/ostreedev/ostree/blob/master/tests/libostreetest.c + */ + +#pragma once + +G_BEGIN_DECLS + +gboolean rot_test_run_libtest (const char *cmd, GError **error); + +G_END_DECLS