summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-05-05 00:41:04 +0200
committerCarlos Garnacho <carlosg@gnome.org>2020-05-05 01:09:17 +0200
commit6c2a4476c12a415fb712cd98b7d284c2d1419912 (patch)
treed35b8627bd37321233f387e69a42bcea220ed4c0 /tests
parenteb51836aab83dcd9d426ed7db6d19a52d621f8d2 (diff)
downloadtracker-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.out1
-rw-r--r--tests/libtracker-sparql/statement/service.rq5
-rw-r--r--tests/libtracker-sparql/tracker-statement-test.c28
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 ();
}