summaryrefslogtreecommitdiff
path: root/gio/tests
diff options
context:
space:
mode:
authorHyunjee Kim <hj0426.kim@samsung.com>2019-12-03 10:57:58 +0900
committerHyunjee Kim <hj0426.kim@samsung.com>2019-12-03 10:57:58 +0900
commit68bf5c4184c2899c4b0594930c7112d88f15e199 (patch)
treee37e1ab4b65798014596f9778bd2b2a73642e64c /gio/tests
parentd5a1e991c0c65ccab2b0cb9b8b9320ee3b2ea8e5 (diff)
downloadglib-68bf5c4184c2899c4b0594930c7112d88f15e199.tar.gz
glib-68bf5c4184c2899c4b0594930c7112d88f15e199.tar.bz2
glib-68bf5c4184c2899c4b0594930c7112d88f15e199.zip
Imported Upstream version 2.61.1
Diffstat (limited to 'gio/tests')
-rw-r--r--gio/tests/desktop-app-info.c2
-rw-r--r--gio/tests/gapplication.c6
-rw-r--r--gio/tests/meson.build8
-rw-r--r--gio/tests/monitor.c220
-rw-r--r--gio/tests/network-address.c63
-rw-r--r--gio/tests/resolver.c4
-rw-r--r--gio/tests/socket-client.c2
-rw-r--r--gio/tests/socket-server.c2
8 files changed, 76 insertions, 231 deletions
diff --git a/gio/tests/desktop-app-info.c b/gio/tests/desktop-app-info.c
index ed2f89111..f4e509a59 100644
--- a/gio/tests/desktop-app-info.c
+++ b/gio/tests/desktop-app-info.c
@@ -659,7 +659,7 @@ test_search (void)
assert_search ("konq", "kde4-konqbrowser.desktop\n", TRUE, TRUE, NULL, NULL);
assert_search ("kate", "kde4-kate.desktop\n", TRUE, TRUE, NULL, NULL);
- /* make sure we can lookup apps by name properly */
+ /* make sure we can look up apps by name properly */
assert_info ("kde4-kate.desktop",
"kde4-kate.desktop\n"
"Kate\n"
diff --git a/gio/tests/gapplication.c b/gio/tests/gapplication.c
index ec57977a5..900e7ac97 100644
--- a/gio/tests/gapplication.c
+++ b/gio/tests/gapplication.c
@@ -140,7 +140,7 @@ basic (void)
main_loop = g_main_loop_new (NULL, 0);
- /* spawn the master */
+ /* spawn the main instance */
spawn ("activated\n"
"open file:///a file:///b\n"
"exit status: 0\n", NULL,
@@ -191,7 +191,7 @@ test_remote_command_line (void)
NULL);
g_object_unref (file);
- /* spawn the master */
+ /* spawn the main instance */
spawn (replies, NULL,
"./cmd", NULL);
@@ -255,7 +255,7 @@ test_remote_actions (void)
main_loop = g_main_loop_new (NULL, 0);
- /* spawn the master */
+ /* spawn the main instance */
spawn ("got ./cmd 0\n"
"activate action1\n"
"change action2 1\n"
diff --git a/gio/tests/meson.build b/gio/tests/meson.build
index f13458181..a0c09444b 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
@@ -54,7 +54,6 @@ gio_tests = {
'io-stream' : {},
'memory-input-stream' : {},
'memory-output-stream' : {},
- 'monitor' : {},
'mount-operation' : {},
'network-address' : {'extra_sources': ['mock-resolver.c']},
'network-monitor' : {},
@@ -141,13 +140,17 @@ if host_machine.system() != 'windows'
}
if have_rtld_next
+ # FIXME: This list will probably grow; see
+ # https://gitlab.gnome.org/GNOME/glib/issues/1739
+ no_libdl_systems = ['freebsd', 'netbsd', 'openbsd']
+
gio_tests += {
'gsocketclient-slow' : {
'depends' : [
shared_library('slow-connect-preload',
'slow-connect-preload.c',
name_prefix : '',
- dependencies: cc.find_library('dl'),
+ dependencies: cc.find_library('dl', required: not no_libdl_systems.contains(host_machine.system())),
install_dir : installed_tests_execdir,
install: installed_tests_enabled,
)
@@ -675,7 +678,6 @@ foreach test_name, extra_args : gio_tests
env : local_test_env,
timeout : timeout,
suite : suite,
- args : ['--tap'],
is_parallel : extra_args.get('is_parallel', true),
depends : extra_args.get('depends', []),
)
diff --git a/gio/tests/monitor.c b/gio/tests/monitor.c
deleted file mode 100644
index 4d64fa826..000000000
--- a/gio/tests/monitor.c
+++ /dev/null
@@ -1,220 +0,0 @@
-#include <gio/gio.h>
-#include <gstdio.h>
-
-typedef struct
-{
- gchar *tmp_dir;
-} Fixture;
-
-static void
-setup (Fixture *fixture,
- gconstpointer user_data)
-{
- GError *error = NULL;
-
- fixture->tmp_dir = g_dir_make_tmp ("gio-test-file-monitor_XXXXXX", &error);
- g_assert_no_error (error);
-
- g_test_message ("Using temporary directory: %s", fixture->tmp_dir);
-}
-
-static void
-teardown (Fixture *fixture,
- gconstpointer user_data)
-{
- g_assert_cmpint (g_rmdir (fixture->tmp_dir), ==, 0);
- g_clear_pointer (&fixture->tmp_dir, g_free);
-}
-
-typedef struct {
- GFile *file;
- GOutputStream *stream;
- GMainLoop *loop;
- gint state;
-} MonitorData;
-
-static gboolean
-create_file_idle (gpointer data)
-{
- MonitorData *d = data;
- GError *error = NULL;
-
- g_assert (d->state == 0);
-
- d->stream = (GOutputStream*)g_file_create (d->file, 0, NULL, &error);
- g_assert_no_error (error);
-
- d->state = 1;
-
- return G_SOURCE_REMOVE;
-}
-
-static gboolean
-write_file_idle (gpointer data)
-{
- MonitorData *d = data;
- GError *error = NULL;
-
- g_assert (d->state == 2);
-
- g_output_stream_write (d->stream, "abcd", 4, NULL, &error);
- g_assert_no_error (error);
- g_object_unref (d->stream);
- d->stream = NULL;
-
- d->state = 3;
-
-
- return G_SOURCE_REMOVE;
-}
-
-static gboolean
-delete_file_idle (gpointer data)
-{
- MonitorData *d = data;
- GError *error = NULL;
-
- g_assert (d->state == 4);
-
- g_file_delete (d->file, NULL, &error);
- g_assert_no_error (error);
-
- d->state = 5;
-
- return G_SOURCE_REMOVE;
-}
-
-static gboolean
-stop_loop_idle (gpointer data)
-{
- MonitorData *d = data;
-
- g_assert (d->state == 6);
-
- if (d->loop)
- g_main_loop_quit (d->loop);
-
- return G_SOURCE_REMOVE;
-}
-
-static void
-changed_cb (GFileMonitor *monitor,
- GFile *file,
- GFile *other_file,
- GFileMonitorEvent event,
- gpointer data)
-{
- MonitorData *d = data;
-
- switch (d->state)
- {
- case 1:
- g_assert (event == G_FILE_MONITOR_EVENT_CREATED);
- d->state = 2;
- g_idle_add (write_file_idle, data);
- break;
- case 3:
- g_assert (event == G_FILE_MONITOR_EVENT_CHANGED ||
- event == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT);
- if (event == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT)
- {
- d->state = 4;
- g_idle_add (delete_file_idle, data);
- }
- break;
- case 5:
- g_assert (event == G_FILE_MONITOR_EVENT_DELETED);
- d->state = 6;
- g_idle_add (stop_loop_idle, data);
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-}
-
-static void
-file_changed_cb (GFileMonitor *monitor,
- GFile *file,
- GFile *other_file,
- GFileMonitorEvent event,
- gpointer data)
-{
- gint *state = data;
-
- switch (*state)
- {
- case 0:
- g_assert (event == G_FILE_MONITOR_EVENT_CREATED);
- *state = 1;
- break;
- case 1:
- g_assert (event == G_FILE_MONITOR_EVENT_CHANGED ||
- event == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT);
- if (event == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT)
- *state = 2;
- break;
- case 2:
- g_assert (event == G_FILE_MONITOR_EVENT_DELETED);
- *state = 3;
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-}
-
-static void
-test_directory_monitor (Fixture *fixture,
- gconstpointer user_data)
-{
- GFile *file;
- GFile *child;
- GFileMonitor *dir_monitor;
- GFileMonitor *file_monitor;
- GError *error = NULL;
- MonitorData data;
- gint state;
- GMainLoop *loop;
-
- file = g_file_new_for_path (fixture->tmp_dir);
- dir_monitor = g_file_monitor_directory (file, 0, NULL, &error);
- g_assert_no_error (error);
-
- child = g_file_get_child (file, "test-file");
- file_monitor = g_file_monitor_file (child, 0, NULL, &error);
- g_assert_no_error (error);
-
- loop = g_main_loop_new (NULL, FALSE);
-
- g_signal_connect (dir_monitor, "changed", G_CALLBACK (changed_cb), &data);
- g_signal_connect (file_monitor, "changed", G_CALLBACK (file_changed_cb), &state);
-
- data.loop = loop;
- data.file = child;
- data.state = 0;
- state = 0;
-
- g_idle_add (create_file_idle, &data);
-
- g_main_loop_run (loop);
-
- g_assert_cmpint (data.state, ==, 6);
- g_assert_cmpint (state, ==, 3);
-
- g_main_loop_unref (loop);
- g_object_unref (dir_monitor);
- g_object_unref (file_monitor);
- g_object_unref (child);
- g_object_unref (file);
-}
-
-int
-main (int argc, char *argv[])
-{
- g_test_init (&argc, &argv, NULL);
-
- g_test_add ("/monitor/directory", Fixture, NULL, setup, test_directory_monitor, teardown);
-
- return g_test_run ();
-}
diff --git a/gio/tests/network-address.c b/gio/tests/network-address.c
index c62afccd2..0dcd7b292 100644
--- a/gio/tests/network-address.c
+++ b/gio/tests/network-address.c
@@ -426,7 +426,9 @@ typedef struct {
} AsyncData;
static void
-got_addr (GObject *source_object, GAsyncResult *result, gpointer user_data)
+got_addr (GObject *source_object,
+ GAsyncResult *result,
+ gpointer user_data)
{
GSocketAddressEnumerator *enumerator;
AsyncData *data;
@@ -466,6 +468,30 @@ got_addr (GObject *source_object, GAsyncResult *result, gpointer user_data)
}
static void
+got_addr_ignored (GObject *source_object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GSocketAddressEnumerator *enumerator;
+ GSocketAddress *a; /* owned */
+ GError *error = NULL;
+
+ /* This function simply ignores the returned addresses but keeps enumerating */
+
+ enumerator = G_SOCKET_ADDRESS_ENUMERATOR (source_object);
+
+ a = g_socket_address_enumerator_next_finish (enumerator, result, &error);
+ g_assert_no_error (error);
+ if (a != NULL)
+ {
+ g_object_unref (a);
+ g_socket_address_enumerator_next_async (enumerator, NULL,
+ got_addr_ignored, user_data);
+ }
+}
+
+
+static void
test_loopback_async (void)
{
GSocketConnectable *addr; /* owned */
@@ -647,6 +673,39 @@ test_happy_eyeballs_basic (HappyEyeballsFixture *fixture,
}
static void
+test_happy_eyeballs_parallel (HappyEyeballsFixture *fixture,
+ gconstpointer user_data)
+{
+ AsyncData data = { 0 };
+ GSocketAddressEnumerator *enumerator2;
+
+ enumerator2 = g_socket_connectable_enumerate (fixture->addr);
+
+ data.delay_ms = FAST_DELAY_LESS_THAN_TIMEOUT;
+ data.loop = fixture->loop;
+
+ /* We run multiple enumerations at once, the results shouldn't be affected. */
+
+ g_socket_address_enumerator_next_async (enumerator2, NULL, got_addr_ignored, &data);
+ g_socket_address_enumerator_next_async (fixture->enumerator, NULL, got_addr, &data);
+ g_main_loop_run (fixture->loop);
+
+ assert_list_matches_expected (data.addrs, fixture->input_all_results);
+
+ /* Run again to ensure the cache from the previous one is correct */
+
+ data.addrs = NULL;
+ g_object_unref (enumerator2);
+
+ enumerator2 = g_socket_connectable_enumerate (fixture->addr);
+ g_socket_address_enumerator_next_async (enumerator2, NULL, got_addr, &data);
+ g_main_loop_run (fixture->loop);
+
+ assert_list_matches_expected (data.addrs, fixture->input_all_results);
+ g_object_unref (enumerator2);
+}
+
+static void
test_happy_eyeballs_slow_ipv4 (HappyEyeballsFixture *fixture,
gconstpointer user_data)
{
@@ -958,6 +1017,8 @@ main (int argc, char *argv[])
g_test_add ("/network-address/happy-eyeballs/basic", HappyEyeballsFixture, NULL,
happy_eyeballs_setup, test_happy_eyeballs_basic, happy_eyeballs_teardown);
+ g_test_add ("/network-address/happy-eyeballs/parallel", HappyEyeballsFixture, NULL,
+ happy_eyeballs_setup, test_happy_eyeballs_parallel, happy_eyeballs_teardown);
g_test_add ("/network-address/happy-eyeballs/slow-ipv4", HappyEyeballsFixture, NULL,
happy_eyeballs_setup, test_happy_eyeballs_slow_ipv4, happy_eyeballs_teardown);
g_test_add ("/network-address/happy-eyeballs/slow-ipv6", HappyEyeballsFixture, NULL,
diff --git a/gio/tests/resolver.c b/gio/tests/resolver.c
index 85d512428..c57b81867 100644
--- a/gio/tests/resolver.c
+++ b/gio/tests/resolver.c
@@ -49,7 +49,7 @@ usage (void)
fprintf (stderr, " Use -s to do synchronous lookups.\n");
fprintf (stderr, " Use -c NUMBER (and only a single resolvable argument) to test GSocketConnectable.\n");
fprintf (stderr, " The given NUMBER determines how many times the connectable will be enumerated.\n");
- fprintf (stderr, " Use -t with MX, TXT, NS or SOA to lookup DNS records of those types.\n");
+ fprintf (stderr, " Use -t with MX, TXT, NS or SOA to look up DNS records of those types.\n");
exit (1);
}
@@ -222,6 +222,7 @@ print_resolved_txt (const char *rrname,
for (i = 0; contents[i] != NULL; i++)
printf ("%s\n", contents[i]);
g_variant_unref (t->data);
+ g_free (contents);
}
g_list_free (records);
}
@@ -739,6 +740,7 @@ main (int argc, char **argv)
g_source_remove (watch);
#endif
g_object_unref (cancellable);
+ g_option_context_free (context);
return 0;
}
diff --git a/gio/tests/socket-client.c b/gio/tests/socket-client.c
index 803f4d6e9..8df1c28f3 100644
--- a/gio/tests/socket-client.c
+++ b/gio/tests/socket-client.c
@@ -431,7 +431,7 @@ main (int argc,
{
if (!g_socket_close (socket, &error))
{
- g_printerr ("Error closing master socket: %s\n",
+ g_printerr ("Error closing socket: %s\n",
error->message);
return 1;
}
diff --git a/gio/tests/socket-server.c b/gio/tests/socket-server.c
index decf3ecd1..24cf0182e 100644
--- a/gio/tests/socket-server.c
+++ b/gio/tests/socket-server.c
@@ -356,7 +356,7 @@ main (int argc,
if (!g_socket_close (socket, &error))
{
- g_printerr ("Error closing master socket: %s\n",
+ g_printerr ("Error closing socket: %s\n",
error->message);
return 1;
}