git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chandra Pratap <chandrapratap3519@gmail.com>
To: git@vger.kernel.org
Cc: Patrick Steinhardt <ps@pks.im>,
	Christian Couder <chriscool@tuxfamily.org>,
	Chandra Pratap <chandrapratap3519@gmail.com>
Subject: [GSoC][PATCH v3 0/5] t: port reftable/tree_test.c to the unit testing framework
Date: Wed, 12 Jun 2024 18:22:58 +0530	[thread overview]
Message-ID: <20240612130217.8877-1-chandrapratap3519@gmail.com> (raw)
In-Reply-To: <20240612055031.3607-1-chandrapratap3519@gmail.com>

In the recent codebase update (commit 8bf6fbd, 2023-12-09), a new unit
testing framework written entirely in C was introduced to the Git project
aimed at simplifying testing and reducing test run times.
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 v3:
- Fix a typo in the commit message of the fifth patch
- Add a check for number of input & output elements in the fifth patch
- Small refactor changes

CI/PR: https://github.com/gitgitgadget/git/pull/1740

Chandra Pratap(5):
reftable: remove unnecessary curly braces in
t: move reftable/tree_test.c to the unit testing
t-reftable-tree: split test_tree() into two sub-test
t-reftable-tree: add test for non-existent key
t-reftable-tree: improve the test for infix_walk()

Makefile                       |  2 +-
reftable/tree.c                | 15 +++--------
reftable/tree_test.c           | 60 -------------------------------
t/helper/test-reftable.c       |  1 -
t/unit-tests/t-reftable-tree.c | 76 ++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 86 insertions(+), 72 deletions(-)

Range-diff against v2:
1:  3010c8f01a ! 1:  44800ad205 t-reftable-tree: improve the test for infix_walk()
    @@ Commit message
         In the current testing setup for infix_walk(), the following
         properties of an infix traversal of a tree remain untested:
         - every node of the tree must be visited
    -    - every node must be visited exactly only
    -    and only the property 'traversal in increasing order' is tested.
    +    - every node must be visited exactly once
    +    In fact, only the property 'traversal in increasing order' is tested.
         Modify test_infix_walk() to check for all the properties above.

         This can be achieved by storing the nodes' keys linearly, in a nullified
    @@ t/unit-tests/t-reftable-tree.c: static int test_compare(const void *a, const voi
      struct curry {
     -	void *last;
     +	void **arr;
    -+	size_t i;
    ++	size_t len;
      };

     -static void check_increasing(void *arg, void *key)
    @@ t/unit-tests/t-reftable-tree.c: static int test_compare(const void *a, const voi
     -	if (c->last)
     -		check_int(test_compare(c->last, key), <, 0);
     -	c->last = key;
    -+	c->arr[c->i++] = key;
    ++	c->arr[c->len++] = key;
      }

      static void test_tree_search(void)
    @@ t/unit-tests/t-reftable-tree.c: static void test_infix_walk(void)
      {
      	struct tree_node *root = NULL;
      	void *values[11] = { 0 };
    -+	void *out[20] = { 0 };
    - 	struct curry c = { 0 };
    +-	struct curry c = { 0 };
    ++	void *out[11] = { 0 };
    ++	struct curry c = {
    ++		.arr = (void **) &out,
    ++	};
      	size_t i = 1;
    ++	size_t count = 0;

    -@@ t/unit-tests/t-reftable-tree.c: static void test_infix_walk(void)
    + 	do {
    + 		tree_search(values + i, &root, &test_compare, 1);
      		i = (i * 7) % 11;
    ++		count++;
      	} while (i != 1);

     -	infix_walk(root, &check_increasing, &c);
    -+	c.arr = (void **) &out;
     +	infix_walk(root, &store, &c);
     +	for (i = 1; i < ARRAY_SIZE(values); i++)
     +		check_pointer_eq(values + i, out[i - 1]);
    -+	check(!out[i]);
    ++	check(!out[i - 1]);
    ++	check_int(c.len, ==, count);
      	tree_free(root);
      }


  parent reply	other threads:[~2024-06-12 13:02 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   ` Chandra Pratap [this message]
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       ` [GSoC][PATCH v4 0/5] t: port reftable/tree_test.c to the unit testing framework Junio C Hamano
2024-07-22  5:57       ` [GSoC][PATCH v5 " 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=20240612130217.8877-1-chandrapratap3519@gmail.com \
    --to=chandrapratap3519@gmail.com \
    --cc=chriscool@tuxfamily.org \
    --cc=git@vger.kernel.org \
    --cc=ps@pks.im \
    /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).