diff options
author | Hyunjee Kim <hj0426.kim@samsung.com> | 2019-12-03 10:57:58 +0900 |
---|---|---|
committer | Hyunjee Kim <hj0426.kim@samsung.com> | 2019-12-03 10:57:58 +0900 |
commit | 68bf5c4184c2899c4b0594930c7112d88f15e199 (patch) | |
tree | e37e1ab4b65798014596f9778bd2b2a73642e64c /gio/tests | |
parent | d5a1e991c0c65ccab2b0cb9b8b9320ee3b2ea8e5 (diff) | |
download | glib-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.c | 2 | ||||
-rw-r--r-- | gio/tests/gapplication.c | 6 | ||||
-rw-r--r-- | gio/tests/meson.build | 8 | ||||
-rw-r--r-- | gio/tests/monitor.c | 220 | ||||
-rw-r--r-- | gio/tests/network-address.c | 63 | ||||
-rw-r--r-- | gio/tests/resolver.c | 4 | ||||
-rw-r--r-- | gio/tests/socket-client.c | 2 | ||||
-rw-r--r-- | gio/tests/socket-server.c | 2 |
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; } |