diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2020-05-05 00:41:04 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2020-05-05 01:09:17 +0200 |
commit | 6c2a4476c12a415fb712cd98b7d284c2d1419912 (patch) | |
tree | d35b8627bd37321233f387e69a42bcea220ed4c0 /tests | |
parent | eb51836aab83dcd9d426ed7db6d19a52d621f8d2 (diff) | |
download | tracker-6c2a4476c12a415fb712cd98b7d284c2d1419912.tar.gz |
tests: Add test for TrackerSparqlStatement bindings in SERVICE{}
This was broken, but no more. Make the direct and bus connections
use a separate store to avoid sqlite deadlocks, and test SERVICE{}
queries in the direct connection to make sure it doesn't regress.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/libtracker-sparql/statement/service.out | 1 | ||||
-rw-r--r-- | tests/libtracker-sparql/statement/service.rq | 5 | ||||
-rw-r--r-- | tests/libtracker-sparql/tracker-statement-test.c | 28 |
3 files changed, 28 insertions, 6 deletions
diff --git a/tests/libtracker-sparql/statement/service.out b/tests/libtracker-sparql/statement/service.out new file mode 100644 index 000000000..056950364 --- /dev/null +++ b/tests/libtracker-sparql/statement/service.out @@ -0,0 +1 @@ +"http://tracker.api.gnome.org/ontology/v3/nmm#MusicAlbum" diff --git a/tests/libtracker-sparql/statement/service.rq b/tests/libtracker-sparql/statement/service.rq new file mode 100644 index 000000000..f5569ddee --- /dev/null +++ b/tests/libtracker-sparql/statement/service.rq @@ -0,0 +1,5 @@ +SELECT ?u { + SERVICE <dbus:%s> { + ?u rdfs:label ~arg1 . + } +} diff --git a/tests/libtracker-sparql/tracker-statement-test.c b/tests/libtracker-sparql/tracker-statement-test.c index 48c82a637..38523fb51 100644 --- a/tests/libtracker-sparql/tracker-statement-test.c +++ b/tests/libtracker-sparql/tracker-statement-test.c @@ -32,6 +32,7 @@ typedef struct { const gchar *arg1; const gchar *arg2; const gchar *arg3; + gboolean service; TrackerSparqlConnection *conn; } TestInfo; @@ -43,6 +44,7 @@ TestInfo tests[] = { { "subject", "statement/subject.rq", "statement/subject.out", "http://tracker.api.gnome.org/ontology/v3/nmm#MusicAlbum" }, { "subject-2", "statement/subject.rq", "statement/subject-2.out", "urn:nonexistent" }, { "filter", "statement/filter.rq", "statement/filter.out", "http://tracker.api.gnome.org/ontology/v3/nmm#MusicAlbum", "Music album" }, + { "service", "statement/service.rq", "statement/service.out", "Music album", NULL, NULL, TRUE }, }; typedef struct { @@ -51,6 +53,7 @@ typedef struct { } StartupData; static gboolean started = FALSE; +static const gchar *bus_name = NULL; static void check_result (TrackerSparqlCursor *cursor, @@ -160,6 +163,14 @@ query_statement (TestInfo *test_info, g_assert_no_error (error); g_free (path); + if (test_info->service) { + gchar *service_query; + + service_query = g_strdup_printf (query, bus_name); + g_free (query); + query = service_query; + } + stmt = tracker_sparql_connection_query_statement (test_info->conn, query, NULL, &error); g_free (query); @@ -203,7 +214,7 @@ create_local_connection (GError **error) static gpointer thread_func (gpointer user_data) { - StartupData *data = user_data;; + StartupData *data = user_data; TrackerEndpointDBus *endpoint; GMainContext *context; GMainLoop *main_loop; @@ -242,22 +253,27 @@ create_connections (TrackerSparqlConnection **dbus, while (!started) g_usleep (100); - *dbus = tracker_sparql_connection_bus_new (g_dbus_connection_get_unique_name (data.dbus_conn), + bus_name = g_dbus_connection_get_unique_name (data.dbus_conn); + *dbus = tracker_sparql_connection_bus_new (bus_name, NULL, data.dbus_conn, error); - *direct = data.direct; + *direct = create_local_connection (error); return TRUE; } static void add_tests (TrackerSparqlConnection *conn, - const gchar *name) + const gchar *name, + gboolean run_service_tests) { gint i; for (i = 0; i < G_N_ELEMENTS (tests); i++) { gchar *testpath; + if (tests[i].service && !run_service_tests) + continue; + tests[i].conn = conn; testpath = g_strconcat ("/libtracker-sparql/statement/", name, "/", tests[i].test_name, NULL); g_test_add (testpath, TestInfo, &tests[i], setup, query_statement, NULL); @@ -276,8 +292,8 @@ main (gint argc, gchar **argv) g_assert_true (create_connections (&dbus, &direct, &error)); g_assert_no_error (error); - add_tests (direct, "direct"); - add_tests (dbus, "dbus"); + add_tests (direct, "direct", TRUE); + add_tests (dbus, "dbus", FALSE); return g_test_run (); } |