]> git.ipfire.org Git - thirdparty/git.git/blobdiff - reftable/stack_test.c
Merge branch 'ps/reftable-unit-test-nfs-workaround'
[thirdparty/git.git] / reftable / stack_test.c
index 8debb4b72ddb3055dc34c0ae1659efb835a3937d..0dc9a44648e45ec3b61b9b4572ecd504035f11d8 100644 (file)
@@ -453,15 +453,16 @@ static void test_reftable_stack_add(void)
        int err = 0;
        struct reftable_write_options cfg = {
                .exact_log_message = 1,
+               .default_permissions = 0660,
        };
        struct reftable_stack *st = NULL;
        char *dir = get_tmp_dir(__LINE__);
-
        struct reftable_ref_record refs[2] = { { NULL } };
        struct reftable_log_record logs[2] = { { NULL } };
+       struct strbuf path = STRBUF_INIT;
+       struct stat stat_result;
        int N = ARRAY_SIZE(refs);
 
-
        err = reftable_new_stack(&st, dir, cfg);
        EXPECT_ERR(err);
        st->disable_auto_compact = 1;
@@ -472,14 +473,11 @@ static void test_reftable_stack_add(void)
                refs[i].refname = xstrdup(buf);
                refs[i].update_index = i + 1;
                refs[i].value_type = REFTABLE_REF_VAL1;
-               refs[i].value.val1 = reftable_malloc(GIT_SHA1_RAWSZ);
                set_test_hash(refs[i].value.val1, i);
 
                logs[i].refname = xstrdup(buf);
                logs[i].update_index = N + i + 1;
                logs[i].value_type = REFTABLE_LOG_UPDATE;
-
-               logs[i].value.update.new_hash = reftable_malloc(GIT_SHA1_RAWSZ);
                logs[i].value.update.email = xstrdup("identity@invalid");
                set_test_hash(logs[i].value.update.new_hash, i);
        }
@@ -520,12 +518,32 @@ static void test_reftable_stack_add(void)
                reftable_log_record_release(&dest);
        }
 
+#ifndef GIT_WINDOWS_NATIVE
+       strbuf_addstr(&path, dir);
+       strbuf_addstr(&path, "/tables.list");
+       err = stat(path.buf, &stat_result);
+       EXPECT(!err);
+       EXPECT((stat_result.st_mode & 0777) == cfg.default_permissions);
+
+       strbuf_reset(&path);
+       strbuf_addstr(&path, dir);
+       strbuf_addstr(&path, "/");
+       /* do not try at home; not an external API for reftable. */
+       strbuf_addstr(&path, st->readers[0]->name);
+       err = stat(path.buf, &stat_result);
+       EXPECT(!err);
+       EXPECT((stat_result.st_mode & 0777) == cfg.default_permissions);
+#else
+       (void) stat_result;
+#endif
+
        /* cleanup */
        reftable_stack_destroy(st);
        for (i = 0; i < N; i++) {
                reftable_ref_record_release(&refs[i]);
                reftable_log_record_release(&logs[i]);
        }
+       strbuf_release(&path);
        clear_dir(dir);
 }
 
@@ -537,16 +555,17 @@ static void test_reftable_stack_log_normalize(void)
        };
        struct reftable_stack *st = NULL;
        char *dir = get_tmp_dir(__LINE__);
-
-       uint8_t h1[GIT_SHA1_RAWSZ] = { 0x01 }, h2[GIT_SHA1_RAWSZ] = { 0x02 };
-
-       struct reftable_log_record input = { .refname = "branch",
-                                            .update_index = 1,
-                                            .value_type = REFTABLE_LOG_UPDATE,
-                                            .value = { .update = {
-                                                               .new_hash = h1,
-                                                               .old_hash = h2,
-                                                       } } };
+       struct reftable_log_record input = {
+               .refname = "branch",
+               .update_index = 1,
+               .value_type = REFTABLE_LOG_UPDATE,
+               .value = {
+                       .update = {
+                               .new_hash = { 1 },
+                               .old_hash = { 2 },
+                       },
+               },
+       };
        struct reftable_log_record dest = {
                .update_index = 0,
        };
@@ -609,7 +628,6 @@ static void test_reftable_stack_tombstone(void)
                refs[i].update_index = i + 1;
                if (i % 2 == 0) {
                        refs[i].value_type = REFTABLE_REF_VAL1;
-                       refs[i].value.val1 = reftable_malloc(GIT_SHA1_RAWSZ);
                        set_test_hash(refs[i].value.val1, i);
                }
 
@@ -618,8 +636,6 @@ static void test_reftable_stack_tombstone(void)
                logs[i].update_index = 42;
                if (i % 2 == 0) {
                        logs[i].value_type = REFTABLE_LOG_UPDATE;
-                       logs[i].value.update.new_hash =
-                               reftable_malloc(GIT_SHA1_RAWSZ);
                        set_test_hash(logs[i].value.update.new_hash, i);
                        logs[i].value.update.email =
                                xstrdup("identity@invalid");
@@ -723,7 +739,7 @@ static void test_sizes_to_segments(void)
        uint64_t sizes[] = { 2, 3, 4, 5, 7, 9 };
        /* .................0  1  2  3  4  5 */
 
-       int seglen = 0;
+       size_t seglen = 0;
        struct segment *segs =
                sizes_to_segments(&seglen, sizes, ARRAY_SIZE(sizes));
        EXPECT(segs[2].log == 3);
@@ -738,7 +754,7 @@ static void test_sizes_to_segments(void)
 
 static void test_sizes_to_segments_empty(void)
 {
-       int seglen = 0;
+       size_t seglen = 0;
        struct segment *segs = sizes_to_segments(&seglen, NULL, 0);
        EXPECT(seglen == 0);
        reftable_free(segs);
@@ -747,8 +763,7 @@ static void test_sizes_to_segments_empty(void)
 static void test_sizes_to_segments_all_equal(void)
 {
        uint64_t sizes[] = { 5, 5 };
-
-       int seglen = 0;
+       size_t seglen = 0;
        struct segment *segs =
                sizes_to_segments(&seglen, sizes, ARRAY_SIZE(sizes));
        EXPECT(seglen == 1);
@@ -802,7 +817,6 @@ static void test_reflog_expire(void)
                logs[i].update_index = i;
                logs[i].value_type = REFTABLE_LOG_UPDATE;
                logs[i].value.update.time = i;
-               logs[i].value.update.new_hash = reftable_malloc(GIT_SHA1_RAWSZ);
                logs[i].value.update.email = xstrdup("identity@invalid");
                set_test_hash(logs[i].value.update.new_hash, i);
        }