From: Patrick Steinhardt <ps@pks.im>
To: Chandra Pratap <chandrapratap3519@gmail.com>
Cc: git@vger.kernel.org, Christian Couder <chriscool@tuxfamily.org>
Subject: Re: [PATCH 5/5] t-reftable-readwrite: add tests for print functions
Date: Thu, 8 Aug 2024 10:12:05 +0200 [thread overview]
Message-ID: <ZrR91dR3G06L9dy7@tanuki> (raw)
In-Reply-To: <20240807141608.4524-6-chandrapratap3519@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3001 bytes --]
On Wed, Aug 07, 2024 at 07:42:01PM +0530, Chandra Pratap wrote:
> +static void t_table_print(void)
> +{
> + char name[100];
> + struct reftable_write_options opts = {
> + .block_size = 512,
> + .hash_id = GIT_SHA1_FORMAT_ID,
> + };
> + struct reftable_ref_record ref = { 0 };
> + struct reftable_log_record log = { 0 };
> + struct reftable_writer *w = NULL;
> + struct tempfile *tmp = NULL;
> + size_t i, N = 3;
> + int n, fd;
> +
> + xsnprintf(name, sizeof(name), "t-reftable-readwrite-%d-XXXXXX", __LINE__);
Is it really required to include the line number in this file? This
feels unnecessarily defensive to me as `mks_tempfile_t()` should already
make sure that we get a unique filename. So if we drop that, we could
skip this call to `xsnprintf()`.
> + tmp = mks_tempfile_t(name);
> + fd = get_tempfile_fd(tmp);
> + w = reftable_new_writer(&fd_write, &fd_flush, &fd, &opts);
> + reftable_writer_set_limits(w, 0, update_index);
> +
> + for (i = 0; i < N; i++) {
> + xsnprintf(name, sizeof(name), "refs/heads/branch%02"PRIuMAX, (uintmax_t)i);
> + ref.refname = name;
> + ref.update_index = i;
> + ref.value_type = REFTABLE_REF_VAL1;
> + set_test_hash(ref.value.val1, i);
> +
> + n = reftable_writer_add_ref(w, &ref);
> + check_int(n, ==, 0);
> + }
> +
> + for (i = 0; i < N; i++) {
> + xsnprintf(name, sizeof(name), "refs/heads/branch%02"PRIuMAX, (uintmax_t)i);
> + log.refname = name;
> + log.update_index = i;
> + log.value_type = REFTABLE_LOG_UPDATE;
> + set_test_hash(log.value.update.new_hash, i);
> + log.value.update.name = (char *) "John Doe";
> + log.value.update.email = (char *) "johndoe@anon.org";
> + log.value.update.time = 0x6673e5b9;
> + log.value.update.message = (char *) "message";
> +
> + n = reftable_writer_add_log(w, &log);
> + check_int(n, ==, 0);
> + }
> +
> + n = reftable_writer_close(w);
> + check_int(n, ==, 0);
> +
> + test_msg("testing printing functionality:");
Is it intentionally that this line still exists? If so, I think it
really only causes unnecessary noise and should rather be dropped.
> + n = reftable_reader_print_file(tmp->filename.buf);
> + check_int(n, ==, 0);
Wait, doesn't this print to stdout? I don't think it is a good idea to
exercise the function as-is. For one, it would pollute stdout with data
that we shouldn't care about. Second, it doesn't verify that the result
is actually what we expect.
I can see two options:
1. Refactor these interfaces such that they take a file descriptor as
input that they are writing to. This would allow us to exercise
that the output is correct.
2. Rip out this function. I don't think this functionality should be
part of the library in the first place, and it really only exists
because of "reftable/dump.c".
I think the latter is the better option. The functionality exists to
drive `cmd__dump_reftable()` in our reftable test helper. We should
likely make the whole implementation of this an internal implementation
detail and not expose it.
Patrick
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2024-08-08 8:12 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-07 14:11 [GSoC][PATCH 0/5] t: port reftable/readwrite_test.c to the unit testing framework Chandra Pratap
2024-08-07 14:11 ` [PATCH 1/5] t: move " Chandra Pratap
2024-08-07 14:11 ` [PATCH 2/5] t-reftable-readwrite: use free_names() instead of a for loop Chandra Pratap
2024-08-07 14:11 ` [PATCH 3/5] t-reftable-readwrite: use 'for' in place of infinite 'while' loops Chandra Pratap
2024-08-07 14:12 ` [PATCH 4/5] t-reftable-readwrite: add test for known error Chandra Pratap
2024-08-07 14:12 ` [PATCH 5/5] t-reftable-readwrite: add tests for print functions Chandra Pratap
2024-08-08 8:12 ` Patrick Steinhardt [this message]
2024-08-08 12:00 ` Patrick Steinhardt
2024-08-08 14:25 ` Chandra Pratap
2024-08-09 16:56 ` Junio C Hamano
2024-08-09 11:05 ` [GSoC][PATCH v2 0/4] t: port reftable/readwrite_test.c to the unit testing framework Chandra Pratap
2024-08-09 11:05 ` [PATCH v2 1/4] t: move " Chandra Pratap
2024-08-09 18:12 ` Junio C Hamano
2024-08-12 14:50 ` Chandra Pratap
2024-08-09 11:05 ` [PATCH v2 2/4] t-reftable-readwrite: use free_names() instead of a for loop Chandra Pratap
2024-08-09 18:57 ` Junio C Hamano
2024-08-10 5:50 ` Chandra Pratap
2024-08-10 6:10 ` Junio C Hamano
2024-08-09 11:05 ` [PATCH v2 3/4] t-reftable-readwrite: use 'for' in place of infinite 'while' loops Chandra Pratap
2024-08-09 19:06 ` Junio C Hamano
2024-08-09 11:05 ` [PATCH v2 4/4] t-reftable-readwrite: add test for known error Chandra Pratap
2024-08-13 14:34 ` [GSoC][PATCH v3 0/4] t: port reftable/readwrite_test.c to the unit testing framework Chandra Pratap
2024-08-13 14:34 ` [PATCH v3 1/4] t: move " Chandra Pratap
2024-08-13 22:33 ` Josh Steadmon
2024-08-14 11:48 ` Chandra Pratap
2024-08-14 13:08 ` Patrick Steinhardt
2024-08-13 14:34 ` [PATCH v3 2/4] t-reftable-readwrite: use free_names() instead of a for loop Chandra Pratap
2024-08-13 14:34 ` [PATCH v3 3/4] t-reftable-readwrite: use 'for' in place of infinite 'while' loops Chandra Pratap
2024-08-13 14:34 ` [PATCH v3 4/4] t-reftable-readwrite: add test for known error Chandra Pratap
2024-08-13 17:10 ` [GSoC][PATCH v3 0/4] t: port reftable/readwrite_test.c to the unit testing framework Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZrR91dR3G06L9dy7@tanuki \
--to=ps@pks.im \
--cc=chandrapratap3519@gmail.com \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.