[glib-networking] tls: Split the database tests out from the certificate tests
- From: Stefan Walter <stefw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib-networking] tls: Split the database tests out from the certificate tests
- Date: Fri, 3 Aug 2012 15:58:13 +0000 (UTC)
commit d3448b204c46abb4e4502db4395573a827d9237e
Author: Stef Walter <stefw gnome org>
Date: Tue Jul 31 17:49:12 2012 +0200
tls: Split the database tests out from the certificate tests
* For now these test GTlsFileDatabase
https://bugzilla.gnome.org/show_bug.cgi?id=681119
.gitignore | 1 +
tls/tests/Makefile.am | 1 +
tls/tests/certificate.c | 259 ---------------------------------
tls/tests/file-database.c | 350 +++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 352 insertions(+), 259 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 675ec0c..3d3f55c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,6 +36,7 @@ proxy/libproxy/org.gtk.GLib.PACRunner.service
proxy/tests/gnome
/tls/tests/certificate
+/tls/tests/file-database
/tls/tests/connection
/tls/tests/pkcs11
/tls/tests/pkcs11-array
diff --git a/tls/tests/Makefile.am b/tls/tests/Makefile.am
index 4cb84aa..3f1d79a 100644
--- a/tls/tests/Makefile.am
+++ b/tls/tests/Makefile.am
@@ -12,6 +12,7 @@ LDADD = \
TEST_PROGS += \
certificate \
+ file-database \
connection \
$(NULL)
diff --git a/tls/tests/certificate.c b/tls/tests/certificate.c
index 623ec30..eb1217d 100644
--- a/tls/tests/certificate.c
+++ b/tls/tests/certificate.c
@@ -320,245 +320,6 @@ test_verify_certificate_bad_combo (TestVerify *test,
g_object_unref (identity);
}
-static void
-test_verify_database_good (TestVerify *test,
- gconstpointer data)
-{
- GTlsCertificateFlags errors;
- GError *error = NULL;
-
- errors = g_tls_database_verify_chain (test->database, test->cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- test->identity, NULL, 0, NULL, &error);
- g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, 0);
-
- errors = g_tls_database_verify_chain (test->database, test->cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- NULL, NULL, 0, NULL, &error);
- g_assert_cmpuint (errors, ==, 0);
-}
-
-static void
-test_verify_database_bad_identity (TestVerify *test,
- gconstpointer data)
-{
- GSocketConnectable *identity;
- GTlsCertificateFlags errors;
- GError *error = NULL;
-
- identity = g_network_address_new ("other.example.com", 80);
-
- errors = g_tls_database_verify_chain (test->database, test->cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- identity, NULL, 0, NULL, &error);
- g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_BAD_IDENTITY);
-
- g_object_unref (identity);
-}
-
-static void
-test_verify_database_bad_ca (TestVerify *test,
- gconstpointer data)
-{
- GTlsCertificateFlags errors;
- GTlsCertificate *cert;
- GError *error = NULL;
-
- /* Use another certificate which isn't in our CA list */
- cert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (cert));
-
- errors = g_tls_database_verify_chain (test->database, cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- test->identity, NULL, 0, NULL, &error);
- g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA);
-
- g_object_unref (cert);
-}
-
-static void
-test_verify_database_bad_before (TestVerify *test,
- gconstpointer data)
-{
- GTlsCertificateFlags errors;
- GTlsCertificate *cert;
- GError *error = NULL;
-
- /* This is a certificate in the future */
- cert = g_tls_certificate_new_from_file (TEST_FILE ("client-future.pem"), &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (cert));
-
- errors = g_tls_database_verify_chain (test->database, cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- NULL, NULL, 0, NULL, &error);
- g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_NOT_ACTIVATED);
-
- g_object_unref (cert);
-}
-
-static void
-test_verify_database_bad_expired (TestVerify *test,
- gconstpointer data)
-{
- GTlsCertificateFlags errors;
- GTlsCertificate *cert;
- GError *error = NULL;
-
- /* This is a certificate in the future */
- cert = g_tls_certificate_new_from_file (TEST_FILE ("client-past.pem"), &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (cert));
-
- errors = g_tls_database_verify_chain (test->database, cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- NULL, NULL, 0, NULL, &error);
- g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_EXPIRED);
-
- g_object_unref (cert);
-}
-
-static void
-test_verify_database_bad_combo (TestVerify *test,
- gconstpointer data)
-{
- GTlsCertificate *cert;
- GSocketConnectable *identity;
- GTlsCertificateFlags errors;
- GError *error = NULL;
-
- cert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (cert));
-
- /*
- * - Use is self signed
- * - Use wrong identity.
- */
-
- identity = g_network_address_new ("other.example.com", 80);
-
- errors = g_tls_database_verify_chain (test->database, cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- identity, NULL, 0, NULL, &error);
- g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA |
- G_TLS_CERTIFICATE_BAD_IDENTITY);
-
- g_object_unref (cert);
- g_object_unref (identity);
-}
-
-/* -----------------------------------------------------------------------------
- * FILE DATABASE
- */
-
-typedef struct {
- GTlsDatabase *database;
- const gchar *path;
-} TestFileDatabase;
-
-static void
-setup_file_database (TestFileDatabase *test,
- gconstpointer data)
-{
- GError *error = NULL;
-
- test->path = TEST_FILE ("ca-roots.pem");
- test->database = g_tls_file_database_new (test->path, &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_DATABASE (test->database));
-}
-
-static void
-teardown_file_database (TestFileDatabase *test,
- gconstpointer data)
-{
- g_assert (G_IS_TLS_DATABASE (test->database));
- g_object_add_weak_pointer (G_OBJECT (test->database),
- (gpointer *)&test->database);
- g_object_unref (test->database);
- g_assert (test->database == NULL);
-}
-
-static void
-test_file_database_handle (TestFileDatabase *test,
- gconstpointer unused)
-{
- GTlsCertificate *certificate;
- GTlsCertificate *check;
- GError *error = NULL;
- gchar *handle;
-
- /*
- * ca.pem is in the ca-roots.pem that the test->database represents.
- * So it should be able to create a handle for it and treat it as if it
- * is 'in' the database.
- */
-
- certificate = g_tls_certificate_new_from_file (TEST_FILE ("ca.pem"), &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (certificate));
-
- handle = g_tls_database_create_certificate_handle (test->database, certificate);
- g_assert (handle != NULL);
- g_assert (g_str_has_prefix (handle, "file:///"));
-
- check = g_tls_database_lookup_certificate_for_handle (test->database, handle,
- NULL, G_TLS_DATABASE_LOOKUP_NONE,
- NULL, &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (check));
-
- g_free (handle);
- g_object_unref (check);
- g_object_unref (certificate);
-}
-
-static void
-test_file_database_handle_invalid (TestFileDatabase *test,
- gconstpointer unused)
-{
- GTlsCertificate *certificate;
- GError *error = NULL;
-
- certificate = g_tls_database_lookup_certificate_for_handle (test->database, "blah:blah",
- NULL, G_TLS_DATABASE_LOOKUP_NONE,
- NULL, &error);
- g_assert_no_error (error);
- g_assert (certificate == NULL);
-}
-
-/* -----------------------------------------------------------------------------
- * BACKEND
- */
-
-static void
-test_default_database_is_singleton (void)
-{
- GTlsBackend *backend;
- GTlsDatabase *database;
- GTlsDatabase *check;
-
- backend = g_tls_backend_get_default ();
- g_assert (G_IS_TLS_BACKEND (backend));
-
- database = g_tls_backend_get_default_database (backend);
- g_assert (G_IS_TLS_DATABASE (database));
-
- check = g_tls_backend_get_default_database (backend);
- g_assert (database == check);
-
- g_object_unref (database);
- g_object_unref (check);
-}
-
int
main (int argc,
char *argv[])
@@ -570,9 +331,6 @@ main (int argc,
g_setenv ("GIO_EXTRA_MODULES", TOP_BUILDDIR "/tls/gnutls/.libs", TRUE);
g_setenv ("GIO_USE_TLS", "gnutls", TRUE);
- g_test_add_func ("/tls/backend/default-database-is-singleton",
- test_default_database_is_singleton);
-
g_test_add ("/tls/certificate/create-destroy-pem", TestCertificate, NULL,
setup_certificate, test_create_destroy_certificate_pem, teardown_certificate);
g_test_add ("/tls/certificate/create-destroy-der", TestCertificate, NULL,
@@ -592,23 +350,6 @@ main (int argc,
setup_verify, test_verify_certificate_bad_expired, teardown_verify);
g_test_add ("/tls/certificate/verify-bad-combo", TestVerify, NULL,
setup_verify, test_verify_certificate_bad_combo, teardown_verify);
- g_test_add ("/tls/database/verify-good", TestVerify, NULL,
- setup_verify, test_verify_database_good, teardown_verify);
- g_test_add ("/tls/database/verify-bad-identity", TestVerify, NULL,
- setup_verify, test_verify_database_bad_identity, teardown_verify);
- g_test_add ("/tls/database/verify-bad-ca", TestVerify, NULL,
- setup_verify, test_verify_database_bad_ca, teardown_verify);
- g_test_add ("/tls/database/verify-bad-before", TestVerify, NULL,
- setup_verify, test_verify_database_bad_before, teardown_verify);
- g_test_add ("/tls/database/verify-bad-expired", TestVerify, NULL,
- setup_verify, test_verify_database_bad_expired, teardown_verify);
- g_test_add ("/tls/database/verify-bad-combo", TestVerify, NULL,
- setup_verify, test_verify_database_bad_combo, teardown_verify);
-
- g_test_add ("/tls/file-database/test-handle", TestFileDatabase, NULL,
- setup_file_database, test_file_database_handle, teardown_file_database);
- g_test_add ("/tls/file-database/test-handle-invalid", TestFileDatabase, NULL,
- setup_file_database, test_file_database_handle_invalid, teardown_file_database);
return g_test_run();
}
diff --git a/tls/tests/file-database.c b/tls/tests/file-database.c
new file mode 100644
index 0000000..3d62343
--- /dev/null
+++ b/tls/tests/file-database.c
@@ -0,0 +1,350 @@
+/* GIO TLS tests
+ *
+ * Copyright 2011 Collabora, Ltd.
+ *
+ * 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, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Author: Stef Walter <stefw collabora co uk>
+ */
+
+#include <gio/gio.h>
+
+#include <sys/types.h>
+#include <string.h>
+
+#define TEST_FILE(name) (SRCDIR "/files/" name)
+
+/* -----------------------------------------------------------------------------
+ * CERTIFICATE VERIFY
+ */
+
+typedef struct {
+ GTlsCertificate *cert;
+ GSocketConnectable *identity;
+ GTlsDatabase *database;
+} TestVerify;
+
+static void
+setup_verify (TestVerify *test,
+ gconstpointer data)
+{
+ GError *error = NULL;
+
+ test->cert = g_tls_certificate_new_from_file (TEST_FILE ("server.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (test->cert));
+
+ test->identity = g_network_address_new ("server.example.com", 80);
+
+ test->database = g_tls_file_database_new (TEST_FILE ("ca.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_DATABASE (test->database));
+}
+
+static void
+teardown_verify (TestVerify *test,
+ gconstpointer data)
+{
+ g_assert (G_IS_TLS_CERTIFICATE (test->cert));
+ g_object_add_weak_pointer (G_OBJECT (test->cert),
+ (gpointer *)&test->cert);
+ g_object_unref (test->cert);
+ g_assert (test->cert == NULL);
+
+ g_assert (G_IS_TLS_DATABASE (test->database));
+ g_object_add_weak_pointer (G_OBJECT (test->database),
+ (gpointer *)&test->database);
+ g_object_unref (test->database);
+ g_assert (test->database == NULL);
+
+ g_object_add_weak_pointer (G_OBJECT (test->identity),
+ (gpointer *)&test->identity);
+ g_object_unref (test->identity);
+ g_assert (test->identity == NULL);
+}
+
+static void
+test_verify_database_good (TestVerify *test,
+ gconstpointer data)
+{
+ GTlsCertificateFlags errors;
+ GError *error = NULL;
+
+ errors = g_tls_database_verify_chain (test->database, test->cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ test->identity, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, 0);
+
+ errors = g_tls_database_verify_chain (test->database, test->cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ NULL, NULL, 0, NULL, &error);
+ g_assert_cmpuint (errors, ==, 0);
+}
+
+static void
+test_verify_database_bad_identity (TestVerify *test,
+ gconstpointer data)
+{
+ GSocketConnectable *identity;
+ GTlsCertificateFlags errors;
+ GError *error = NULL;
+
+ identity = g_network_address_new ("other.example.com", 80);
+
+ errors = g_tls_database_verify_chain (test->database, test->cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ identity, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_BAD_IDENTITY);
+
+ g_object_unref (identity);
+}
+
+static void
+test_verify_database_bad_ca (TestVerify *test,
+ gconstpointer data)
+{
+ GTlsCertificateFlags errors;
+ GTlsCertificate *cert;
+ GError *error = NULL;
+
+ /* Use another certificate which isn't in our CA list */
+ cert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (cert));
+
+ errors = g_tls_database_verify_chain (test->database, cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ test->identity, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA);
+
+ g_object_unref (cert);
+}
+
+static void
+test_verify_database_bad_before (TestVerify *test,
+ gconstpointer data)
+{
+ GTlsCertificateFlags errors;
+ GTlsCertificate *cert;
+ GError *error = NULL;
+
+ /* This is a certificate in the future */
+ cert = g_tls_certificate_new_from_file (TEST_FILE ("client-future.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (cert));
+
+ errors = g_tls_database_verify_chain (test->database, cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ NULL, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_NOT_ACTIVATED);
+
+ g_object_unref (cert);
+}
+
+static void
+test_verify_database_bad_expired (TestVerify *test,
+ gconstpointer data)
+{
+ GTlsCertificateFlags errors;
+ GTlsCertificate *cert;
+ GError *error = NULL;
+
+ /* This is a certificate in the future */
+ cert = g_tls_certificate_new_from_file (TEST_FILE ("client-past.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (cert));
+
+ errors = g_tls_database_verify_chain (test->database, cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ NULL, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_EXPIRED);
+
+ g_object_unref (cert);
+}
+
+static void
+test_verify_database_bad_combo (TestVerify *test,
+ gconstpointer data)
+{
+ GTlsCertificate *cert;
+ GSocketConnectable *identity;
+ GTlsCertificateFlags errors;
+ GError *error = NULL;
+
+ cert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (cert));
+
+ /*
+ * - Use is self signed
+ * - Use wrong identity.
+ */
+
+ identity = g_network_address_new ("other.example.com", 80);
+
+ errors = g_tls_database_verify_chain (test->database, cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ identity, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA |
+ G_TLS_CERTIFICATE_BAD_IDENTITY);
+
+ g_object_unref (cert);
+ g_object_unref (identity);
+}
+
+/* -----------------------------------------------------------------------------
+ * FILE DATABASE
+ */
+
+typedef struct {
+ GTlsDatabase *database;
+ const gchar *path;
+} TestFileDatabase;
+
+static void
+setup_file_database (TestFileDatabase *test,
+ gconstpointer data)
+{
+ GError *error = NULL;
+
+ test->path = TEST_FILE ("ca-roots.pem");
+ test->database = g_tls_file_database_new (test->path, &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_DATABASE (test->database));
+}
+
+static void
+teardown_file_database (TestFileDatabase *test,
+ gconstpointer data)
+{
+ g_assert (G_IS_TLS_DATABASE (test->database));
+ g_object_add_weak_pointer (G_OBJECT (test->database),
+ (gpointer *)&test->database);
+ g_object_unref (test->database);
+ g_assert (test->database == NULL);
+}
+
+static void
+test_file_database_handle (TestFileDatabase *test,
+ gconstpointer unused)
+{
+ GTlsCertificate *certificate;
+ GTlsCertificate *check;
+ GError *error = NULL;
+ gchar *handle;
+
+ /*
+ * ca.pem is in the ca-roots.pem that the test->database represents.
+ * So it should be able to create a handle for it and treat it as if it
+ * is 'in' the database.
+ */
+
+ certificate = g_tls_certificate_new_from_file (TEST_FILE ("ca.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (certificate));
+
+ handle = g_tls_database_create_certificate_handle (test->database, certificate);
+ g_assert (handle != NULL);
+ g_assert (g_str_has_prefix (handle, "file:///"));
+
+ check = g_tls_database_lookup_certificate_for_handle (test->database, handle,
+ NULL, G_TLS_DATABASE_LOOKUP_NONE,
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (check));
+
+ g_free (handle);
+ g_object_unref (check);
+ g_object_unref (certificate);
+}
+
+static void
+test_file_database_handle_invalid (TestFileDatabase *test,
+ gconstpointer unused)
+{
+ GTlsCertificate *certificate;
+ GError *error = NULL;
+
+ certificate = g_tls_database_lookup_certificate_for_handle (test->database, "blah:blah",
+ NULL, G_TLS_DATABASE_LOOKUP_NONE,
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert (certificate == NULL);
+}
+
+/* -----------------------------------------------------------------------------
+ * BACKEND
+ */
+
+static void
+test_default_database_is_singleton (void)
+{
+ GTlsBackend *backend;
+ GTlsDatabase *database;
+ GTlsDatabase *check;
+
+ backend = g_tls_backend_get_default ();
+ g_assert (G_IS_TLS_BACKEND (backend));
+
+ database = g_tls_backend_get_default_database (backend);
+ g_assert (G_IS_TLS_DATABASE (database));
+
+ check = g_tls_backend_get_default_database (backend);
+ g_assert (database == check);
+
+ g_object_unref (database);
+ g_object_unref (check);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_type_init ();
+ g_test_init (&argc, &argv, NULL);
+
+ g_setenv ("GSETTINGS_BACKEND", "memory", TRUE);
+ g_setenv ("GIO_EXTRA_MODULES", TOP_BUILDDIR "/tls/gnutls/.libs", TRUE);
+ g_setenv ("GIO_USE_TLS", "gnutls", TRUE);
+
+ g_test_add_func ("/tls/backend/default-database-is-singleton",
+ test_default_database_is_singleton);
+
+ g_test_add ("/tls/database/verify-good", TestVerify, NULL,
+ setup_verify, test_verify_database_good, teardown_verify);
+ g_test_add ("/tls/database/verify-bad-identity", TestVerify, NULL,
+ setup_verify, test_verify_database_bad_identity, teardown_verify);
+ g_test_add ("/tls/database/verify-bad-ca", TestVerify, NULL,
+ setup_verify, test_verify_database_bad_ca, teardown_verify);
+ g_test_add ("/tls/database/verify-bad-before", TestVerify, NULL,
+ setup_verify, test_verify_database_bad_before, teardown_verify);
+ g_test_add ("/tls/database/verify-bad-expired", TestVerify, NULL,
+ setup_verify, test_verify_database_bad_expired, teardown_verify);
+ g_test_add ("/tls/database/verify-bad-combo", TestVerify, NULL,
+ setup_verify, test_verify_database_bad_combo, teardown_verify);
+
+ g_test_add ("/tls/file-database/test-handle", TestFileDatabase, NULL,
+ setup_file_database, test_file_database_handle, teardown_file_database);
+ g_test_add ("/tls/file-database/test-handle-invalid", TestFileDatabase, NULL,
+ setup_file_database, test_file_database_handle_invalid, teardown_file_database);
+
+ return g_test_run();
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]