From: Junio C Hamano <gitster@pobox.com>
To: Chandra Pratap <chandrapratap3519@gmail.com>
Cc: git@vger.kernel.org, karthik188@gmail.com, chriscool@tuxfamily.org
Subject: Re: [GSoC][PATCH v4 0/5] t: port reftable/tree_test.c to the unit testing framework
Date: Tue, 16 Jul 2024 12:52:23 -0700 [thread overview]
Message-ID: <xmqqh6cp8688.fsf@gitster.g> (raw)
In-Reply-To: <20240716075641.4264-1-chandrapratap3519@gmail.com> (Chandra Pratap's message of "Tue, 16 Jul 2024 13:18:12 +0530")
Chandra Pratap <chandrapratap3519@gmail.com> writes:
> In the recent codebase update (commit 8bf6fbd, 2023-12-09), a new unit
Consistently refer to an existing commit with --format=reference.
$ git show -s --format=reference 8bf6fbd
8bf6fbd00d (Merge branch 'js/doc-unit-tests', 2023-12-09)
> testing framework written entirely in C was introduced to the Git project
> aimed at simplifying testing and reducing test run times.
I doubt that the reason why "unit-tests" written entirely in C was
introduced is because we wanted to simplify testing and to reduce
test run times to begin with. The traditional tests to observe the
effect visible to end-users by actually running commands that would
be run by end-users and unit tests serve two separate purposes. The
latter does not "simplify", or "reduce time"---you cannot write a
test "entirely in C" to make sure, say, that "git push --force"
allows a non-fast-forward update to happen using unit-test
framework. The unit-tests cannot replace end-to-end tests. They
are complementary.
The statement may need to be rethought.
Or just stop at saying something like
The reftable library comes with self tests, which are exercised
as part of the usual end-to-end tests that are designed to
observe the end-user visible effects of Git commands. What it
exercises, however, is a better match to the unit-testing
framework, merged at 8bf6fbd0 (Merge branch 'js/doc-unit-tests',
2023-12-09), that are designed to observe how low level
implementation details, at the level of sequences of individual
function calls, behave.
which already covers the next paragraph while at it.
> Currently, tests for the reftable refs-backend are performed by a custom
> testing framework defined by reftable/test_framework.{c, h}. Port
> reftable/tree_test.c to the unit testing framework and improve upon
> the ported test.
>
> The first patch in the series is preparatory cleanup, the second patch
> moves the test to the unit testing framework, and the rest of the patches
> improve upon the ported test.
>
> Mentored-by: Patrick Steinhardt <ps@pks.im>
> Mentored-by: Christian Couder <chriscool@tuxfamily.org>
> Signed-off-by: Chandra Pratap <chandrapratap3519@gmail.com>
>
> ---
> Changes in v4:
> - Rename the tests to be in-line with unit-tests' standards
>
> CI/PR: https://github.com/gitgitgadget/git/pull/1740
By the way, did you rebase the patches? On which commit is this
iteration based? Judging from the second patch, it seems to assume
that Makefile does not yet have t-reftable-record in it, and it
applies cleanly to 'master' before 9118e46e (Merge branch
'cp/unit-test-reftable-record', 2024-07-15). Newer 'master' has
textual conflicts (nothing that I cannot resolve, but it shows that
apparently that anything newer than 9118e46e are not commits that
you developed this series on).
Has this series even been compile-tested? I do not think that even
the unit test added by this series has been run (or compiled).
$ make -j32 t/unit-tests/t-reftable-tree.o
GIT_VERSION = 2.46.0.rc0.27.g0c2075a7c5
* new build flags
CC t/unit-tests/t-reftable-tree.o
In file included from t/unit-tests/t-reftable-tree.c:9:
t/unit-tests/t-reftable-tree.c: In function ‘t_tree_search’:
t/unit-tests/t-reftable-tree.c:45:44: error: ‘test_compare’ undeclared (first use in this function); did you mean ‘t_compare’?
45 | check(!tree_search(values, &root, &test_compare, 0));
| ^~~~~~~~~~~~
t/unit-tests/test-lib.h:75:45: note: in definition of macro ‘check’
75 | check_bool_loc(TEST_LOCATION(), #x, x)
| ^
t/unit-tests/t-reftable-tree.c:45:44: note: each undeclared identifier is reported only once for each function it appears in
45 | check(!tree_search(values, &root, &test_compare, 0));
| ^~~~~~~~~~~~
t/unit-tests/test-lib.h:75:45: note: in definition of macro ‘check’
75 | check_bool_loc(TEST_LOCATION(), #x, x)
| ^
make: *** [Makefile:2754: t/unit-tests/t-reftable-tree.o] Error 1
Let's concentrate on quality, not quantity; too many topics with the
same prefix cp/unit-test* seem to be left unreviewed on the list.
In the meantime, I'll queue the following fix-up on top. In this
codebase, it is preferred to write a pointer to a function whose
name is "func" as just "func", not "&func".
t/unit-tests/t-reftable-tree.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/t/unit-tests/t-reftable-tree.c b/t/unit-tests/t-reftable-tree.c
index b3d4008e5c..107f1f69bf 100644
--- a/t/unit-tests/t-reftable-tree.c
+++ b/t/unit-tests/t-reftable-tree.c
@@ -33,16 +33,16 @@ static void t_tree_search(void)
size_t i = 1;
do {
- nodes[i] = tree_search(values + i, &root, &t_compare, 1);
+ nodes[i] = tree_search(values + i, &root, t_compare, 1);
i = (i * 7) % 11;
} while (i != 1);
for (i = 1; i < ARRAY_SIZE(nodes); i++) {
check_pointer_eq(values + i, nodes[i]->key);
- check_pointer_eq(nodes[i], tree_search(values + i, &root, &t_compare, 0));
+ check_pointer_eq(nodes[i], tree_search(values + i, &root, t_compare, 0));
}
- check(!tree_search(values, &root, &test_compare, 0));
+ check(!tree_search(values, &root, t_compare, 0));
tree_free(root);
}
@@ -58,7 +58,7 @@ static void t_infix_walk(void)
size_t count = 0;
do {
- tree_search(values + i, &root, &t_compare, 1);
+ tree_search(values + i, &root, t_compare, 1);
i = (i * 7) % 11;
count++;
} while (i != 1);
--
2.46.0-rc0-137-g851401d64b
next prev parent reply other threads:[~2024-07-16 19:52 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-10 13:01 [GSoC][PATCH 0/4] t: port reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-06-10 13:01 ` [PATCH 1/4] reftable: remove unnecessary curly braces in reftable/tree.c Chandra Pratap
2024-06-10 13:01 ` [PATCH 2/4] t: move reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-06-10 13:01 ` [PATCH 3/4] t-reftable-tree: split test_tree() into two sub-test functions Chandra Pratap
2024-06-10 13:49 ` Patrick Steinhardt
2024-06-11 6:44 ` Chandra Pratap
2024-06-10 13:01 ` [PATCH 4/4] t-reftable-tree: add test for non-existent key Chandra Pratap
2024-06-12 5:38 ` [GSoC][PATCH v2 0/5] t: port reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-06-12 5:38 ` [PATCH v2 1/5] reftable: remove unnecessary curly braces in reftable/tree.c Chandra Pratap
2024-06-12 5:38 ` [PATCH v2 2/5] t: move reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-06-12 5:38 ` [PATCH v2 3/5] t-reftable-tree: split test_tree() into two sub-test functions Chandra Pratap
2024-06-12 5:38 ` [PATCH v2 4/5] t-reftable-tree: add test for non-existent key Chandra Pratap
2024-06-12 5:38 ` [PATCH v2 5/5] t-reftable-tree: improve the test for infix_walk() Chandra Pratap
2024-06-12 6:59 ` Patrick Steinhardt
2024-06-12 9:05 ` Chandra Pratap
2024-06-12 12:52 ` [GSoC][PATCH v3 0/5] t: port reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-06-12 12:52 ` [PATCH v3 1/5] reftable: remove unnecessary curly braces in reftable/tree.c Chandra Pratap
2024-06-12 12:53 ` [PATCH v3 2/5] t: move reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-06-12 12:53 ` [PATCH v3 3/5] t-reftable-tree: split test_tree() into two sub-test functions Chandra Pratap
2024-06-12 12:53 ` [PATCH v3 4/5] t-reftable-tree: add test for non-existent key Chandra Pratap
2024-06-12 12:53 ` [PATCH v3 5/5] t-reftable-tree: improve the test for infix_walk() Chandra Pratap
2024-07-16 7:48 ` [GSoC][PATCH v4 0/5] t: port reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-07-16 7:48 ` [PATCH v4 1/5] reftable: remove unnecessary curly braces in reftable/tree.c Chandra Pratap
2024-07-16 7:48 ` [PATCH v4 2/5] t: move reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-07-17 11:49 ` Karthik Nayak
2024-07-17 13:50 ` Chandra Pratap
2024-07-18 8:04 ` Karthik Nayak
2024-07-17 12:39 ` Karthik Nayak
2024-07-17 14:30 ` Chandra Pratap
2024-07-17 22:14 ` Justin Tobler
2024-07-18 4:58 ` Chandra Pratap
2024-07-18 8:10 ` Karthik Nayak
2024-07-18 8:23 ` Chandra Pratap
2024-07-18 15:26 ` Justin Tobler
2024-07-16 7:48 ` [PATCH v4 3/5] t-reftable-tree: split test_tree() into two sub-test functions Chandra Pratap
2024-07-16 7:48 ` [PATCH v4 4/5] t-reftable-tree: add test for non-existent key Chandra Pratap
2024-07-16 7:48 ` [PATCH v4 5/5] t-reftable-tree: improve the test for infix_walk() Chandra Pratap
2024-07-16 19:52 ` Junio C Hamano [this message]
2024-07-22 5:57 ` [GSoC][PATCH v5 0/5] t: port reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-07-22 5:57 ` [PATCH v5 1/5] reftable: remove unnecessary curly braces in reftable/tree.c Chandra Pratap
2024-07-22 5:57 ` [PATCH v5 2/5] t: move reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-07-22 17:52 ` Junio C Hamano
2024-07-22 17:52 ` Junio C Hamano
2024-07-22 17:56 ` Junio C Hamano
2024-07-22 5:57 ` [PATCH v5 3/5] t-reftable-tree: split test_tree() into two sub-test functions Chandra Pratap
2024-07-22 5:57 ` [PATCH v5 4/5] t-reftable-tree: add test for non-existent key Chandra Pratap
2024-07-22 5:57 ` [PATCH v5 5/5] t-reftable-tree: improve the test for infix_walk() Chandra Pratap
2024-08-01 11:21 ` [GSoC][PATCH v5 0/5] t: port reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-08-01 11:45 ` Patrick Steinhardt
2024-08-02 12:08 ` [GSoC][PATCH v6 " Chandra Pratap
2024-08-02 12:08 ` [PATCH v6 1/5] reftable: remove unnecessary curly braces in reftable/tree.c Chandra Pratap
2024-08-02 12:08 ` [PATCH v6 2/5] t: move reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-08-02 12:08 ` [PATCH v6 3/5] t-reftable-tree: split test_tree() into two sub-test functions Chandra Pratap
2024-08-02 16:25 ` Junio C Hamano
2024-08-02 12:08 ` [PATCH v6 4/5] t-reftable-tree: add test for non-existent key Chandra Pratap
2024-08-02 12:08 ` [PATCH v6 5/5] t-reftable-tree: improve the test for infix_walk() Chandra Pratap
2024-08-04 14:06 ` [GSoC][PATCH v7 0/5] t: port reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-08-04 14:06 ` [PATCH v7 1/5] reftable: remove unnecessary curly braces in reftable/tree.c Chandra Pratap
2024-08-04 14:06 ` [PATCH v7 2/5] t: move reftable/tree_test.c to the unit testing framework Chandra Pratap
2024-08-04 14:06 ` [PATCH v7 3/5] t-reftable-tree: split test_tree() into two sub-test functions Chandra Pratap
2024-08-04 14:06 ` [PATCH v7 4/5] t-reftable-tree: add test for non-existent key Chandra Pratap
2024-08-04 14:06 ` [PATCH v7 5/5] t-reftable-tree: improve the test for infix_walk() Chandra Pratap
2024-08-05 11:04 ` [GSoC][PATCH v7 0/5] t: port reftable/tree_test.c to the unit testing framework Patrick Steinhardt
2024-08-05 15:53 ` Junio C Hamano
2024-08-06 6:30 ` Patrick Steinhardt
2024-08-06 15:35 ` 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=xmqqh6cp8688.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=chandrapratap3519@gmail.com \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=karthik188@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).