summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlexandru Fazakas <alex.fazakas97@gmail.com>2018-08-28 12:35:46 +0000
committerAlexandru Fazakas <alex.fazakas97@gmail.com>2018-08-28 12:35:46 +0000
commit375c9ee792e1aa876ce314896a9b9c020ef5a522 (patch)
tree24b2a42e052e7d7ebdd05b67181f8cc7c5f42d55 /test
parent4593d71b7f495c405c941a4c2690f3560fe753d2 (diff)
downloadnautilus-375c9ee792e1aa876ce314896a9b9c020ef5a522.tar.gz
Undo/redo, search tests, test library and more
Diffstat (limited to 'test')
-rw-r--r--test/automated/displayless/meson.build11
-rw-r--r--test/automated/displayless/test-file-operations-copy-files.c964
-rw-r--r--test/automated/displayless/test-file-operations-move-files.c1768
-rw-r--r--test/automated/displayless/test-file-operations-trash-or-delete.c385
-rw-r--r--test/automated/displayless/test-nautilus-search-engine-model.c72
-rw-r--r--test/automated/displayless/test-nautilus-search-engine-simple.c68
-rw-r--r--test/automated/displayless/test-nautilus-search-engine-tracker.c106
-rw-r--r--test/automated/displayless/test-nautilus-search-engine.c50
-rw-r--r--test/automated/displayless/test-utilities.c555
-rw-r--r--test/automated/displayless/test-utilities.h34
10 files changed, 3247 insertions, 766 deletions
diff --git a/test/automated/displayless/meson.build b/test/automated/displayless/meson.build
index c3eebbad4..58f0b853b 100644
--- a/test/automated/displayless/meson.build
+++ b/test/automated/displayless/meson.build
@@ -17,6 +17,15 @@ tests = [
['test-nautilus-search-engine', [
'test-nautilus-search-engine.c'
]],
+ ['test-nautilus-search-engine-simple', [
+ 'test-nautilus-search-engine-simple.c'
+ ]],
+ ['test-nautilus-search-engine-model', [
+ 'test-nautilus-search-engine-model.c'
+ ]],
+ ['test-nautilus-search-engine-tracker', [
+ 'test-nautilus-search-engine-tracker.c'
+ ]],
['test-file-operations-copy-files', [
'test-file-operations-copy-files.c'
]],
@@ -28,7 +37,7 @@ tests = [
foreach t: tests
test(
t[0],
- executable(t[0], t[1], dependencies: libnautilus_dep),
+ executable(t[0], t[1], files('test-utilities.c'), dependencies: libnautilus_dep),
env: [
test_env,
'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()),
diff --git a/test/automated/displayless/test-file-operations-copy-files.c b/test/automated/displayless/test-file-operations-copy-files.c
index 30829d85f..8147adf8a 100644
--- a/test/automated/displayless/test-file-operations-copy-files.c
+++ b/test/automated/displayless/test-file-operations-copy-files.c
@@ -1,11 +1,4 @@
-#include <glib.h>
-#include "src/nautilus-directory.h"
-#include "src/nautilus-file-utilities.h"
-#include "src/nautilus-search-directory.h"
-#include "src/nautilus-directory.h"
-#include "src/nautilus-file-operations.c"
-#include <unistd.h>
-#include "eel/eel-string.h"
+#include "test-utilities.h"
static void
test_copy_one_file (void)
@@ -16,41 +9,67 @@ test_copy_one_file (void)
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
- GFileOutputStream *out = NULL;
- g_autoptr (GError) error = NULL;
+
+ create_one_file ("copy");
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "copy_first_dir");
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "copy_first_dir_child");
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
second_dir = g_file_get_child (root, "copy_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
result_file = g_file_get_child (second_dir, "copy_first_dir_child");
g_assert_true (g_file_query_exists (result_file, NULL));
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (first_dir, NULL, NULL));
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_one_file_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_one_file ("copy");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "copy_first_dir");
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "copy_first_dir_child");
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+
+ second_dir = g_file_get_child (root, "copy_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "copy_first_dir_child");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ empty_directory_by_prefix (root, "copy");
}
static void
@@ -63,327 +82,600 @@ test_copy_one_empty_directory (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_one_empty_directory ("copy");
+
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
first_dir = g_file_get_child (root, "copy_first_dir");
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "copy_first_dir_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
files = g_list_prepend (files, g_object_ref (file));
second_dir = g_file_get_child (root, "copy_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
result_file = g_file_get_child (second_dir, "copy_first_dir_child");
g_assert_true (g_file_query_exists (result_file, NULL));
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (first_dir, NULL, NULL));
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+ empty_directory_by_prefix (root, "copy");
}
static void
-test_copy_directories_small (void)
+test_copy_one_empty_directory_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_one_empty_directory ("copy");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+ first_dir = g_file_get_child (root, "copy_first_dir");
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "copy_first_dir_child");
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+
+ second_dir = g_file_get_child (root, "copy_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "copy_first_dir_child");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_files_small (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("copy", 10);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < 10; i++)
{
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
files = g_list_prepend (files, g_object_ref (file));
}
dir = g_file_get_child (root, "copy_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
for (int i = 0; i < 10; i++)
{
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (dir, file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "copy");
}
static void
-test_copy_directories_medium (void)
+test_copy_files_small_undo (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("copy", 10);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 10; i++)
+ {
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "copy_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ dir);
+
+ test_operation_undo ();
+
+ for (int i = 0; i < 10; i++)
+ {
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_files_medium (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("copy", 1000);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < 1000; i++)
{
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
files = g_list_prepend (files, g_object_ref (file));
}
dir = g_file_get_child (root, "copy_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
for (int i = 0; i < 1000; i++)
{
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (dir, file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "copy");
}
+static void
+test_copy_files_medium_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("copy", 1000);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 1000; i++)
+ {
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "copy_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ dir);
+ test_operation_undo ();
+
+ for (int i = 0; i < 1000; i++)
+ {
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
+}
static void
-test_copy_directories_large (void)
+test_copy_files_large (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("copy", 10000);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < 10000; i++)
{
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (root, file_name);
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
files = g_list_prepend (files, g_object_ref (file));
}
dir = g_file_get_child (root, "copy_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
for (int i = 0; i < 10000; i++)
{
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (dir, file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (root, file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "copy");
}
+static void
+test_copy_files_large_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("copy", 10000);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 10000; i++)
+ {
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "copy_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ dir);
+
+ test_operation_undo ();
+
+ for (int i = 0; i < 10000; i++)
+ {
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
+}
static void
-test_copy_files_small (void)
+test_copy_directories_small (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
- GFileOutputStream *out = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("copy", 10);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < 10; i++)
{
- g_autoptr (GError) error = NULL;
-
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
}
dir = g_file_get_child (root, "copy_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
for (int i = 0; i < 10; i++)
{
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (dir, file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "copy");
}
static void
-test_copy_files_medium (void)
+test_copy_directories_small_undo (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
- GFileOutputStream *out = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("copy", 10);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
- for (int i = 0; i < 1000; i++)
+ for (int i = 0; i < 10; i++)
{
- g_autoptr (GError) error = NULL;
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "copy_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ dir);
+
+ test_operation_undo ();
+
+ for (int i = 0; i < 10; i++)
+ {
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_directories_medium (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+ create_multiple_directories ("copy", 1000);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 1000; i++)
+ {
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
}
dir = g_file_get_child (root, "copy_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
for (int i = 0; i < 1000; i++)
{
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (dir, file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "copy");
}
static void
-test_copy_files_large (void)
+test_copy_directories_medium_undo (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
- GFileOutputStream *out = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("copy", 1000);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
- for (int i = 0; i < 10000; i++)
+ for (int i = 0; i < 1000; i++)
{
- g_autoptr (GError) error = NULL;
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "copy_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ dir);
+
+ test_operation_undo ();
+ for (int i = 0; i < 1000; i++)
+ {
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_directories_large (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("copy", 10000);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 10000; i++)
+ {
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
}
dir = g_file_get_child (root, "copy_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
for (int i = 0; i < 10000; i++)
{
file_name = g_strdup_printf ("copy_file_%i", i);
file = g_file_get_child (dir, file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_directories_large_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("copy", 10000);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 10000; i++)
+ {
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_assert_true (file != NULL);
+ g_free (file_name);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "copy_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ dir);
+
+ test_operation_undo ();
+
+ for (int i = 0; i < 10000; i++)
+ {
+ file_name = g_strdup_printf ("copy_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
}
/* The hierarchy looks like this:
@@ -392,7 +684,7 @@ test_copy_files_large (void)
* We're copying first_dir to second_dir.
*/
static void
-test_copy_first_hierarchy (void)
+test_copy_full_directory (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
@@ -401,39 +693,76 @@ test_copy_first_hierarchy (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_one_file ("copy");
+
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "copy_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "copy_first_dir_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
second_dir = g_file_get_child (root, "copy_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
result_file = g_file_get_child (second_dir, "copy_first_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
file = g_file_get_child (result_file, "copy_first_dir_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+ file = g_file_get_child (first_dir, "copy_first_dir_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+ g_assert_true (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_full_directory_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_one_file ("copy");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "copy_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "copy_first_dir_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "copy_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "copy_first_dir");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "copy_first_dir_child");
+ g_assert_false (g_file_query_exists (file, NULL));
file = g_file_get_child (first_dir, "copy_first_dir_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
g_assert_true (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
}
/* The hierarchy looks like this:
@@ -443,7 +772,7 @@ test_copy_first_hierarchy (void)
* We're copying first_dir to second_dir.
*/
static void
-test_copy_second_hierarchy (void)
+test_copy_first_hierarchy (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
@@ -452,52 +781,94 @@ test_copy_second_hierarchy (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_first_hierarchy ("copy");
+
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "copy_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "copy_first_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
file = g_file_get_child (first_dir, "copy_second_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
second_dir = g_file_get_child (root, "copy_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
result_file = g_file_get_child (second_dir, "copy_first_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
file = g_file_get_child (result_file, "copy_first_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (result_file, "copy_second_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
+ file = g_file_get_child (first_dir, "copy_first_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "copy_second_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ g_assert_true (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_first_hierarchy_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_first_hierarchy ("copy");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "copy_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "copy_first_child");
+ g_assert_true (file != NULL);
+ file = g_file_get_child (first_dir, "copy_second_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "copy_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "copy_first_dir");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "copy_first_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (result_file, "copy_second_child");
+ g_assert_false (g_file_query_exists (file, NULL));
file = g_file_get_child (first_dir, "copy_first_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_file_delete (file, NULL, NULL);
file = g_file_get_child (first_dir, "copy_second_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_file_delete (file, NULL, NULL);
g_assert_true (g_file_query_exists (first_dir, NULL));
- g_file_delete (first_dir, NULL, NULL);
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "copy");
}
/* The hierarchy looks like this:
@@ -506,7 +877,7 @@ test_copy_second_hierarchy (void)
* We're copying first_dir to second_dir.
*/
static void
-test_copy_third_hierarchy (void)
+test_copy_second_hierarchy (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
@@ -515,28 +886,23 @@ test_copy_third_hierarchy (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_second_hierarchy ("copy");
+
root = g_file_new_for_path (g_get_tmp_dir ());
first_dir = g_file_get_child (root, "copy_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "copy_first_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
file = g_file_get_child (file, "copy_second_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
second_dir = g_file_get_child (root, "copy_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
result_file = g_file_get_child (second_dir, "copy_first_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
@@ -545,24 +911,67 @@ test_copy_third_hierarchy (void)
file = g_file_get_child (file, "copy_second_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (result_file, "copy_first_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
+ file = g_file_get_child (first_dir, "copy_first_child");
+ file = g_file_get_child (file, "copy_second_child");
+
+ file = g_file_get_child (first_dir, "copy_first_child");
+
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_second_hierarchy_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_second_hierarchy ("copy");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "copy_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
file = g_file_get_child (first_dir, "copy_first_child");
+ g_assert_true (file != NULL);
+ file = g_file_get_child (file, "copy_second_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "copy_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "copy_first_dir");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "copy_first_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
file = g_file_get_child (file, "copy_second_child");
- g_assert_true (g_file_delete (file, NULL, NULL));
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (result_file, "copy_first_child");
+ g_assert_false (g_file_query_exists (file, NULL));
file = g_file_get_child (first_dir, "copy_first_child");
- g_assert_true (g_file_delete (file, NULL, NULL));
+ file = g_file_get_child (file, "copy_second_child");
- g_assert_true (g_file_delete (first_dir, NULL, NULL));
+ file = g_file_get_child (first_dir, "copy_first_child");
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+ empty_directory_by_prefix (root, "copy");
}
/* The hierarchy looks like this:
@@ -572,7 +981,7 @@ test_copy_third_hierarchy (void)
* We're copying first_dir to second_dir.
*/
static void
-test_copy_fourth_hierarchy (void)
+test_copy_third_hierarchy (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
@@ -581,37 +990,32 @@ test_copy_fourth_hierarchy (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_third_hierarchy ("copy");
+
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "copy_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "copy_first_dir_dir1");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
file = g_file_get_child (file, "copy_dir1_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
file = g_file_get_child (first_dir, "copy_first_dir_dir2");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
file = g_file_get_child (file, "copy_dir2_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
second_dir = g_file_get_child (root, "copy_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
result_file = g_file_get_child (second_dir, "copy_first_dir");
@@ -620,41 +1024,100 @@ test_copy_fourth_hierarchy (void)
g_assert_true (g_file_query_exists (file, NULL));
file = g_file_get_child (file, "copy_dir1_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (result_file, "copy_first_dir_dir1");
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (result_file, "copy_first_dir_dir2");
g_assert_true (g_file_query_exists (file, NULL));
file = g_file_get_child (file, "copy_dir2_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (result_file, "copy_first_dir_dir2");
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
+ file = g_file_get_child (first_dir, "copy_first_dir_dir1");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "copy_dir1_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (first_dir, "copy_first_dir_dir1");
+
+ file = g_file_get_child (first_dir, "copy_first_dir_dir2");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "copy_dir2_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (first_dir, "copy_first_dir_dir2");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ g_assert_true (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_third_hierarchy_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_third_hierarchy ("copy");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "copy_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "copy_first_dir_dir1");
+ g_assert_true (file != NULL);
+
+ file = g_file_get_child (file, "copy_dir1_child");
+ g_assert_true (file != NULL);
+
+ file = g_file_get_child (first_dir, "copy_first_dir_dir2");
+ g_assert_true (file != NULL);
+
+ file = g_file_get_child (file, "copy_dir2_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "copy_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "copy_first_dir");
+
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "copy_first_dir_dir1");
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "copy_dir1_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (result_file, "copy_first_dir_dir2");
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "copy_dir2_child");
+ g_assert_false (g_file_query_exists (file, NULL));
file = g_file_get_child (first_dir, "copy_first_dir_dir1");
g_assert_true (g_file_query_exists (file, NULL));
file = g_file_get_child (file, "copy_dir1_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (first_dir, "copy_first_dir_dir1");
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (first_dir, "copy_first_dir_dir2");
g_assert_true (g_file_query_exists (file, NULL));
file = g_file_get_child (file, "copy_dir2_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
file = g_file_get_child (first_dir, "copy_first_dir_dir2");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
g_assert_true (g_file_query_exists (first_dir, NULL));
- g_assert_true (g_file_delete (first_dir, NULL, NULL));
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+ empty_directory_by_prefix (root, "copy");
}
/* The hierarchy looks like this:
@@ -664,7 +1127,7 @@ test_copy_fourth_hierarchy (void)
* We're copying first_dir and second_dir to third_dir.
*/
static void
-test_copy_fifth_hierarchy (void)
+test_copy_fourth_hierarchy (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
@@ -674,62 +1137,109 @@ test_copy_fifth_hierarchy (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_fourth_hierarchy ("copy");
+
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "copy_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "copy_first_dir_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
second_dir = g_file_get_child (root, "copy_second_dir");
files = g_list_prepend (files, g_object_ref (second_dir));
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
file = g_file_get_child (second_dir, "copy_second_dir_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
third_dir = g_file_get_child (root, "copy_third_dir");
g_assert_true (third_dir != NULL);
- g_file_make_directory (third_dir, NULL, NULL);
nautilus_file_operations_copy_sync (files,
- third_dir,
- NULL,
- NULL,
- NULL);
+ third_dir);
result_file = g_file_get_child (third_dir, "copy_first_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
file = g_file_get_child (result_file, "copy_first_dir_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
result_file = g_file_get_child (third_dir, "copy_second_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
file = g_file_get_child (result_file, "copy_second_dir_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
file = g_file_get_child (first_dir, "copy_first_dir_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
g_assert_true (g_file_query_exists (first_dir, NULL));
- g_assert_true (g_file_delete (first_dir, NULL, NULL));
file = g_file_get_child (second_dir, "copy_second_dir_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
g_assert_true (g_file_query_exists (second_dir, NULL));
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
- g_assert_true (g_file_delete (third_dir, NULL, NULL));
+ empty_directory_by_prefix (root, "copy");
+}
+
+static void
+test_copy_fourth_hierarchy_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) third_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_fourth_hierarchy ("copy");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "copy_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "copy_first_dir_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "copy_second_dir");
+ files = g_list_prepend (files, g_object_ref (second_dir));
+ g_assert_true (second_dir != NULL);
+
+ file = g_file_get_child (second_dir, "copy_second_dir_child");
+ g_assert_true (file != NULL);
+
+ third_dir = g_file_get_child (root, "copy_third_dir");
+ g_assert_true (third_dir != NULL);
+
+ nautilus_file_operations_copy_sync (files,
+ third_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (third_dir, "copy_first_dir");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "copy_first_dir_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ result_file = g_file_get_child (third_dir, "copy_second_dir");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "copy_second_dir_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "copy_first_dir_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+ g_assert_true (g_file_query_exists (first_dir, NULL));
+
+ file = g_file_get_child (second_dir, "copy_second_dir_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+ g_assert_true (g_file_query_exists (second_dir, NULL));
+
+ empty_directory_by_prefix (root, "copy");
}
static void
@@ -737,30 +1247,56 @@ setup_test_suite (void)
{
g_test_add_func ("/test-copy-one-file/1.0",
test_copy_one_file);
+ g_test_add_func ("/test-copy-one-file-undo/1.0",
+ test_copy_one_file_undo);
g_test_add_func ("/test-copy-one-empty-directory/1.0",
test_copy_one_empty_directory);
+ g_test_add_func ("/test-copy-one-empty-directory-undo/1.0",
+ test_copy_one_empty_directory_undo);
g_test_add_func ("/test-copy-files/1.0",
test_copy_files_small);
+ g_test_add_func ("/test-copy-files-undo/1.0",
+ test_copy_files_small_undo);
g_test_add_func ("/test-copy-files/1.1",
test_copy_files_medium);
+ g_test_add_func ("/test-copy-files-undo/1.1",
+ test_copy_files_medium_undo);
g_test_add_func ("/test-copy-files/1.2",
test_copy_files_large);
+ g_test_add_func ("/test-copy-files-undo/1.2",
+ test_copy_files_large_undo);
g_test_add_func ("/test-copy-directories/1.0",
test_copy_directories_small);
+ g_test_add_func ("/test-copy-directories-undo/1.0",
+ test_copy_directories_small_undo);
g_test_add_func ("/test-copy-directories/1.1",
test_copy_directories_medium);
+ g_test_add_func ("/test-copy-directories-undo/1.1",
+ test_copy_directories_medium_undo);
g_test_add_func ("/test-copy-directories/1.2",
test_copy_directories_large);
+ g_test_add_func ("/test-copy-directories-undo/1.2",
+ test_copy_directories_large_undo);
g_test_add_func ("/test-copy-hierarchy/1.0",
- test_copy_first_hierarchy);
+ test_copy_full_directory);
+ g_test_add_func ("/test-copy-hierarchy-undo/1.0",
+ test_copy_full_directory_undo);
g_test_add_func ("/test-copy-hierarchy/1.1",
- test_copy_second_hierarchy);
+ test_copy_first_hierarchy);
+ g_test_add_func ("/test-copy-hierarchy-undo/1.1",
+ test_copy_first_hierarchy_undo);
g_test_add_func ("/test-copy-hierarchy/1.2",
- test_copy_third_hierarchy);
+ test_copy_second_hierarchy);
+ g_test_add_func ("/test-copy-hierarchy-undo/1.2",
+ test_copy_second_hierarchy_undo);
g_test_add_func ("/test-copy-hierarchy/1.3",
- test_copy_fourth_hierarchy);
+ test_copy_third_hierarchy);
+ g_test_add_func ("/test-copy-hierarchy-undo/1.3",
+ test_copy_third_hierarchy_undo);
g_test_add_func ("/test-copy-hierarchy/1.4",
- test_copy_fifth_hierarchy);
+ test_copy_fourth_hierarchy);
+ g_test_add_func ("/test-copy-hierarchy-undo/1.4",
+ test_copy_fourth_hierarchy_undo);
}
int
@@ -768,10 +1304,10 @@ main (int argc, char *argv[])
{
g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
+ undo_manager = nautilus_file_undo_manager_new ();
g_test_init (&argc, &argv, NULL);
g_test_set_nonfatal_assertions ();
nautilus_ensure_extension_points();
- undo_manager = nautilus_file_undo_manager_new ();
setup_test_suite ();
diff --git a/test/automated/displayless/test-file-operations-move-files.c b/test/automated/displayless/test-file-operations-move-files.c
index 1b2e678aa..6b476e7fa 100644
--- a/test/automated/displayless/test-file-operations-move-files.c
+++ b/test/automated/displayless/test-file-operations-move-files.c
@@ -1,13 +1,4 @@
-#include <glib.h>
-#include <glib/gprintf.h>
-#include "src/nautilus-directory.h"
-#include "src/nautilus-file-utilities.h"
-#include "src/nautilus-search-directory.h"
-#include "src/nautilus-directory.h"
-#include "src/nautilus-file-operations.c"
-#include "src/nautilus-file-undo-manager.h"
-#include <unistd.h>
-#include "eel/eel-string.h"
+#include "test-utilities.h"
static void
test_move_one_file (void)
@@ -18,40 +9,107 @@ test_move_one_file (void)
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
- GFileOutputStream *out = NULL;
- g_autoptr (GError) error = NULL;
+
+ create_one_file ("move");
root = g_file_new_for_path (g_get_tmp_dir ());
- first_dir = g_file_get_child (root, "first_dir");
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
- file = g_file_get_child (first_dir, "first_dir_child");
+ file = g_file_get_child (first_dir, "move_first_dir_child");
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
- second_dir = g_file_get_child (root, "second_dir");
+ second_dir = g_file_get_child (root, "move_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
+
+ result_file = g_file_get_child (second_dir, "move_first_dir_child");
- result_file = g_file_get_child (second_dir, "first_dir_child");
g_assert_true (g_file_query_exists (result_file, NULL));
g_assert_false (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
- g_assert_true (g_file_delete (first_dir, NULL, NULL));
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_one_file_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_one_file ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir_child");
+
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_one_file_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_one_file ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo_redo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir_child");
+
+ g_assert_true (g_file_query_exists (result_file, NULL));
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ empty_directory_by_prefix (root, "move");
}
static void
@@ -64,313 +122,892 @@ test_move_one_empty_directory (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_one_empty_directory ("move");
+
root = g_file_new_for_path (g_get_tmp_dir ());
- first_dir = g_file_get_child (root, "first_dir");
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
- file = g_file_get_child (first_dir, "first_dir_child");
+ file = g_file_get_child (first_dir, "move_first_dir_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
files = g_list_prepend (files, g_object_ref (file));
- second_dir = g_file_get_child (root, "second_dir");
+ second_dir = g_file_get_child (root, "move_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
- result_file = g_file_get_child (second_dir, "first_dir_child");
+ result_file = g_file_get_child (second_dir, "move_first_dir_child");
g_assert_true (g_file_query_exists (result_file, NULL));
g_assert_false (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
- g_assert_true (g_file_delete (first_dir, NULL, NULL));
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+ empty_directory_by_prefix (root, "move");
}
static void
-test_move_directories_small (void)
+test_move_one_empty_directory_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_one_empty_directory ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir_child");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_one_empty_directory_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_one_empty_directory ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo_redo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir_child");
+ g_assert_true (g_file_query_exists (result_file, NULL));
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_files_small (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("move", 10);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < 10; i++)
{
- file_name = g_strdup_printf ("file_%i", i);
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
files = g_list_prepend (files, g_object_ref (file));
}
- dir = g_file_get_child (root, "dir");
+ dir = g_file_get_child (root, "move_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
for (int i = 0; i < 10; i++)
{
- file_name = g_strdup_printf ("file_%i", i);
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (dir, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "move");
}
static void
-test_move_directories_medium (void)
+test_move_files_small_undo (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("move", 10);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
- for (int i = 0; i < 1000; i++)
+ for (int i = 0; i < 10; i++)
{
- file_name = g_strdup_printf ("file_%i", i);
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
files = g_list_prepend (files, g_object_ref (file));
}
- dir = g_file_get_child (root, "dir");
+ dir = g_file_get_child (root, "move_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
+
+ test_operation_undo ();
- for (int i = 0; i < 1000; i++)
+ for (int i = 0; i < 10; i++)
{
- file_name = g_strdup_printf ("file_%i", i);
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "move");
}
-/* Test not included as it would timeout on the CI. */
+static void
+test_move_files_small_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
-/*static void
-test_move_directories_large (void)
+ create_multiple_files ("move", 10);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 10; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ test_operation_undo_redo ();
+
+ for (int i = 0; i < 10; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_files_medium (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("move", 50);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
- for (int i = 0; i < 10000; i++)
+ for (int i = 0; i < 50; i++)
{
- file_name = g_strdup_printf ("file_%i", i);
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
files = g_list_prepend (files, g_object_ref (file));
}
- dir = g_file_get_child (root, "dir");
+ dir = g_file_get_child (root, "move_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
- for (int i = 0; i < 10000; i++)
+ for (int i = 0; i < 50; i++)
{
- file_name = g_strdup_printf ("file_%i", i);
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (dir, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
-}*/
+ empty_directory_by_prefix (root, "move");
+}
static void
-test_move_files_small (void)
+test_move_files_medium_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("move", 50);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+
+ for (int i = 0; i < 50; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ test_operation_undo ();
+
+ for (int i = 0; i < 50; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_files_medium_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("move", 50);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 50; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ test_operation_undo_redo ();
+
+ for (int i = 0; i < 50; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_files_large (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
- GFileOutputStream *out = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("move", 500);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+
+ for (int i = 0; i < 500; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ test_operation_undo ();
+
+ for (int i = 0; i < 500; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_files_large_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("move", 500);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 500; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+ test_operation_undo_redo ();
+
+ for (int i = 0; i < 500; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_files_large_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("move", 500);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 500; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ test_operation_undo_redo ();
+
+ for (int i = 0; i < 500; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_directories_small (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("move", 10);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 10; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ for (int i = 0; i < 10; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_directories_small_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("move", 10);
root = g_file_new_for_path (g_get_tmp_dir ());
for (int i = 0; i < 10; i++)
{
- g_autoptr (GError) error = NULL;
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ test_operation_undo ();
+
+ for (int i = 0; i < 10; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_directories_small_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("move", 10);
- file_name = g_strdup_printf ("file_%i", i);
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 10; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
}
- dir = g_file_get_child (root, "dir");
+ dir = g_file_get_child (root, "move_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
+
+ test_operation_undo_redo ();
for (int i = 0; i < 10; i++)
{
- file_name = g_strdup_printf ("file_%i", i);
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (dir, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "move");
}
static void
-test_move_files_medium (void)
+test_move_directories_medium (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("move", 50);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 50; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ for (int i = 0; i < 50; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_directories_medium_undo (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
- GFileOutputStream *out = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("move", 50);
root = g_file_new_for_path (g_get_tmp_dir ());
- for (int i = 0; i < 1000; i++)
+ for (int i = 0; i < 50; i++)
{
- g_autoptr (GError) error = NULL;
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ test_operation_undo ();
+
+ for (int i = 0; i < 50; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
- file_name = g_strdup_printf ("file_%i", i);
+static void
+test_move_directories_medium_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_files ("move", 50);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 50; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
}
- dir = g_file_get_child (root, "dir");
+ dir = g_file_get_child (root, "move_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
+
+ test_operation_undo_redo ();
- for (int i = 0; i < 1000; i++)
+ for (int i = 0; i < 50; i++)
{
- file_name = g_strdup_printf ("file_%i", i);
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (dir, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "move");
}
+static void
+test_move_directories_large (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("move", 500);
-/* Test not included as it would timeout on the CI. */
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
-/*static void
-test_move_files_large (void)
+ for (int i = 0; i < 500; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
+
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ for (int i = 0; i < 500; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_directories_large_undo (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
- g_autofree gchar *file_name = NULL;
- GFileOutputStream *out = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("move", 500);
root = g_file_new_for_path (g_get_tmp_dir ());
- for (int i = 0; i < 10000; i++)
+ for (int i = 0; i < 500; i++)
{
- g_autoptr (GError) error = NULL;
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (file != NULL);
+ files = g_list_prepend (files, g_object_ref (file));
+ }
- file_name = g_strdup_printf ("file_%i", i);
+ dir = g_file_get_child (root, "move_dir");
+ g_assert_true (dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ dir);
+
+ test_operation_undo ();
+
+ for (int i = 0; i < 500; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (dir, file_name);
+ g_assert_false (g_file_query_exists (file, NULL));
file = g_file_get_child (root, file_name);
+ g_free (file_name);
+ g_assert_true (g_file_query_exists (file, NULL));
+ }
+
+ g_assert_true (g_file_query_exists (dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_directories_large_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ g_autolist (GFile) files = NULL;
+ gchar *file_name;
+
+ create_multiple_directories ("move", 500);
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < 500; i++)
+ {
+ file_name = g_strdup_printf ("move_file_%i", i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
}
- dir = g_file_get_child (root, "dir");
+ dir = g_file_get_child (root, "move_dir");
g_assert_true (dir != NULL);
- g_file_make_directory (dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- dir,
- NULL,
- NULL,
- NULL);
+ dir);
+
+ test_operation_undo_redo ();
- for (int i = 0; i < 10000; i++)
+ for (int i = 0; i < 500; i++)
{
- file_name = g_strdup_printf ("file_%i", i);
+ file_name = g_strdup_printf ("move_file_%i", i);
file = g_file_get_child (dir, file_name);
+ g_free (file_name);
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
}
g_assert_true (g_file_query_exists (dir, NULL));
- g_assert_true (g_file_delete (dir, NULL, NULL));
-}*/
+
+ empty_directory_by_prefix (root, "move");
+}
/* The hierarchy looks like this:
* /tmp/first_dir/first_dir_child
@@ -378,7 +1015,7 @@ test_move_files_large (void)
* We're moving first_dir to second_dir.
*/
static void
-test_move_first_hierarchy (void)
+test_move_full_directory (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
@@ -387,38 +1024,117 @@ test_move_first_hierarchy (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_one_file ("move");
+
root = g_file_new_for_path (g_get_tmp_dir ());
- first_dir = g_file_get_child (root, "first_dir");
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
- file = g_file_get_child (first_dir, "first_dir_child");
+ file = g_file_get_child (first_dir, "move_first_dir_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- second_dir = g_file_get_child (root, "second_dir");
+ second_dir = g_file_get_child (root, "move_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
- result_file = g_file_get_child (second_dir, "first_dir");
+ result_file = g_file_get_child (second_dir, "move_first_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
- file = g_file_get_child (result_file, "first_dir_child");
+ file = g_file_get_child (result_file, "move_first_dir_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+ g_assert_false (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_full_directory_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_one_file ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_first_dir_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_true (g_file_query_exists (file, NULL));
- file = g_file_get_child (first_dir, "first_dir_child");
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_full_directory_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_one_file ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo_redo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir");
+ g_assert_true (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_first_dir_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
g_assert_false (g_file_query_exists (file, NULL));
g_assert_false (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
}
/* The hierarchy looks like this:
@@ -428,7 +1144,7 @@ test_move_first_hierarchy (void)
* We're moving first_dir to second_dir.
*/
static void
-test_move_second_hierarchy (void)
+test_move_first_hierarchy (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
@@ -437,49 +1153,145 @@ test_move_second_hierarchy (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_first_hierarchy ("move");
+
root = g_file_new_for_path (g_get_tmp_dir ());
- first_dir = g_file_get_child (root, "first_dir");
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
- file = g_file_get_child (first_dir, "first_child");
+ file = g_file_get_child (first_dir, "move_first_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- file = g_file_get_child (first_dir, "second_child");
+ file = g_file_get_child (first_dir, "move_second_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- second_dir = g_file_get_child (root, "second_dir");
+ second_dir = g_file_get_child (root, "move_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
- result_file = g_file_get_child (second_dir, "first_dir");
+ result_file = g_file_get_child (second_dir, "move_first_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
- file = g_file_get_child (result_file, "first_child");
+ file = g_file_get_child (result_file, "move_first_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (result_file, "move_second_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_first_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_second_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ g_assert_false (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_first_hierarchy_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_first_hierarchy ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_child");
+ g_assert_true (file != NULL);
+ file = g_file_get_child (first_dir, "move_second_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_first_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (result_file, "move_second_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_first_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- file = g_file_get_child (result_file, "second_child");
+ file = g_file_get_child (first_dir, "move_second_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ g_assert_true (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_first_hierarchy_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_first_hierarchy ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_child");
+ g_assert_true (file != NULL);
+ file = g_file_get_child (first_dir, "move_second_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo_redo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir");
+ g_assert_true (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_first_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
+ file = g_file_get_child (result_file, "move_second_child");
+ g_assert_true (g_file_query_exists (file, NULL));
- file = g_file_get_child (first_dir, "first_child");
+ file = g_file_get_child (first_dir, "move_first_child");
g_assert_false (g_file_query_exists (file, NULL));
- file = g_file_get_child (first_dir, "second_child");
+ file = g_file_get_child (first_dir, "move_second_child");
g_assert_false (g_file_query_exists (file, NULL));
g_assert_false (g_file_query_exists (first_dir, NULL));
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "move");
}
/* The hierarchy looks like this:
@@ -488,7 +1300,7 @@ test_move_second_hierarchy (void)
* We're moving first_dir to second_dir.
*/
static void
-test_move_third_hierarchy (void)
+test_move_second_hierarchy (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
@@ -497,52 +1309,154 @@ test_move_third_hierarchy (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_second_hierarchy ("move");
+
root = g_file_new_for_path (g_get_tmp_dir ());
- first_dir = g_file_get_child (root, "first_dir");
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_child");
+ g_assert_true (file != NULL);
+ file = g_file_get_child (file, "move_second_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ result_file = g_file_get_child (second_dir, "move_first_dir");
+ g_assert_true (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_first_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (file, "move_second_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (result_file, "move_first_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_first_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "move_second_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ g_assert_false (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_second_hierarchy_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_second_hierarchy ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_child");
+ g_assert_true (file != NULL);
+ file = g_file_get_child (file, "move_second_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_first_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (file, "move_second_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_first_child");
+ file = g_file_get_child (file, "move_second_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_first_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ g_assert_true (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_second_hierarchy_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_second_hierarchy ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
g_file_make_directory (first_dir, NULL, NULL);
- file = g_file_get_child (first_dir, "first_child");
+ file = g_file_get_child (first_dir, "move_first_child");
g_assert_true (file != NULL);
g_file_make_directory (file, NULL, NULL);
- file = g_file_get_child (file, "second_child");
+ file = g_file_get_child (file, "move_second_child");
g_assert_true (file != NULL);
g_file_make_directory (file, NULL, NULL);
- second_dir = g_file_get_child (root, "second_dir");
+ second_dir = g_file_get_child (root, "move_second_dir");
g_assert_true (second_dir != NULL);
g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
- result_file = g_file_get_child (second_dir, "first_dir");
+ test_operation_undo_redo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
- file = g_file_get_child (result_file, "first_child");
+ file = g_file_get_child (result_file, "move_first_child");
g_assert_true (g_file_query_exists (file, NULL));
- file = g_file_get_child (file, "second_child");
+ file = g_file_get_child (file, "move_second_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- file = g_file_get_child (result_file, "first_child");
+ file = g_file_get_child (result_file, "move_first_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
-
- g_assert_true (g_file_delete (result_file, NULL, NULL));
- file = g_file_get_child (first_dir, "first_child");
+ file = g_file_get_child (first_dir, "move_first_child");
g_assert_false (g_file_query_exists (file, NULL));
- file = g_file_get_child (file, "second_child");
+ file = g_file_get_child (file, "move_second_child");
g_assert_false (g_file_query_exists (file, NULL));
g_assert_false (g_file_query_exists (first_dir, NULL));
- g_assert_true (g_file_delete (second_dir, NULL, NULL));
+ empty_directory_by_prefix (root, "move");
}
/* The hierarchy looks like this:
@@ -552,7 +1466,7 @@ test_move_third_hierarchy (void)
* We're moving first_dir to second_dir.
*/
static void
-test_move_fourth_hierarchy (void)
+test_move_third_hierarchy (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
@@ -561,77 +1475,203 @@ test_move_fourth_hierarchy (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_third_hierarchy ("move");
+
root = g_file_new_for_path (g_get_tmp_dir ());
- first_dir = g_file_get_child (root, "first_dir");
+ first_dir = g_file_get_child (root, "move_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
- file = g_file_get_child (first_dir, "first_dir_dir1");
+ file = g_file_get_child (first_dir, "move_first_dir_dir1");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- file = g_file_get_child (file, "dir1_child");
+ file = g_file_get_child (file, "move_dir1_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- file = g_file_get_child (first_dir, "first_dir_dir2");
+ file = g_file_get_child (first_dir, "move_first_dir_dir2");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- file = g_file_get_child (file, "dir2_child");
+ file = g_file_get_child (file, "move_dir2_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- second_dir = g_file_get_child (root, "second_dir");
+ second_dir = g_file_get_child (root, "move_second_dir");
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- second_dir,
- NULL,
- NULL,
- NULL);
+ second_dir);
- result_file = g_file_get_child (second_dir, "first_dir");
+ result_file = g_file_get_child (second_dir, "move_first_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
- file = g_file_get_child (result_file, "first_dir_dir1");
+ file = g_file_get_child (result_file, "move_first_dir_dir1");
g_assert_true (g_file_query_exists (file, NULL));
- file = g_file_get_child (file, "dir1_child");
- g_assert_true (g_file_delete (file, NULL, NULL));
- file = g_file_get_child (result_file, "first_dir_dir1");
- g_assert_true (g_file_delete (file, NULL, NULL));
+ file = g_file_get_child (file, "move_dir1_child");
+ file = g_file_get_child (result_file, "move_first_dir_dir1");
- file = g_file_get_child (result_file, "first_dir_dir2");
+ file = g_file_get_child (result_file, "move_first_dir_dir2");
g_assert_true (g_file_query_exists (file, NULL));
- file = g_file_get_child (file, "dir2_child");
+ file = g_file_get_child (file, "move_dir2_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- file = g_file_get_child (result_file, "first_dir_dir2");
- g_assert_true (g_file_delete (file, NULL, NULL));
-
- g_assert_true (g_file_delete (result_file, NULL, NULL));
+ file = g_file_get_child (result_file, "move_first_dir_dir2");
- file = g_file_get_child (first_dir, "first_dir_dir1");
+ file = g_file_get_child (first_dir, "move_first_dir_dir1");
g_assert_false (g_file_query_exists (file, NULL));
- file = g_file_get_child (file, "dir1_child");
+ file = g_file_get_child (file, "move_dir1_child");
g_assert_false (g_file_query_exists (file, NULL));
- file = g_file_get_child (first_dir, "first_dir_dir1");
- g_assert_false (g_file_delete (file, NULL, NULL));
+ file = g_file_get_child (first_dir, "move_first_dir_dir1");
- file = g_file_get_child (first_dir, "first_dir_dir2");
+ file = g_file_get_child (first_dir, "move_first_dir_dir2");
g_assert_false (g_file_query_exists (file, NULL));
- file = g_file_get_child (file, "dir2_child");
+ file = g_file_get_child (file, "move_dir2_child");
g_assert_false (g_file_query_exists (file, NULL));
- file = g_file_get_child (first_dir, "first_dir_dir2");
+ file = g_file_get_child (first_dir, "move_first_dir_dir2");
g_assert_false (g_file_query_exists (file, NULL));
g_assert_false (g_file_query_exists (first_dir, NULL));
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_third_hierarchy_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_third_hierarchy ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_dir1");
+ g_assert_true (file != NULL);
+
+ file = g_file_get_child (file, "move_dir1_child");
+ g_assert_true (file != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_dir2");
+ g_assert_true (file != NULL);
+
+ file = g_file_get_child (file, "move_dir2_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir");
+
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_first_dir_dir1");
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "move_dir1_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (result_file, "move_first_dir_dir2");
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "move_dir2_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_first_dir_dir1");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "move_dir1_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (first_dir, "move_first_dir_dir1");
+
+ file = g_file_get_child (first_dir, "move_first_dir_dir2");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "move_dir2_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (first_dir, "move_first_dir_dir2");
+
+ g_assert_true (g_file_query_exists (first_dir, NULL));
+
g_assert_true (g_file_delete (second_dir, NULL, NULL));
}
+static void
+test_move_third_hierarchy_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_third_hierarchy ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ first_dir = g_file_get_child (root, "move_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_dir1");
+ g_assert_true (file != NULL);
+
+ file = g_file_get_child (file, "move_dir1_child");
+ g_assert_true (file != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_dir2");
+ g_assert_true (file != NULL);
+
+ file = g_file_get_child (file, "move_dir2_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ g_assert_true (second_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ second_dir);
+
+ test_operation_undo_redo ();
+
+ result_file = g_file_get_child (second_dir, "move_first_dir");
+
+ g_assert_true (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_first_dir_dir1");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "move_dir1_child");
+ file = g_file_get_child (result_file, "move_first_dir_dir1");
+
+ file = g_file_get_child (result_file, "move_first_dir_dir2");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "move_dir2_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+ file = g_file_get_child (result_file, "move_first_dir_dir2");
+
+ file = g_file_get_child (first_dir, "move_first_dir_dir1");
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "move_dir1_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (first_dir, "move_first_dir_dir1");
+
+ file = g_file_get_child (first_dir, "move_first_dir_dir2");
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (file, "move_dir2_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+ file = g_file_get_child (first_dir, "move_first_dir_dir2");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ g_assert_false (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
/* The hierarchy looks like this:
* /tmp/first_dir/first_dir_child
* /tmp/second_dir/second_dir_child
@@ -639,7 +1679,7 @@ test_move_fourth_hierarchy (void)
* We're moving first_dir and second_dir to third_dir.
*/
static void
-test_move_fifth_hierarchy (void)
+test_move_fourth_hierarchy (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
@@ -649,58 +1689,162 @@ test_move_fifth_hierarchy (void)
g_autoptr (GFile) result_file = NULL;
g_autolist (GFile) files = NULL;
+ create_fourth_hierarchy ("move");
+
root = g_file_new_for_path (g_get_tmp_dir ());
- first_dir = g_file_get_child (root, "first_dir");
+ first_dir = g_file_get_child (root, "move_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
- file = g_file_get_child (first_dir, "first_dir_child");
+ file = g_file_get_child (first_dir, "move_first_dir_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- second_dir = g_file_get_child (root, "second_dir");
+ second_dir = g_file_get_child (root, "move_second_dir");
files = g_list_prepend (files, g_object_ref (second_dir));
g_assert_true (second_dir != NULL);
- g_file_make_directory (second_dir, NULL, NULL);
- file = g_file_get_child (second_dir, "second_dir_child");
+ file = g_file_get_child (second_dir, "move_second_dir_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- third_dir = g_file_get_child (root, "third_dir");
+ third_dir = g_file_get_child (root, "move_third_dir");
+ g_assert_true (third_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ third_dir);
+
+ result_file = g_file_get_child (third_dir, "move_first_dir");
+ g_assert_true (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_first_dir_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ result_file = g_file_get_child (third_dir, "move_second_dir");
+ g_assert_true (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_second_dir_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+ g_assert_false (g_file_query_exists (first_dir, NULL));
+
+ file = g_file_get_child (second_dir, "move_second_dir_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+ g_assert_false (g_file_query_exists (second_dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_fourth_hierarchy_undo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) third_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_fourth_hierarchy ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ first_dir = g_file_get_child (root, "move_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ files = g_list_prepend (files, g_object_ref (second_dir));
+ g_assert_true (second_dir != NULL);
+
+ file = g_file_get_child (second_dir, "move_second_dir_child");
+ g_assert_true (file != NULL);
+
+ third_dir = g_file_get_child (root, "move_third_dir");
+ g_assert_true (third_dir != NULL);
+
+ nautilus_file_operations_move_sync (files,
+ third_dir);
+
+ test_operation_undo ();
+
+ result_file = g_file_get_child (third_dir, "move_first_dir");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_first_dir_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ result_file = g_file_get_child (third_dir, "move_second_dir");
+ g_assert_false (g_file_query_exists (result_file, NULL));
+ file = g_file_get_child (result_file, "move_second_dir_child");
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+ g_assert_true (g_file_query_exists (first_dir, NULL));
+
+ file = g_file_get_child (second_dir, "move_second_dir_child");
+ g_assert_true (g_file_query_exists (file, NULL));
+ g_assert_true (g_file_query_exists (second_dir, NULL));
+
+ empty_directory_by_prefix (root, "move");
+}
+
+static void
+test_move_fourth_hierarchy_undo_redo (void)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) third_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ g_autolist (GFile) files = NULL;
+
+ create_fourth_hierarchy ("move");
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ first_dir = g_file_get_child (root, "move_first_dir");
+ files = g_list_prepend (files, g_object_ref (first_dir));
+ g_assert_true (first_dir != NULL);
+
+ file = g_file_get_child (first_dir, "move_first_dir_child");
+ g_assert_true (file != NULL);
+
+ second_dir = g_file_get_child (root, "move_second_dir");
+ files = g_list_prepend (files, g_object_ref (second_dir));
+ g_assert_true (second_dir != NULL);
+
+ file = g_file_get_child (second_dir, "move_second_dir_child");
+ g_assert_true (file != NULL);
+
+ third_dir = g_file_get_child (root, "move_third_dir");
g_assert_true (third_dir != NULL);
- g_file_make_directory (third_dir, NULL, NULL);
nautilus_file_operations_move_sync (files,
- third_dir,
- NULL,
- NULL,
- NULL);
+ third_dir);
+
+ test_operation_undo_redo ();
- result_file = g_file_get_child (third_dir, "first_dir");
+ result_file = g_file_get_child (third_dir, "move_first_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
- file = g_file_get_child (result_file, "first_dir_child");
+ file = g_file_get_child (result_file, "move_first_dir_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
- result_file = g_file_get_child (third_dir, "second_dir");
+ result_file = g_file_get_child (third_dir, "move_second_dir");
g_assert_true (g_file_query_exists (result_file, NULL));
- file = g_file_get_child (result_file, "second_dir_child");
+ file = g_file_get_child (result_file, "move_second_dir_child");
g_assert_true (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (file, NULL, NULL));
- g_assert_true (g_file_delete (result_file, NULL, NULL));
- file = g_file_get_child (first_dir, "first_dir_child");
+ file = g_file_get_child (first_dir, "move_first_dir_child");
g_assert_false (g_file_query_exists (file, NULL));
g_assert_false (g_file_query_exists (first_dir, NULL));
- file = g_file_get_child (second_dir, "second_dir_child");
+ file = g_file_get_child (second_dir, "move_second_dir_child");
g_assert_false (g_file_query_exists (file, NULL));
g_assert_false (g_file_query_exists (second_dir, NULL));
- g_assert_true (g_file_delete (third_dir, NULL, NULL));
+ empty_directory_by_prefix (root, "move");
}
static void
@@ -708,30 +1852,82 @@ setup_test_suite (void)
{
g_test_add_func ("/test-move-one-file/1.0",
test_move_one_file);
+ g_test_add_func ("/test-move-one-file-undo/1.0",
+ test_move_one_file_undo);
+ g_test_add_func ("/test-move-one-file-undo-redo/1.0",
+ test_move_one_file_undo_redo);
g_test_add_func ("/test-move-one-empty-directory/1.0",
test_move_one_empty_directory);
+ g_test_add_func ("/test-move-one-empty-directory-undo/1.0",
+ test_move_one_empty_directory_undo);
+ g_test_add_func ("/test-move-one-empty-directory-undo-redo/1.0",
+ test_move_one_empty_directory_undo_redo);
g_test_add_func ("/test-move-files/1.0",
test_move_files_small);
+ g_test_add_func ("/test-move-files-undo/1.0",
+ test_move_files_small_undo);
+ g_test_add_func ("/test-move-files-undo-redo/1.0",
+ test_move_files_small_undo_redo);
g_test_add_func ("/test-move-files/1.1",
test_move_files_medium);
- // g_test_add_func ("/test-move-files/1.2",
- // test_move_files_large);
+ g_test_add_func ("/test-move-files-undo/1.1",
+ test_move_files_medium_undo);
+ g_test_add_func ("/test-move-files-undo-redo/1.1",
+ test_move_files_medium_undo_redo);
+ g_test_add_func ("/test-move-files/1.2",
+ test_move_files_large);
+ g_test_add_func ("/test-move-files-undo/1.2",
+ test_move_files_large_undo);
+ g_test_add_func ("/test-move-files-undo-redo/1.2",
+ test_move_files_large_undo_redo);
g_test_add_func ("/test-move-directories/1.0",
test_move_directories_small);
+ g_test_add_func ("/test-move-directories-undo/1.0",
+ test_move_directories_small_undo);
+ g_test_add_func ("/test-move-directories-undo-redo/1.0",
+ test_move_directories_small_undo_redo);
g_test_add_func ("/test-move-directories/1.1",
test_move_directories_medium);
- // g_test_add_func ("/test-move-directories/1.2",
- // test_move_directories_large);
+ g_test_add_func ("/test-move-directories-undo/1.1",
+ test_move_directories_medium_undo);
+ g_test_add_func ("/test-move-directories-undo-redo/1.1",
+ test_move_directories_medium_undo_redo);
+ g_test_add_func ("/test-move-directories/1.2",
+ test_move_directories_large);
+ g_test_add_func ("/test-move-directories-undo/1.2",
+ test_move_directories_large_undo);
+ g_test_add_func ("/test-move-directories-undo-redo/1.2",
+ test_move_directories_large_undo_redo);
g_test_add_func ("/test-move-hierarchy/1.0",
- test_move_first_hierarchy);
+ test_move_full_directory);
+ g_test_add_func ("/test-move-hierarchy-undo/1.0",
+ test_move_full_directory_undo);
+ g_test_add_func ("/test-move-hierarchy-undo-redo/1.0",
+ test_move_full_directory_undo_redo);
g_test_add_func ("/test-move-hierarchy/1.1",
- test_move_second_hierarchy);
+ test_move_first_hierarchy);
+ g_test_add_func ("/test-move-hierarchy-undo/1.1",
+ test_move_first_hierarchy_undo);
+ g_test_add_func ("/test-move-hierarchy-undo-redo/1.1",
+ test_move_first_hierarchy_undo_redo);
g_test_add_func ("/test-move-hierarchy/1.2",
- test_move_third_hierarchy);
+ test_move_second_hierarchy);
+ g_test_add_func ("/test-move-hierarchy-undo/1.2",
+ test_move_second_hierarchy_undo);
+ g_test_add_func ("/test-move-hierarchy-undo-redo/1.2",
+ test_move_second_hierarchy_undo_redo);
g_test_add_func ("/test-move-hierarchy/1.3",
- test_move_fourth_hierarchy);
+ test_move_third_hierarchy);
+ g_test_add_func ("/test-move-hierarchy-undo/1.3",
+ test_move_third_hierarchy_undo);
+ g_test_add_func ("/test-move-hierarchy-undo-redo/1.3",
+ test_move_third_hierarchy_undo_redo);
g_test_add_func ("/test-move-hierarchy/1.4",
- test_move_fifth_hierarchy);
+ test_move_fourth_hierarchy);
+ g_test_add_func ("/test-move-hierarchy-undo/1.4",
+ test_move_fourth_hierarchy_undo);
+ g_test_add_func ("/test-move-hierarchy-undo-redo/1.4",
+ test_move_fourth_hierarchy_undo_redo);
}
int
@@ -739,10 +1935,10 @@ main (int argc, char *argv[])
{
g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
+ undo_manager = nautilus_file_undo_manager_new ();
g_test_init (&argc, &argv, NULL);
g_test_set_nonfatal_assertions ();
nautilus_ensure_extension_points();
- undo_manager = nautilus_file_undo_manager_new ();
setup_test_suite ();
diff --git a/test/automated/displayless/test-file-operations-trash-or-delete.c b/test/automated/displayless/test-file-operations-trash-or-delete.c
index e6115ec70..21a451340 100644
--- a/test/automated/displayless/test-file-operations-trash-or-delete.c
+++ b/test/automated/displayless/test-file-operations-trash-or-delete.c
@@ -1,11 +1,4 @@
-#include <glib.h>
-#include "src/nautilus-directory.h"
-#include "src/nautilus-file-utilities.h"
-#include "src/nautilus-search-directory.h"
-#include "src/nautilus-directory.h"
-#include "src/nautilus-file-operations.c"
-#include <unistd.h>
-#include "eel/eel-string.h"
+#include "test-utilities.h"
static void
test_trash_one_file (void)
@@ -14,31 +7,24 @@ test_trash_one_file (void)
g_autoptr (GFile) first_dir = NULL;
g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
- GFileOutputStream *out = NULL;
- g_autoptr (GError) error = NULL;
+
+ create_one_file ("trash_or_delete");
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "trash_or_delete_first_dir");
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "trash_or_delete_first_dir_child");
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
- trash_or_delete_internal_sync (files,
- NULL,
- TRUE,
- NULL,
- NULL);
+ nautilus_file_operations_trash_or_delete_sync (files);
g_assert_false (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (first_dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
static void
@@ -47,40 +33,36 @@ test_trash_more_files_func (gint files_to_trash)
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
- GFileOutputStream *out = NULL;
+
+ create_multiple_files ("trash_or_delete", files_to_trash);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < files_to_trash; i++)
{
- g_autofree gchar *file_name = NULL;
- g_autoptr (GError) error = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
}
- trash_or_delete_internal_sync (files,
- NULL,
- TRUE,
- NULL,
- NULL);
+ nautilus_file_operations_trash_or_delete_sync (files);
for (int i = 0; i < files_to_trash; i++)
{
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_false (g_file_query_exists (file, NULL));
}
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
static void
@@ -96,31 +78,24 @@ test_delete_one_file (void)
g_autoptr (GFile) first_dir = NULL;
g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
- GFileOutputStream *out = NULL;
- g_autoptr (GError) error = NULL;
+
+ create_one_file ("trash_or_delete");
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "trash_or_delete_first_dir");
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "trash_or_delete_first_dir_child");
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
- trash_or_delete_internal_sync (files,
- NULL,
- TRUE,
- NULL,
- NULL);
+ nautilus_file_operations_delete_sync (files);
g_assert_false (g_file_query_exists (file, NULL));
- g_assert_true (g_file_delete (first_dir, NULL, NULL));
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
static void
@@ -129,40 +104,36 @@ test_delete_more_files_func (gint files_to_delete)
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
- GFileOutputStream *out = NULL;
+
+ create_multiple_files ("trash_or_delete", files_to_delete);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < files_to_delete; i++)
{
- g_autofree gchar *file_name = NULL;
- g_autoptr (GError) error = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (file));
}
- trash_or_delete_internal_sync (files,
- NULL,
- FALSE,
- NULL,
- NULL);
+ nautilus_file_operations_delete_sync (files);
for (int i = 0; i < files_to_delete; i++)
{
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_false (g_file_query_exists (file, NULL));
}
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
static void
@@ -176,22 +147,27 @@ test_trash_one_empty_directory (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
+ create_one_empty_directory ("trash_or_delete");
+
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "trash_or_delete_first_dir");
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
- files = g_list_prepend (files, g_object_ref (first_dir));
+ file = g_file_get_child (first_dir, "trash_or_delete_first_dir_child");
+ g_assert_true (file != NULL);
- trash_or_delete_internal_sync (files,
- NULL,
- TRUE,
- NULL,
- NULL);
+ files = g_list_prepend (files, g_object_ref (file));
- g_assert_false (g_file_query_exists (first_dir, NULL));
+ nautilus_file_operations_trash_or_delete_sync (files);
+
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
static void
@@ -201,35 +177,37 @@ test_trash_more_empty_directories_func (gint directories_to_trash)
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
+
+ create_multiple_directories ("trash_or_delete", directories_to_trash);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < directories_to_trash; i++)
{
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
files = g_list_prepend (files, g_object_ref (file));
}
- trash_or_delete_internal_sync (files,
- NULL,
- TRUE,
- NULL,
- NULL);
+ nautilus_file_operations_trash_or_delete_sync (files);
for (int i = 0; i < directories_to_trash; i++)
{
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
g_assert_false (g_file_query_exists (file, NULL));
}
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
static void
@@ -243,22 +221,26 @@ test_delete_one_empty_directory (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
+ create_one_empty_directory ("trash_or_delete");
+
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "trash_or_delete_first_dir");
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
+ file = g_file_get_child (first_dir, "trash_or_delete_first_dir_child");
+ g_assert_true (file != NULL);
- files = g_list_prepend (files, g_object_ref (first_dir));
+ files = g_list_prepend (files, g_object_ref (file));
- trash_or_delete_internal_sync (files,
- NULL,
- FALSE,
- NULL,
- NULL);
+ nautilus_file_operations_delete_sync (files);
- g_assert_false (g_file_query_exists (first_dir, NULL));
+ g_assert_false (g_file_query_exists (file, NULL));
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
static void
@@ -268,35 +250,38 @@ test_delete_more_empty_directories_func (gint directories_to_delete)
g_autoptr (GFile) file = NULL;
g_autoptr (GFile) dir = NULL;
g_autolist (GFile) files = NULL;
+
+ create_multiple_directories ("trash_or_delete", directories_to_delete);
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < directories_to_delete; i++)
{
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
files = g_list_prepend (files, g_object_ref (file));
}
- trash_or_delete_internal_sync (files,
- NULL,
- FALSE,
- NULL,
- NULL);
+ nautilus_file_operations_delete_sync (files);
+
for (int i = 0; i < directories_to_delete; i++)
{
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
file = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_true (file != NULL);
g_assert_false (g_file_query_exists (file, NULL));
}
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
static void
@@ -305,72 +290,37 @@ test_delete_more_empty_directories (void)
test_delete_more_empty_directories_func (100);
}
+/* The hierarchy looks like this:
+ * /tmp/first_dir/first_dir_child
+ * We're trashing first_dir.
+ */
static void
-test_trash_one_full_directory (void)
+test_trash_full_directory (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
- GFileOutputStream *out = NULL;
- g_autoptr (GError) error = NULL;
+
+ create_one_file ("trash_or_delete");
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "trash_or_delete_first_dir");
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "trash_or_delete_first_dir_child");
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (first_dir));
- trash_or_delete_internal_sync (files,
- NULL,
- TRUE,
- NULL,
- NULL);
+ nautilus_file_operations_trash_or_delete_sync (files);
g_assert_false (g_file_query_exists (first_dir, NULL));
g_assert_false (g_file_query_exists (file, NULL));
-}
-
-/* The hierarchy looks like this:
- * /tmp/first_dir/first_dir_child
- * We're trashing first_dir.
- */
-static void
-test_trash_first_hierarchy (void)
-{
- g_autoptr (GFile) root = NULL;
- g_autoptr (GFile) first_dir = NULL;
- g_autoptr (GFile) file = NULL;
- g_autolist (GFile) files = NULL;
-
- root = g_file_new_for_path (g_get_tmp_dir ());
- first_dir = g_file_get_child (root, "trash_or_delete_first_dir");
- files = g_list_prepend (files, g_object_ref (first_dir));
- g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
-
- file = g_file_get_child (first_dir, "trash_or_delete_first_dir_child");
- g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
-
- trash_or_delete_internal_sync (files,
- NULL,
- TRUE,
- NULL,
- NULL);
-
- g_assert_false (g_file_query_exists (file, NULL));
- g_assert_false (g_file_query_exists (first_dir, NULL));
+ empty_directory_by_prefix (root, "trash_or_delete");
}
/* The hierarchy looks like this:
@@ -379,31 +329,28 @@ test_trash_first_hierarchy (void)
* We're trashing first_dir.
*/
static void
-test_trash_second_hierarchy (void)
+test_trash_first_hierarchy (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
+
+ create_first_hierarchy ("trash_or_delete");
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "trash_or_delete_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "trash_or_delete_first_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
file = g_file_get_child (first_dir, "trash_or_delete_second_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- trash_or_delete_internal_sync (files,
- NULL,
- TRUE,
- NULL,
- NULL);
+ nautilus_file_operations_trash_or_delete_sync (files);
file = g_file_get_child (first_dir, "trash_or_delete_first_dir_child");
g_assert_false (g_file_query_exists (file, NULL));
@@ -412,6 +359,8 @@ test_trash_second_hierarchy (void)
g_assert_false (g_file_query_exists (file, NULL));
g_assert_false (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
/* We're creating 50 directories each containing one file
@@ -424,111 +373,75 @@ test_trash_third_hierarchy (void)
g_autoptr (GFile) directory = NULL;
g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
-
+
+ create_multiple_full_directories ("trash_or_delete", 50);
+
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < 50; i++)
{
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_directory_%i", i);
directory = g_file_get_child (root, file_name);
- g_file_make_directory (directory, NULL, NULL);
+ g_free (file_name);
files = g_list_prepend (files, g_object_ref (directory));
-
- file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
- file = g_file_get_child (directory, file_name);
- g_file_make_directory (file, NULL, NULL);
}
- trash_or_delete_internal_sync (files,
- NULL,
- TRUE,
- NULL,
- NULL);
+ nautilus_file_operations_trash_or_delete_sync (files);
for (int i = 0; i < 50; i++)
{
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_directory_%i", i);
directory = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_false (g_file_query_exists (directory, NULL));
file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
file = g_file_get_child (directory, file_name);
+ g_free (file_name);
g_assert_false (g_file_query_exists (file, NULL));
}
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
+/* The hierarchy looks like this:
+ * /tmp/first_dir/first_dir_child
+ * We're deleting first_dir.
+ */
static void
-test_delete_one_full_directory (void)
+test_delete_full_directory (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
- GFileOutputStream *out = NULL;
- g_autoptr (GError) error = NULL;
+
+ create_one_file ("trash_or_delete");
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "trash_or_delete_first_dir");
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "trash_or_delete_first_dir_child");
g_assert_true (file != NULL);
- out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
- {
- g_object_unref (out);
- }
files = g_list_prepend (files, g_object_ref (first_dir));
- trash_or_delete_internal_sync (files,
- NULL,
- FALSE,
- NULL,
- NULL);
+ nautilus_file_operations_delete_sync (files);
g_assert_false (g_file_query_exists (first_dir, NULL));
g_assert_false (g_file_query_exists (file, NULL));
-}
-/* The hierarchy looks like this:
- * /tmp/first_dir/first_dir_child
- * We're deleting first_dir.
- */
-static void
-test_delete_first_hierarchy (void)
-{
- g_autoptr (GFile) root = NULL;
- g_autoptr (GFile) first_dir = NULL;
- g_autoptr (GFile) file = NULL;
- g_autolist (GFile) files = NULL;
-
- root = g_file_new_for_path (g_get_tmp_dir ());
- first_dir = g_file_get_child (root, "trash_or_delete_first_dir");
- files = g_list_prepend (files, g_object_ref (first_dir));
- g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
-
- file = g_file_get_child (first_dir, "trash_or_delete_first_dir_child");
- g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
-
- trash_or_delete_internal_sync (files,
- NULL,
- FALSE,
- NULL,
- NULL);
-
- g_assert_false (g_file_query_exists (file, NULL));
-
- g_assert_false (g_file_query_exists (first_dir, NULL));
+ empty_directory_by_prefix (root, "trash_or_delete");
}
/* The hierarchy looks like this:
@@ -537,31 +450,28 @@ test_delete_first_hierarchy (void)
* We're deleting first_dir.
*/
static void
-test_delete_second_hierarchy (void)
+test_delete_first_hierarchy (void)
{
g_autoptr (GFile) root = NULL;
g_autoptr (GFile) first_dir = NULL;
g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
+
+ create_first_hierarchy ("trash_or_delete");
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
first_dir = g_file_get_child (root, "trash_or_delete_first_dir");
files = g_list_prepend (files, g_object_ref (first_dir));
g_assert_true (first_dir != NULL);
- g_file_make_directory (first_dir, NULL, NULL);
file = g_file_get_child (first_dir, "trash_or_delete_first_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
file = g_file_get_child (first_dir, "trash_or_delete_second_child");
g_assert_true (file != NULL);
- g_file_make_directory (file, NULL, NULL);
- trash_or_delete_internal_sync (files,
- NULL,
- FALSE,
- NULL,
- NULL);
+ nautilus_file_operations_delete_sync (files);
file = g_file_get_child (first_dir, "trash_or_delete_first_dir_child");
g_assert_false (g_file_query_exists (file, NULL));
@@ -570,6 +480,8 @@ test_delete_second_hierarchy (void)
g_assert_false (g_file_query_exists (file, NULL));
g_assert_false (g_file_query_exists (first_dir, NULL));
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
/* We're creating 50 directories each containing one file
@@ -582,43 +494,42 @@ test_delete_third_hierarchy (void)
g_autoptr (GFile) directory = NULL;
g_autoptr (GFile) file = NULL;
g_autolist (GFile) files = NULL;
-
+
+ create_multiple_full_directories ("trash_or_delete", 50);
+
root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
for (int i = 0; i < 50; i++)
{
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_directory_%i", i);
directory = g_file_get_child (root, file_name);
- g_file_make_directory (directory, NULL, NULL);
+ g_free (file_name);
files = g_list_prepend (files, g_object_ref (directory));
-
- file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
- file = g_file_get_child (directory, file_name);
- g_file_make_directory (file, NULL, NULL);
}
- trash_or_delete_internal_sync (files,
- NULL,
- FALSE,
- NULL,
- NULL);
+ nautilus_file_operations_delete_sync (files);
for (int i = 0; i < 50; i++)
{
- g_autofree gchar *file_name = NULL;
+ gchar *file_name;
file_name = g_strdup_printf ("trash_or_delete_directory_%i", i);
directory = g_file_get_child (root, file_name);
+ g_free (file_name);
g_assert_false (g_file_query_exists (directory, NULL));
file_name = g_strdup_printf ("trash_or_delete_file_%i", i);
file = g_file_get_child (directory, file_name);
+ g_free (file_name);
g_assert_false (g_file_query_exists (file, NULL));
}
+
+ empty_directory_by_prefix (root, "trash_or_delete");
}
static void
@@ -641,19 +552,15 @@ setup_test_suite (void)
g_test_add_func ("/test-delete-more-directories/1.0",
test_delete_more_empty_directories);
g_test_add_func ("/test-trash-one-full-directory/1.0",
- test_trash_one_full_directory);
+ test_trash_full_directory);
g_test_add_func ("/test-trash-one-full-directory/1.1",
test_trash_first_hierarchy);
- g_test_add_func ("/test-trash-one-full-directory/1.2",
- test_trash_second_hierarchy);
- g_test_add_func ("/test-trash-more-full-directories/1.6",
+ g_test_add_func ("/test-trash-more-full-directories/1.2",
test_trash_third_hierarchy);
g_test_add_func ("/test-delete-one-full-directory/1.0",
- test_delete_one_full_directory);
+ test_delete_full_directory);
g_test_add_func ("/test-delete-one-full-directory/1.1",
test_delete_first_hierarchy);
- g_test_add_func ("/test-delete-one-full-directory/1.2",
- test_delete_second_hierarchy);
g_test_add_func ("/test-delete-more-full-directories/1.6",
test_delete_third_hierarchy);
diff --git a/test/automated/displayless/test-nautilus-search-engine-model.c b/test/automated/displayless/test-nautilus-search-engine-model.c
new file mode 100644
index 000000000..05086f8b7
--- /dev/null
+++ b/test/automated/displayless/test-nautilus-search-engine-model.c
@@ -0,0 +1,72 @@
+#include "test-utilities.h"
+
+static void
+hits_added_cb (NautilusSearchEngine *engine,
+ GSList *hits)
+{
+ g_print ("Hits added for search engine model!\n");
+ for (gint hit_number = 0; hits != NULL; hits = hits->next, hit_number++)
+ {
+ g_print ("Hit %i: %s\n", hit_number, nautilus_search_hit_get_uri (hits->data));
+ }
+}
+
+static void
+finished_cb (NautilusSearchEngine *engine,
+ NautilusSearchProviderStatus status,
+ gpointer user_data)
+{
+ nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (engine));
+
+ g_print ("\nNautilus search engine model finished!\n");
+
+ delete_search_file_hierarchy ("model");
+
+ g_main_loop_quit (user_data);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_autoptr (GMainLoop) loop = NULL;
+ NautilusSearchEngine *engine;
+ NautilusSearchEngineModel *model;
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autoptr (NautilusQuery) query = NULL;
+ g_autoptr (GFile) location = NULL;
+
+ loop = g_main_loop_new (NULL, FALSE);
+
+ nautilus_ensure_extension_points ();
+ /* Needed for nautilus-query.c.
+ * FIXME: tests are not installed, so the system does not
+ * have the gschema. Installed tests is a long term GNOME goal.
+ */
+ nautilus_global_preferences_init ();
+
+ engine = nautilus_search_engine_new ();
+ g_signal_connect (engine, "hits-added",
+ G_CALLBACK (hits_added_cb), NULL);
+ g_signal_connect (engine, "finished",
+ G_CALLBACK (finished_cb), loop);
+
+ query = nautilus_query_new ();
+ nautilus_query_set_text (query, "engine_model");
+ nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (engine), query);
+
+ location = g_file_new_for_path (g_get_tmp_dir ());
+ directory = nautilus_directory_get (location);
+ model = nautilus_search_engine_get_model_provider (engine);
+ nautilus_search_engine_model_set_model (model, directory);
+
+ nautilus_query_set_location (query, location);
+
+ create_search_file_hierarchy ("model");
+
+ nautilus_search_engine_start_by_target (NAUTILUS_SEARCH_PROVIDER (engine),
+ NAUTILUS_SEARCH_ENGINE_MODEL_ENGINE);
+
+ g_main_loop_run (loop);
+ return 0;
+}
diff --git a/test/automated/displayless/test-nautilus-search-engine-simple.c b/test/automated/displayless/test-nautilus-search-engine-simple.c
new file mode 100644
index 000000000..82eb865b3
--- /dev/null
+++ b/test/automated/displayless/test-nautilus-search-engine-simple.c
@@ -0,0 +1,68 @@
+#include "test-utilities.h"
+
+static void
+hits_added_cb (NautilusSearchEngine *engine,
+ GSList *hits)
+{
+ g_print ("Hits added for search engine simple!\n");
+ for (gint hit_number = 0; hits != NULL; hits = hits->next, hit_number++)
+ {
+ g_print ("Hit %i: %s\n", hit_number, nautilus_search_hit_get_uri (hits->data));
+ }
+}
+
+static void
+finished_cb (NautilusSearchEngine *engine,
+ NautilusSearchProviderStatus status,
+ gpointer user_data)
+{
+ nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (engine));
+
+ g_print ("\nNautilus search engine simple finished!\n");
+
+ delete_search_file_hierarchy ("simple");
+
+ g_main_loop_quit (user_data);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_autoptr (GMainLoop) loop = NULL;
+ NautilusSearchEngine *engine;
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autoptr (NautilusQuery) query = NULL;
+ g_autoptr (GFile) location = NULL;
+
+ loop = g_main_loop_new (NULL, FALSE);
+
+ nautilus_ensure_extension_points ();
+ /* Needed for nautilus-query.c.
+ * FIXME: tests are not installed, so the system does not
+ * have the gschema. Installed tests is a long term GNOME goal.
+ */
+ nautilus_global_preferences_init ();
+
+ engine = nautilus_search_engine_new ();
+ g_signal_connect (engine, "hits-added",
+ G_CALLBACK (hits_added_cb), NULL);
+ g_signal_connect (engine, "finished",
+ G_CALLBACK (finished_cb), loop);
+
+ query = nautilus_query_new ();
+ nautilus_query_set_text (query, "engine_simple");
+ nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (engine), query);
+
+ location = g_file_new_for_path (g_get_tmp_dir ());
+ directory = nautilus_directory_get (location);
+ nautilus_query_set_location (query, location);
+
+ create_search_file_hierarchy ("simple");
+
+ nautilus_search_engine_start_by_target (NAUTILUS_SEARCH_PROVIDER (engine),
+ NAUTILUS_SEARCH_ENGINE_SIMPLE_ENGINE);
+
+ g_main_loop_run (loop);
+ return 0;
+}
diff --git a/test/automated/displayless/test-nautilus-search-engine-tracker.c b/test/automated/displayless/test-nautilus-search-engine-tracker.c
new file mode 100644
index 000000000..13caafaba
--- /dev/null
+++ b/test/automated/displayless/test-nautilus-search-engine-tracker.c
@@ -0,0 +1,106 @@
+#include "test-utilities.h"
+
+static void
+hits_added_cb (NautilusSearchEngine *engine,
+ GSList *hits)
+{
+ g_print ("Hits added for search engine tracker!\n");
+ for (gint hit_number = 0; hits != NULL; hits = hits->next, hit_number++)
+ {
+ g_print ("Hit %i: %s\n", hit_number, nautilus_search_hit_get_uri (hits->data));
+ }
+}
+
+static void
+finished_cb (NautilusSearchEngine *engine,
+ NautilusSearchProviderStatus status,
+ gpointer user_data)
+{
+ TrackerSparqlConnection *connection;
+ g_autofree gchar *sparql_query;
+
+ nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (engine));
+
+ g_print ("\nNautilus search engine tracker finished!\n");
+
+ connection = tracker_sparql_connection_get (NULL, NULL);
+ sparql_query = g_strdup_printf ("DELETE WHERE { <nautilus-test-tracker> ?p ?o }");
+ tracker_sparql_connection_update (connection,
+ sparql_query,
+ 0,
+ NULL,
+ NULL);
+
+ g_main_loop_quit (user_data);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_autoptr (GMainLoop) loop = NULL;
+ NautilusSearchEngine *engine;
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autoptr (NautilusQuery) query = NULL;
+ g_autoptr (GFile) location = NULL;
+ TrackerSparqlConnection *connection;
+ g_autofree gchar *sparql_query;
+
+ connection = tracker_sparql_connection_get (NULL, NULL);
+
+ loop = g_main_loop_new (NULL, FALSE);
+
+ nautilus_ensure_extension_points ();
+ /* Needed for nautilus-query.c.
+ * FIXME: tests are not installed, so the system does not
+ * have the gschema. Installed tests is a long term GNOME goal.
+ */
+ nautilus_global_preferences_init ();
+
+ engine = nautilus_search_engine_new ();
+ g_signal_connect (engine, "hits-added",
+ G_CALLBACK (hits_added_cb), NULL);
+ g_signal_connect (engine, "finished",
+ G_CALLBACK (finished_cb), loop);
+
+ query = nautilus_query_new ();
+ nautilus_query_set_text (query, "target");
+ nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (engine), query);
+
+ location = g_file_new_for_path (g_get_tmp_dir ());
+ directory = nautilus_directory_get (location);
+ nautilus_query_set_location (query, location);
+
+ /* This sparql query with the update call create a virtual file
+ * in tracker, so it sees a file named "target_file" in /tmp.
+ * The file's MIME type is text/plain and the name tracker is
+ * using for search is "target". For the engine tracker to hit,
+ * we also need to set the last time the file was accessed and modified,
+ * which we set to 2001-01-01, at 00:00:01 (the date needs to be a full
+ * ISO 8601 date string) and tracker:available be set to true (in order
+ * for the file to be accessible).
+ */
+
+ sparql_query = g_strdup_printf ("INSERT DATA {\n<nautilus-test-tracker> ");
+ sparql_query = g_strconcat (sparql_query, "a nfo:FileDataObject ;", NULL);
+ sparql_query = g_strconcat (sparql_query, "\na nie:InformationElement ;", NULL);
+ sparql_query = g_strconcat (sparql_query, "\nnie:url 'file:///tmp/target_file';", NULL);
+ sparql_query = g_strconcat (sparql_query, "\nnie:mimeType 'text/plain';", NULL);
+ sparql_query = g_strconcat (sparql_query, "\nnfo:fileName 'target';", NULL);
+ sparql_query = g_strconcat (sparql_query, "\nnfo:fileLastModified '2001-01-01T00:00:01Z';", NULL);
+ sparql_query = g_strconcat (sparql_query, "\nnfo:fileLastAccessed '2001-01-01T00:00:01Z';", NULL);
+ sparql_query = g_strconcat (sparql_query, "\ntracker:available true", NULL);
+ sparql_query = g_strconcat (sparql_query, ".\n}\n", NULL);
+
+ tracker_sparql_connection_update (connection,
+ sparql_query,
+ 0,
+ NULL,
+ NULL);
+
+ nautilus_search_engine_start_by_target (NAUTILUS_SEARCH_PROVIDER (engine),
+ NAUTILUS_SEARCH_ENGINE_TRACKER_ENGINE);
+
+ g_main_loop_run (loop);
+ return 0;
+}
diff --git a/test/automated/displayless/test-nautilus-search-engine.c b/test/automated/displayless/test-nautilus-search-engine.c
index 8fb66aad4..d80f1fa20 100644
--- a/test/automated/displayless/test-nautilus-search-engine.c
+++ b/test/automated/displayless/test-nautilus-search-engine.c
@@ -1,18 +1,13 @@
-#include <src/nautilus-file-utilities.h>
-#include <src/nautilus-global-preferences.h>
-#include <src/nautilus-search-provider.h>
-#include <src/nautilus-search-engine.h>
-#include <gtk/gtk.h>
+#include "test-utilities.h"
static void
hits_added_cb (NautilusSearchEngine *engine,
GSList *hits)
{
- g_print ("hits added\n");
- while (hits)
+ g_print ("Hits added for search engine!\n");
+ for (gint hit_number = 0; hits != NULL; hits = hits->next, hit_number++)
{
- g_print (" - %s\n", (char *) hits->data);
- hits = hits->next;
+ g_print ("Hit %i: %s\n", hit_number, nautilus_search_hit_get_uri (hits->data));
}
}
@@ -21,7 +16,12 @@ finished_cb (NautilusSearchEngine *engine,
NautilusSearchProviderStatus status,
gpointer user_data)
{
- g_print ("finished!\n");
+ nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (engine));
+
+ g_print ("\nNautilus search engine finished!\n");
+
+ delete_search_file_hierarchy ("all_engines");
+
g_main_loop_quit (user_data);
}
@@ -29,17 +29,20 @@ int
main (int argc,
char *argv[])
{
- GMainLoop *loop;
+ g_autoptr (GMainLoop) loop = NULL;
NautilusSearchEngine *engine;
- NautilusSearchEngineModel *model;
- NautilusDirectory *directory;
- NautilusQuery *query;
- GFile *location;
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autoptr (NautilusQuery) query = NULL;
+ g_autoptr (GFile) location = NULL;
+ g_autoptr (GFile) file = NULL;
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new (NULL, FALSE);
nautilus_ensure_extension_points ();
- /* Needed for nautilus-query.c. */
+ /* Needed for nautilus-query.c.
+ * FIXME: tests are not installed, so the system does not
+ * have the gschema. Installed tests is a long term GNOME goal.
+ */
nautilus_global_preferences_init ();
engine = nautilus_search_engine_new ();
@@ -49,21 +52,16 @@ main (int argc,
G_CALLBACK (finished_cb), loop);
query = nautilus_query_new ();
- nautilus_query_set_text (query, "richard hult");
+ nautilus_query_set_text (query, "engine_all_engines");
nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (engine), query);
- g_object_unref (query);
- location = g_file_new_for_path (g_get_home_dir ());
+ location = g_file_new_for_path (g_get_tmp_dir ());
directory = nautilus_directory_get (location);
- g_object_unref (location);
+ nautilus_query_set_location (query, location);
- model = nautilus_search_engine_get_model_provider (engine);
- nautilus_search_engine_model_set_model (model, directory);
- g_object_unref (directory);
+ create_search_file_hierarchy ("all_engines");
nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (engine));
- nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (engine));
- g_object_unref (engine);
g_main_loop_run (loop);
return 0;
diff --git a/test/automated/displayless/test-utilities.c b/test/automated/displayless/test-utilities.c
new file mode 100644
index 000000000..7b38c6849
--- /dev/null
+++ b/test/automated/displayless/test-utilities.c
@@ -0,0 +1,555 @@
+#include "test-utilities.h"
+
+void
+empty_directory_by_prefix (GFile *parent,
+ gchar *prefix)
+{
+ g_autoptr (GFileEnumerator) enumerator = NULL;
+ g_autoptr (GFile) child = NULL;
+
+ enumerator = g_file_enumerate_children (parent,
+ G_FILE_ATTRIBUTE_STANDARD_NAME,
+ G_FILE_QUERY_INFO_NONE,
+ NULL,
+ NULL);
+
+ g_file_enumerator_iterate (enumerator, NULL, &child, NULL, NULL);
+ while (child != NULL)
+ {
+ gboolean res;
+
+ if (g_str_has_prefix (g_file_get_basename (child), prefix))
+ {
+ res = g_file_delete (child, NULL, NULL);
+ /* The directory is not empty */
+ if (!res)
+ {
+ empty_directory_by_prefix (child, prefix);
+ g_file_delete (child, NULL, NULL);
+ }
+ }
+
+ g_file_enumerator_iterate (enumerator, NULL, &child, NULL, NULL);
+ }
+}
+
+void
+create_search_file_hierarchy (gchar *search_engine)
+{
+ g_autoptr (GFile) location = NULL;
+ g_autoptr (GFile) file = NULL;
+ GFileOutputStream *out;
+ gchar *file_name;
+
+ location = g_file_new_for_path (g_get_tmp_dir ());
+
+ file_name = g_strdup_printf ("engine_%s", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ out = g_file_create (file, G_FILE_CREATE_NONE, NULL, NULL);
+ g_object_unref (out);
+
+ file_name = g_strdup_printf ("engine_%s_directory", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_child", search_engine);
+ file = g_file_get_child (file, file_name);
+ g_free (file_name);
+ out = g_file_create (file, G_FILE_CREATE_NONE, NULL, NULL);
+ g_object_unref (out);
+
+ file_name = g_strdup_printf ("engine_%s_second_directory", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("engine_%s_child", search_engine);
+ file = g_file_get_child (file, file_name);
+ g_free (file_name);
+ out = g_file_create (file, G_FILE_CREATE_NONE, NULL, NULL);
+ g_object_unref (out);
+
+ file_name = g_strdup_printf ("%s_directory", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("engine_%s_child", search_engine);
+ file = g_file_get_child (file, file_name);
+ g_free (file_name);
+ out = g_file_create (file, G_FILE_CREATE_NONE, NULL, NULL);
+ g_object_unref (out);
+}
+
+void
+delete_search_file_hierarchy (gchar *search_engine)
+{
+ g_autoptr (GFile) location = NULL;
+ g_autoptr (GFile) file = NULL;
+ gchar *file_name;
+
+ location = g_file_new_for_path (g_get_tmp_dir ());
+
+ file_name = g_strdup_printf ("engine_%s", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ g_file_delete (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("engine_%s_directory", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ file_name = g_strdup_printf ("%s_child", search_engine);
+ file = g_file_get_child (file, file_name);
+ g_free (file_name);
+ g_file_delete (file, NULL, NULL);
+ file_name = g_strdup_printf ("engine_%s_directory", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ g_file_delete (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("engine_%s_second_directory", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ file_name = g_strdup_printf ("engine_%s_child", search_engine);
+ file = g_file_get_child (file, file_name);
+ g_free (file_name);
+ g_file_delete (file, NULL, NULL);
+ file_name = g_strdup_printf ("engine_%s_second_directory", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ g_file_delete (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_directory", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ file_name = g_strdup_printf ("engine_%s_child", search_engine);
+ file = g_file_get_child (file, file_name);
+ g_free (file_name);
+ g_file_delete (file, NULL, NULL);
+ file_name = g_strdup_printf ("%s_directory", search_engine);
+ file = g_file_get_child (location, file_name);
+ g_free (file_name);
+ g_file_delete (file, NULL, NULL);
+}
+
+/* This callback function quits the mainloop inside which the
+ * asynchronous undo/redo operation happens.
+ */
+
+void
+quit_loop_callback (NautilusFileUndoManager *undo_manager,
+ GMainLoop *loop)
+{
+ g_main_loop_quit (loop);
+}
+
+/* This undoes the last operation blocking the current main thread. */
+void
+test_operation_undo (void)
+{
+ g_autoptr (GMainLoop) loop = NULL;
+ g_autoptr (GMainContext) context = NULL;
+ gulong handler_id;
+
+ context = g_main_context_new ();
+ g_main_context_push_thread_default (context);
+ loop = g_main_loop_new (context, FALSE);
+
+ handler_id = g_signal_connect (nautilus_file_undo_manager_get (),
+ "undo-changed",
+ G_CALLBACK (quit_loop_callback),
+ loop);
+
+ nautilus_file_undo_manager_undo (NULL);
+
+ g_main_loop_run (loop);
+
+ g_main_context_pop_thread_default (context);
+
+ g_signal_handler_disconnect (nautilus_file_undo_manager_get (),
+ handler_id);
+}
+
+/* This undoes and redoes the last move operation blocking the current main thread. */
+void
+test_operation_undo_redo (void)
+{
+ g_autoptr (GMainLoop) loop = NULL;
+ g_autoptr (GMainContext) context = NULL;
+ gulong handler_id;
+
+ test_operation_undo ();
+
+ context = g_main_context_new ();
+ g_main_context_push_thread_default (context);
+ loop = g_main_loop_new (context, FALSE);
+
+ handler_id = g_signal_connect (nautilus_file_undo_manager_get (),
+ "undo-changed",
+ G_CALLBACK (quit_loop_callback),
+ loop);
+
+ nautilus_file_undo_manager_redo (NULL);
+
+ g_main_loop_run (loop);
+
+ g_main_context_pop_thread_default (context);
+
+ g_signal_handler_disconnect (nautilus_file_undo_manager_get (),
+ handler_id);
+}
+
+/* Creates the following hierarchy:
+ * /tmp/`prefix`_first_dir/`prefix`_first_dir_child
+ * /tmp/`prefix`_second_dir/
+ */
+void
+create_one_file (gchar *prefix)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ GFileOutputStream *out;
+ gchar *file_name;
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir", prefix);
+ first_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (first_dir != NULL);
+ g_file_make_directory (first_dir, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir_child", prefix);
+ file = g_file_get_child (first_dir, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ out = g_file_create (file, G_FILE_CREATE_NONE, NULL, NULL);
+ g_object_unref (out);
+
+ file_name = g_strdup_printf ("%s_second_dir", prefix);
+ second_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (second_dir != NULL);
+ g_file_make_directory (second_dir, NULL, NULL);
+}
+
+/* Creates the same hierarchy as above, but all files being directories. */
+void
+create_one_empty_directory (gchar *prefix)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ gchar *file_name;
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir", prefix);
+ first_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (first_dir != NULL);
+ g_file_make_directory (first_dir, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir_child", prefix);
+ file = g_file_get_child (first_dir, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_second_dir", prefix);
+ second_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (second_dir != NULL);
+ g_file_make_directory (second_dir, NULL, NULL);
+}
+
+void
+create_multiple_files (gchar *prefix, gint number_of_files)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ gchar *file_name;
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < number_of_files; i++)
+ {
+ GFileOutputStream *out;
+
+ file_name = g_strdup_printf ("%s_file_%i", prefix, i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ out = g_file_create (file, G_FILE_CREATE_NONE, NULL, NULL);
+ g_object_unref (out);
+ }
+
+ file_name = g_strdup_printf ("%s_dir", prefix);
+ dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (dir != NULL);
+ g_file_make_directory (dir, NULL, NULL);
+}
+
+void
+create_multiple_directories (gchar *prefix, gint number_of_directories)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) dir = NULL;
+ gchar *file_name;
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < number_of_directories; i++)
+ {
+ file_name = g_strdup_printf ("%s_file_%i", prefix, i);
+ file = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+ }
+
+ file_name = g_strdup_printf ("%s_dir", prefix);
+ dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (dir != NULL);
+ g_file_make_directory (dir, NULL, NULL);
+}
+
+void
+create_first_hierarchy (gchar *prefix)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ gchar *file_name;
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir", prefix);
+ first_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (first_dir != NULL);
+ g_file_make_directory (first_dir, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_first_child", prefix);
+ file = g_file_get_child (first_dir, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+ file_name = g_strdup_printf ("%s_second_child", prefix);
+ file = g_file_get_child (first_dir, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_second_dir", prefix);
+ second_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (second_dir != NULL);
+ g_file_make_directory (second_dir, NULL, NULL);
+}
+
+void
+create_second_hierarchy (gchar *prefix)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ gchar *file_name;
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir", prefix);
+ first_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (first_dir != NULL);
+ g_file_make_directory (first_dir, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_first_child", prefix);
+ file = g_file_get_child (first_dir, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+ file_name = g_strdup_printf ("%s_second_child", prefix);
+ file = g_file_get_child (file, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_second_dir", prefix);
+ second_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (second_dir != NULL);
+ g_file_make_directory (second_dir, NULL, NULL);
+}
+
+void
+create_third_hierarchy (gchar *prefix)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ gchar *file_name;
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir", prefix);
+ first_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (first_dir != NULL);
+ g_file_make_directory (first_dir, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir_dir1", prefix);
+ file = g_file_get_child (first_dir, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_dir1_child", prefix);
+ file = g_file_get_child (file, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir_dir2", prefix);
+ file = g_file_get_child (first_dir, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_dir2_child", prefix);
+ file = g_file_get_child (file, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_second_dir", prefix);
+ second_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (second_dir != NULL);
+ g_file_make_directory (second_dir, NULL, NULL);
+}
+
+void
+create_fourth_hierarchy (gchar *prefix)
+{
+ g_autoptr (GFile) root = NULL;
+ g_autoptr (GFile) first_dir = NULL;
+ g_autoptr (GFile) second_dir = NULL;
+ g_autoptr (GFile) third_dir = NULL;
+ g_autoptr (GFile) file = NULL;
+ g_autoptr (GFile) result_file = NULL;
+ gchar *file_name;
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir", prefix);
+ first_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (first_dir != NULL);
+ g_file_make_directory (first_dir, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_first_dir_child", prefix);
+ file = g_file_get_child (first_dir, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_second_dir", prefix);
+ second_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (second_dir != NULL);
+ g_file_make_directory (second_dir, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_second_dir_child", prefix);
+ file = g_file_get_child (second_dir, file_name);
+ g_free (file_name);
+
+ g_assert_true (file != NULL);
+ g_file_make_directory (file, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_third_dir", prefix);
+ third_dir = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_assert_true (third_dir != NULL);
+ g_file_make_directory (third_dir, NULL, NULL);
+}
+
+void
+create_multiple_full_directories (gchar *prefix, gint number_of_directories)
+{
+ g_autoptr (GFile) root = NULL;
+
+ root = g_file_new_for_path (g_get_tmp_dir ());
+ g_assert_true (root != NULL);
+
+ for (int i = 0; i < number_of_directories; i++)
+ {
+ g_autoptr (GFile) directory = NULL;
+ g_autoptr (GFile) file = NULL;
+ gchar *file_name;
+
+ file_name = g_strdup_printf ("%s_directory_%i", prefix, i);
+
+ directory = g_file_get_child (root, file_name);
+ g_free (file_name);
+
+ g_file_make_directory (directory, NULL, NULL);
+
+ file_name = g_strdup_printf ("%s_file_%i", prefix, i);
+ file = g_file_get_child (directory, file_name);
+ g_free (file_name);
+
+ g_file_make_directory (file, NULL, NULL);
+ }
+} \ No newline at end of file
diff --git a/test/automated/displayless/test-utilities.h b/test/automated/displayless/test-utilities.h
new file mode 100644
index 000000000..878c87876
--- /dev/null
+++ b/test/automated/displayless/test-utilities.h
@@ -0,0 +1,34 @@
+#include <gio/gio.h>
+#include <src/nautilus-file-utilities.h>
+#include <src/nautilus-global-preferences.h>
+#include <src/nautilus-search-engine.h>
+#include <tracker-sparql.h>
+#include <locale.h>
+#include <src/nautilus-file-undo-manager.h>
+#include <src/nautilus-file-operations.h>
+#include <gio/gio.h>
+
+#pragma once
+
+void empty_directory_by_prefix (GFile *parent,
+ gchar *prefix);
+
+void create_search_file_hierarchy (gchar *search_engine);
+void delete_search_file_hierarchy (gchar *search_engine);
+
+void quit_loop_callback (NautilusFileUndoManager *undo_manager,
+ GMainLoop *loop);
+void test_operation_undo_redo (void);
+void test_operation_undo (void);
+
+void create_one_file (gchar *prefix);
+void create_one_empty_directory (gchar *prefix);
+
+void create_multiple_files (gchar *prefix, gint number_of_files);
+void create_multiple_directories (gchar *prefix, gint number_of_directories);
+void create_multiple_full_directories (gchar *prefix, gint number_of_directories);
+
+void create_first_hierarchy (gchar *prefix);
+void create_second_hierarchy (gchar *prefix);
+void create_third_hierarchy (gchar *prefix);
+void create_fourth_hierarchy (gchar *prefix); \ No newline at end of file