All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
Cc: ach.lumap@gmail.com, chriscool@tuxfamily.org,
	christian.couder@gmail.com, git@vger.kernel.org,
	gitster@pobox.com, kaartic.sivaraam@gmail.com
Subject: Re: [PATCH v4 2/2] t/: migrate helper/test-{sha1, sha256} to unit-tests/t-hash
Date: Wed, 29 May 2024 08:26:24 +0200	[thread overview]
Message-ID: <ZlbKkMfmWFw59aO8@tanuki> (raw)
In-Reply-To: <20240526084345.24138-3-shyamthakkar001@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2904 bytes --]

On Sun, May 26, 2024 at 02:13:45PM +0530, Ghanshyam Thakkar wrote:
> -test_done
> diff --git a/t/unit-tests/t-hash.c b/t/unit-tests/t-hash.c
> new file mode 100644
> index 0000000000..bf3e0e9e94
> --- /dev/null
> +++ b/t/unit-tests/t-hash.c
> @@ -0,0 +1,86 @@
> +#include "test-lib.h"
> +#include "hex.h"
> +#include "strbuf.h"
> +
> +static void check_hash_data(const void *data, size_t data_length,
> +			    const char *expected_hashes[])
> +{
> +	if (!check(data != NULL)) {
> +		test_msg("BUG: NULL data pointer provided");
> +		return;
> +	}
> +
> +	for (int i = 1; i < ARRAY_SIZE(hash_algos); i++) {

s/int/size_t/

> +		git_hash_ctx ctx;
> +		unsigned char hash[GIT_MAX_HEXSZ];
> +		const struct git_hash_algo *algop = &hash_algos[i];
> +
> +		algop->init_fn(&ctx);
> +		algop->update_fn(&ctx, data, data_length);
> +		algop->final_fn(hash, &ctx);
> +
> +		if (!check_str(hash_to_hex_algop(hash, algop), expected_hashes[i - 1]))
> +			test_msg("result does not match with the expected for %s\n", hash_algos[i].name);
> +	}
> +}
> +
> +/* Works with a NUL terminated string. Doesn't work if it should contain a NUL character. */
> +#define TEST_HASH_STR(data, expected_sha1, expected_sha256) \
> +	{ \

These macros should like start with `do {`. The reason why we do this is
that the compiler will complain if there is no semicolon after the macro.

> +		const char *expected_hashes[] = { expected_sha1, expected_sha256 }; \
> +		TEST(check_hash_data(data, strlen(data), expected_hashes), \
> +		     "SHA1 and SHA256 (%s) works", #data); \
> +	}
> +
> +/* Only works with a literal string, useful when it contains a NUL character. */
> +#define TEST_HASH_LITERAL(literal, expected_sha1, expected_sha256) \
> +	{ \
> +		const char *expected_hashes[] = { expected_sha1, expected_sha256 }; \
> +		TEST(check_hash_data(literal, (sizeof(literal) - 1), expected_hashes), \
> +		     "SHA1 and SHA256 (%s) works", #literal); \
> +	}
> +
> +int cmd_main(int argc, const char **argv)
> +{
> +	struct strbuf aaaaaaaaaa_100000 = STRBUF_INIT;
> +	struct strbuf alphabet_100000 = STRBUF_INIT;
> +
> +	strbuf_addstrings(&aaaaaaaaaa_100000, "aaaaaaaaaa", 100000);
> +	strbuf_addstrings(&alphabet_100000, "abcdefghijklmnopqrstuvwxyz", 100000);
> +
> +	TEST_HASH_STR(
> +		"", "da39a3ee5e6b4b0d3255bfef95601890afd80709",
> +		"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");

I think these might've been a bit easier to read if they formatted like
this:

	TEST_HASH_STR("",
	    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
	    "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");

	TEST_HASH_STR("a",
	    "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8",
	    "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb");

It makes it a bit easier to separate the test data from the gibberish
that those hashes are.

Other than that these patches look good to me.

Patrick

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2024-05-29  6:26 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-26 14:33 [Outreachy][PATCH 1/2] strbuf: introduce strbuf_addstrings() to repeatedly add a string Achu Luma
2024-02-26 14:33 ` [Outreachy][PATCH 2/2] Port helper/test-sha256.c and helper/test-sha1.c to unit-tests/t-hash.c Achu Luma
2024-02-26 16:39 ` [Outreachy][PATCH 1/2] strbuf: introduce strbuf_addstrings() to repeatedly add a string Junio C Hamano
2024-02-26 17:15   ` Christian Couder
2024-02-26 18:10     ` Junio C Hamano
2024-02-27 10:07       ` Christian Couder
2024-02-29  5:40 ` [Outreachy][PATCH v2 " Achu Luma
2024-02-29  5:40   ` [Outreachy][PATCH v2 2/2] Port helper/test-sha256.c and helper/test-sha1.c to unit-tests/t-hash.c Achu Luma
2024-03-06 14:25     ` Christian Couder
2024-03-26 11:39     ` Patrick Steinhardt
2024-03-26 11:51       ` Christian Couder
2024-05-16 19:30     ` Ghanshyam Thakkar
2024-05-23 23:59   ` [PATCH v3 0/3] Port t0015-hash to the unit testing framework Ghanshyam Thakkar
2024-05-23 23:59     ` [PATCH v3 1/3] strbuf: introduce strbuf_addstrings() to repeatedly add a string Ghanshyam Thakkar
2024-05-23 23:59     ` [PATCH v3 2/3] t/: port helper/test-sha1.c to unit-tests/t-hash.c Ghanshyam Thakkar
2024-05-24 13:30       ` Patrick Steinhardt
2024-05-24 14:08         ` Christian Couder
2024-05-24 15:49           ` Junio C Hamano
2024-06-15 20:14             ` Ghanshyam Thakkar
2024-06-16  4:52               ` Jeff King
2024-06-17 17:44                 ` Junio C Hamano
2024-06-21 18:37                 ` Ghanshyam Thakkar
2024-05-23 23:59     ` [PATCH v3 3/3] t/: port helper/test-sha256.c " Ghanshyam Thakkar
2024-05-24 13:30       ` Patrick Steinhardt
2024-05-25  1:15         ` Ghanshyam Thakkar
2024-05-26  8:43     ` [PATCH v4 0/2] t/: port helper/test-{sha1, sha256} to unit-tests/t-hash Ghanshyam Thakkar
2024-05-26  8:43       ` [PATCH v4 1/2] strbuf: introduce strbuf_addstrings() to repeatedly add a string Ghanshyam Thakkar
2024-05-26  8:43       ` [PATCH v4 2/2] t/: migrate helper/test-{sha1, sha256} to unit-tests/t-hash Ghanshyam Thakkar
2024-05-29  6:26         ` Patrick Steinhardt [this message]
2024-05-29 14:54           ` Junio C Hamano
2024-05-29  8:00       ` [GSoC][PATCH v5 0/2] " Ghanshyam Thakkar
2024-05-29  8:00         ` [PATCH v5 1/2] strbuf: introduce strbuf_addstrings() to repeatedly add a string Ghanshyam Thakkar
2024-05-29  8:00         ` [PATCH v5 2/2] t/: migrate helper/test-{sha1, sha256} to unit-tests/t-hash Ghanshyam Thakkar
2024-05-29  9:19         ` [GSoC][PATCH v5 0/2] " Patrick Steinhardt
2024-05-29 16:09           ` 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=ZlbKkMfmWFw59aO8@tanuki \
    --to=ps@pks.im \
    --cc=ach.lumap@gmail.com \
    --cc=chriscool@tuxfamily.org \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=kaartic.sivaraam@gmail.com \
    --cc=shyamthakkar001@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 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.