[gnome-autoar/wip/oholy/various-fixes: 15/23] tests: Change test-one-file-error-file-over-directory test




commit df846daf78745819153e23222a6116c0a6e08ade
Author: Ondrej Holy <oholy redhat com>
Date:   Thu Mar 4 13:56:11 2021 +0100

    tests: Change test-one-file-error-file-over-directory test
    
    To be honest, it is not really clear to me what is purpose of this test.
    As per the name, it should verify that error is returned when overwriting
    file over directory. However, I think that it is totally fine to overwrite
    empty directory. Anyway, the overwrite action is not explicitely chosen,
    so the skip action is used instead. Consequently, the test verifies that
    `error` is not set. So it looks to me that the test is tottaly wrong. Let's
    modify and rename the test, so it really checks that error is returned when
    somebody tries to overwrite non-empty directory.

 .../input/arextract.zip                            | Bin
 .../reference/arextract/dummy                      |   0
 .../reference/arextract/dummy                      |   0
 tests/test-extract-unit.c                          | 115 +++++++++++----------
 4 files changed, 58 insertions(+), 57 deletions(-)
---
diff --git a/tests/files/extract/test-one-file-error-file-over-directory/input/arextract.zip 
b/tests/files/extract/test-conflict-overwrite-nonempty-directory/input/arextract.zip
similarity index 100%
rename from tests/files/extract/test-one-file-error-file-over-directory/input/arextract.zip
rename to tests/files/extract/test-conflict-overwrite-nonempty-directory/input/arextract.zip
diff --git a/tests/files/extract/test-one-file-error-file-over-directory/reference/arextract/dummy 
b/tests/files/extract/test-conflict-overwrite-nonempty-directory/reference/arextract/dummy
similarity index 100%
rename from tests/files/extract/test-one-file-error-file-over-directory/reference/arextract/dummy
rename to tests/files/extract/test-conflict-overwrite-nonempty-directory/reference/arextract/dummy
diff --git a/tests/files/extract/test-one-file-overwrite-nonempty-directory/reference/arextract/dummy 
b/tests/files/extract/test-one-file-overwrite-nonempty-directory/reference/arextract/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/tests/test-extract-unit.c b/tests/test-extract-unit.c
index d8e8407..f5665e7 100644
--- a/tests/test-extract-unit.c
+++ b/tests/test-extract-unit.c
@@ -756,43 +756,46 @@ test_conflict_overwrite (void)
   assert_reference_and_output_match (extract_test);
 }
 
+/* Be sure that nonempty directories are not replaced to prevent data-loss. */
 static void
-test_conflict_new_destination (void)
+test_conflict_overwrite_nonempty_directory (void)
 {
   /* arextract.zip
-   * └── arextract.txt
+   * └── arextract
    *
    * 0 directories, 1 file
    *
    *
    * ref
-   * ├── arextract_new.txt
-   * └── arextract.txt
+   * └── arextract
+   *     └── dummy
    *
-   * 0 directories, 2 files
+   * 1 directory, 1 files
    */
 
   g_autoptr (ExtractTest) extract_test = NULL;
   g_autoptr (ExtractTestData) data = NULL;
   g_autoptr (GFile) archive = NULL;
-  g_autoptr (GFile) conflict_file = NULL;
-  g_autoptr (GFile) reference_file = NULL;
+  g_autoptr (GFile) conflict_directory = NULL;
+  g_autoptr (GFile) dummy_file = NULL;
+  g_autoptr (GFileOutputStream) out = NULL;
   g_autoptr (AutoarExtractor) extractor = NULL;
 
-  extract_test = extract_test_new ("test-conflict-new-destination");
+  extract_test = extract_test_new ("test-conflict-overwrite-nonempty-directory");
 
   if (!extract_test) {
     g_assert_nonnull (extract_test);
     return;
   }
 
-  reference_file = g_file_get_child (extract_test->reference,
-                                     "arextract.txt");
-  conflict_file = g_file_get_child (extract_test->output,
-                                    "arextract.txt");
+  conflict_directory = g_file_get_child (extract_test->output,
+                                         "arextract");
+  dummy_file = g_file_get_child (conflict_directory, "dummy");
 
-  g_file_copy (reference_file, conflict_file, G_FILE_COPY_NONE,
-               NULL, NULL, NULL, NULL);
+  g_file_make_directory (conflict_directory, NULL, NULL);
+
+  out = g_file_create (dummy_file, G_FILE_CREATE_NONE, NULL, NULL);
+  g_output_stream_close (G_OUTPUT_STREAM (out), NULL, NULL);
 
   archive = g_file_get_child (extract_test->input, "arextract.zip");
 
@@ -801,26 +804,21 @@ test_conflict_new_destination (void)
   data = extract_test_data_new_for_extract (extractor);
 
   g_hash_table_insert (data->conflict_files_actions,
-                       g_object_ref (conflict_file),
-                       GUINT_TO_POINTER (AUTOAR_CONFLICT_CHANGE_DESTINATION));
-
-  g_hash_table_insert (data->conflict_files_destinations,
-                       g_object_ref (conflict_file),
-                       g_file_get_child (extract_test->output,
-                                         "arextract_new.txt"));
+                       g_object_ref (conflict_directory),
+                       GUINT_TO_POINTER (AUTOAR_CONFLICT_OVERWRITE));
 
   autoar_extractor_start (extractor, data->cancellable);
 
   g_assert_cmpuint (data->number_of_files, ==, 1);
   g_assert_true (g_hash_table_contains (data->conflict_files,
-                                        conflict_file));
-  g_assert_no_error (data->error);
-  g_assert_true (data->completed_signalled);
+                                        conflict_directory));
+  g_assert_error (data->error, G_IO_ERROR, G_IO_ERROR_NOT_EMPTY);
+  g_assert_false (data->completed_signalled);
   assert_reference_and_output_match (extract_test);
 }
 
 static void
-test_conflict_skip_file (void)
+test_conflict_new_destination (void)
 {
   /* arextract.zip
    * └── arextract.txt
@@ -829,9 +827,10 @@ test_conflict_skip_file (void)
    *
    *
    * ref
+   * ├── arextract_new.txt
    * └── arextract.txt
    *
-   * 0 directories, 1 file
+   * 0 directories, 2 files
    */
 
   g_autoptr (ExtractTest) extract_test = NULL;
@@ -841,7 +840,7 @@ test_conflict_skip_file (void)
   g_autoptr (GFile) reference_file = NULL;
   g_autoptr (AutoarExtractor) extractor = NULL;
 
-  extract_test = extract_test_new ("test-conflict-skip-file");
+  extract_test = extract_test_new ("test-conflict-new-destination");
 
   if (!extract_test) {
     g_assert_nonnull (extract_test);
@@ -864,7 +863,12 @@ test_conflict_skip_file (void)
 
   g_hash_table_insert (data->conflict_files_actions,
                        g_object_ref (conflict_file),
-                       GUINT_TO_POINTER (AUTOAR_CONFLICT_SKIP));
+                       GUINT_TO_POINTER (AUTOAR_CONFLICT_CHANGE_DESTINATION));
+
+  g_hash_table_insert (data->conflict_files_destinations,
+                       g_object_ref (conflict_file),
+                       g_file_get_child (extract_test->output,
+                                         "arextract_new.txt"));
 
   autoar_extractor_start (extractor, data->cancellable);
 
@@ -876,9 +880,8 @@ test_conflict_skip_file (void)
   assert_reference_and_output_match (extract_test);
 }
 
-/* Be sure that the default action is skip to prevent data-loss. */
 static void
-test_conflict_skip_file_default (void)
+test_conflict_skip_file (void)
 {
   /* arextract.zip
    * └── arextract.txt
@@ -899,7 +902,7 @@ test_conflict_skip_file_default (void)
   g_autoptr (GFile) reference_file = NULL;
   g_autoptr (AutoarExtractor) extractor = NULL;
 
-  extract_test = extract_test_new ("test-conflict-skip-file-default");
+  extract_test = extract_test_new ("test-conflict-skip-file");
 
   if (!extract_test) {
     g_assert_nonnull (extract_test);
@@ -922,7 +925,7 @@ test_conflict_skip_file_default (void)
 
   g_hash_table_insert (data->conflict_files_actions,
                        g_object_ref (conflict_file),
-                       GUINT_TO_POINTER (AUTOAR_CONFLICT_UNHANDLED));
+                       GUINT_TO_POINTER (AUTOAR_CONFLICT_SKIP));
 
   autoar_extractor_start (extractor, data->cancellable);
 
@@ -934,48 +937,43 @@ test_conflict_skip_file_default (void)
   assert_reference_and_output_match (extract_test);
 }
 
+/* Be sure that the default action is skip to prevent data-loss. */
 static void
-test_one_file_error_file_over_directory (void)
+test_conflict_skip_file_default (void)
 {
-  /* The dummy file in this test is not relevant to the test itself, but it
-   * was required in order to add the directory to the .git repo
-   *
-   * arextract.zip
-   * └── arextract
+  /* arextract.zip
+   * └── arextract.txt
    *
    * 0 directories, 1 file
    *
    *
    * ref
-   * └── arextract
-   *     └── dummy
+   * └── arextract.txt
    *
-   * 1 directory, 1 files
+   * 0 directories, 1 file
    */
 
   g_autoptr (ExtractTest) extract_test = NULL;
   g_autoptr (ExtractTestData) data = NULL;
   g_autoptr (GFile) archive = NULL;
-  g_autoptr (GFile) conflict_directory = NULL;
-  g_autoptr (GFile) dummy_file = NULL;
-  g_autoptr (GFileOutputStream) out = NULL;
+  g_autoptr (GFile) conflict_file = NULL;
+  g_autoptr (GFile) reference_file = NULL;
   g_autoptr (AutoarExtractor) extractor = NULL;
 
-  extract_test = extract_test_new ("test-one-file-error-file-over-directory");
+  extract_test = extract_test_new ("test-conflict-skip-file-default");
 
   if (!extract_test) {
     g_assert_nonnull (extract_test);
     return;
   }
 
-  conflict_directory = g_file_get_child (extract_test->output,
-                                         "arextract");
-  dummy_file = g_file_get_child (conflict_directory, "dummy");
-
-  g_file_make_directory (conflict_directory, NULL, NULL);
+  reference_file = g_file_get_child (extract_test->reference,
+                                     "arextract.txt");
+  conflict_file = g_file_get_child (extract_test->output,
+                                    "arextract.txt");
 
-  out = g_file_create (dummy_file, G_FILE_CREATE_NONE, NULL, NULL);
-  g_output_stream_close (G_OUTPUT_STREAM (out), NULL, NULL);
+  g_file_copy (reference_file, conflict_file, G_FILE_COPY_NONE,
+               NULL, NULL, NULL, NULL);
 
   archive = g_file_get_child (extract_test->input, "arextract.zip");
 
@@ -983,12 +981,16 @@ test_one_file_error_file_over_directory (void)
 
   data = extract_test_data_new_for_extract (extractor);
 
+  g_hash_table_insert (data->conflict_files_actions,
+                       g_object_ref (conflict_file),
+                       GUINT_TO_POINTER (AUTOAR_CONFLICT_UNHANDLED));
+
   autoar_extractor_start (extractor, data->cancellable);
 
   g_assert_cmpuint (data->number_of_files, ==, 1);
   g_assert_true (g_hash_table_contains (data->conflict_files,
-                                        conflict_directory));
-  g_assert_null (data->error);
+                                        conflict_file));
+  g_assert_no_error (data->error);
   g_assert_true (data->completed_signalled);
   assert_reference_and_output_match (extract_test);
 }
@@ -1058,6 +1060,8 @@ setup_test_suite (void)
 
   g_test_add_func ("/autoar-extract/test-conflict-overwrite",
                    test_conflict_overwrite);
+  g_test_add_func ("/autoar-extract/test-conflict-overwrite-nonempty-directory",
+                   test_conflict_overwrite_nonempty_directory);
   g_test_add_func ("/autoar-extract/test-conflict-new-destination",
                    test_conflict_new_destination);
   g_test_add_func ("/autoar-extract/test-conflict-skip-file",
@@ -1065,9 +1069,6 @@ setup_test_suite (void)
   g_test_add_func ("/autoar-extract/test-conflict-skip-file-default",
                    test_conflict_skip_file_default);
 
-  g_test_add_func ("/autoar-extract/test-one-file-error-file-over-directory",
-                   test_one_file_error_file_over_directory);
-
   g_test_add_func ("/autoar-extract/test-change-extract-destination",
                    test_change_extract_destination);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]