Merge branch '2328-file-new-empty-path' into 'master'

glocalvfs: Create a dummy file for g_file_new_for_path("")

Closes #2328

See merge request GNOME/glib!1983
This commit is contained in:
Sebastian Dröge 2021-03-11 09:42:19 +00:00
commit db0ec9528e
3 changed files with 26 additions and 2 deletions

View File

@ -126,7 +126,7 @@ g_dummy_file_get_basename (GFile *file)
if (dummy->decoded_uri)
return g_path_get_basename (dummy->decoded_uri->path);
return g_strdup (dummy->text_uri);
return NULL;
}
static char *

View File

@ -80,7 +80,10 @@ static GFile *
g_local_vfs_get_file_for_path (GVfs *vfs,
const char *path)
{
return _g_local_file_new (path);
if (*path == '\0')
return _g_dummy_file_new (path);
else
return _g_local_file_new (path);
}
static GFile *

View File

@ -96,6 +96,26 @@ test_child (void)
g_object_unref (file);
}
static void
test_empty_path (void)
{
GFile *file = NULL;
g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2328");
g_test_summary ("Check that creating a file with an empty path results in errors");
/* Creating the file must always succeed. */
file = g_file_new_for_path ("");
g_assert_nonnull (file);
/* But then querying its path should indicate its invalid. */
g_assert_null (g_file_get_path (file));
g_assert_null (g_file_get_basename (file));
g_assert_null (g_file_get_parent (file));
g_object_unref (file);
}
static void
test_type (void)
{
@ -2875,6 +2895,7 @@ main (int argc, char *argv[])
g_test_add_func ("/file/build-filename", test_build_filename);
g_test_add_func ("/file/parent", test_parent);
g_test_add_func ("/file/child", test_child);
g_test_add_func ("/file/empty-path", test_empty_path);
g_test_add_func ("/file/type", test_type);
g_test_add_func ("/file/parse-name", test_parse_name);
g_test_add_data_func ("/file/async-create-delete/0", GINT_TO_POINTER (0), test_create_delete);