Skip to content

Commit 85cf880

Browse files
committed
Merge branch 'sk/unit-test-hash'
Test update. * sk/unit-test-hash: t/unit-tests: convert hash to use clar test framework
2 parents 73c152e + 43850dc commit 85cf880

File tree

3 files changed

+50
-25
lines changed

3 files changed

+50
-25
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1338,14 +1338,14 @@ THIRD_PARTY_SOURCES += $(UNIT_TEST_DIR)/clar/%
13381338
THIRD_PARTY_SOURCES += $(UNIT_TEST_DIR)/clar/clar/%
13391339

13401340
CLAR_TEST_SUITES += u-ctype
1341+
CLAR_TEST_SUITES += u-hash
13411342
CLAR_TEST_SUITES += u-strvec
13421343
CLAR_TEST_PROG = $(UNIT_TEST_BIN)/unit-tests$(X)
13431344
CLAR_TEST_OBJS = $(patsubst %,$(UNIT_TEST_DIR)/%.o,$(CLAR_TEST_SUITES))
13441345
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
13451346
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
13461347

13471348
UNIT_TEST_PROGRAMS += t-example-decorate
1348-
UNIT_TEST_PROGRAMS += t-hash
13491349
UNIT_TEST_PROGRAMS += t-hashmap
13501350
UNIT_TEST_PROGRAMS += t-mem-pool
13511351
UNIT_TEST_PROGRAMS += t-oid-array

t/meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
clar_test_suites = [
22
'unit-tests/u-ctype.c',
3+
'unit-tests/u-hash.c',
34
'unit-tests/u-strvec.c',
45
]
56

@@ -41,7 +42,6 @@ test('unit-tests', clar_unit_tests)
4142

4243
unit_test_programs = [
4344
'unit-tests/t-example-decorate.c',
44-
'unit-tests/t-hash.c',
4545
'unit-tests/t-hashmap.c',
4646
'unit-tests/t-mem-pool.c',
4747
'unit-tests/t-oid-array.c',
Lines changed: 48 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1-
#include "test-lib.h"
1+
#include "unit-test.h"
22
#include "hex.h"
33
#include "strbuf.h"
44

55
static void check_hash_data(const void *data, size_t data_length,
66
const char *expected_hashes[])
77
{
8-
if (!check(data != NULL)) {
9-
test_msg("BUG: NULL data pointer provided");
10-
return;
11-
}
8+
cl_assert(data != NULL);
129

1310
for (size_t i = 1; i < ARRAY_SIZE(hash_algos); i++) {
1411
git_hash_ctx ctx;
@@ -19,66 +16,94 @@ static void check_hash_data(const void *data, size_t data_length,
1916
algop->update_fn(&ctx, data, data_length);
2017
algop->final_fn(hash, &ctx);
2118

22-
if (!check_str(hash_to_hex_algop(hash, algop), expected_hashes[i - 1]))
23-
test_msg("result does not match with the expected for %s\n", hash_algos[i].name);
19+
cl_assert_equal_s(hash_to_hex_algop(hash,algop), expected_hashes[i - 1]);
2420
}
2521
}
2622

2723
/* Works with a NUL terminated string. Doesn't work if it should contain a NUL character. */
2824
#define TEST_HASH_STR(data, expected_sha1, expected_sha256) do { \
2925
const char *expected_hashes[] = { expected_sha1, expected_sha256 }; \
30-
TEST(check_hash_data(data, strlen(data), expected_hashes), \
31-
"SHA1 and SHA256 (%s) works", #data); \
26+
check_hash_data(data, strlen(data), expected_hashes); \
3227
} while (0)
3328

3429
/* Only works with a literal string, useful when it contains a NUL character. */
3530
#define TEST_HASH_LITERAL(literal, expected_sha1, expected_sha256) do { \
3631
const char *expected_hashes[] = { expected_sha1, expected_sha256 }; \
37-
TEST(check_hash_data(literal, (sizeof(literal) - 1), expected_hashes), \
38-
"SHA1 and SHA256 (%s) works", #literal); \
32+
check_hash_data(literal, (sizeof(literal) - 1), expected_hashes); \
3933
} while (0)
4034

41-
int cmd_main(int argc UNUSED, const char **argv UNUSED)
35+
void test_hash__empty_string(void)
4236
{
43-
struct strbuf aaaaaaaaaa_100000 = STRBUF_INIT;
44-
struct strbuf alphabet_100000 = STRBUF_INIT;
45-
46-
strbuf_addstrings(&aaaaaaaaaa_100000, "aaaaaaaaaa", 100000);
47-
strbuf_addstrings(&alphabet_100000, "abcdefghijklmnopqrstuvwxyz", 100000);
48-
4937
TEST_HASH_STR("",
5038
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
5139
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");
40+
}
41+
42+
void test_hash__single_character(void)
43+
{
5244
TEST_HASH_STR("a",
5345
"86f7e437faa5a7fce15d1ddcb9eaeaea377667b8",
5446
"ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb");
47+
}
48+
49+
void test_hash__multi_character(void)
50+
{
5551
TEST_HASH_STR("abc",
5652
"a9993e364706816aba3e25717850c26c9cd0d89d",
5753
"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad");
54+
}
55+
56+
void test_hash__message_digest(void)
57+
{
5858
TEST_HASH_STR("message digest",
5959
"c12252ceda8be8994d5fa0290a47231c1d16aae3",
6060
"f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650");
61+
}
62+
63+
void test_hash__alphabet(void)
64+
{
6165
TEST_HASH_STR("abcdefghijklmnopqrstuvwxyz",
6266
"32d10c7b8cf96570ca04ce37f2a19d84240d3a89",
6367
"71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73");
68+
}
69+
70+
void test_hash__aaaaaaaaaa_100000(void)
71+
{
72+
struct strbuf aaaaaaaaaa_100000 = STRBUF_INIT;
73+
strbuf_addstrings(&aaaaaaaaaa_100000, "aaaaaaaaaa", 100000);
6474
TEST_HASH_STR(aaaaaaaaaa_100000.buf,
6575
"34aa973cd4c4daa4f61eeb2bdbad27316534016f",
6676
"cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0");
77+
strbuf_release(&aaaaaaaaaa_100000);
78+
}
79+
80+
void test_hash__alphabet_100000(void)
81+
{
82+
struct strbuf alphabet_100000 = STRBUF_INIT;
83+
strbuf_addstrings(&alphabet_100000, "abcdefghijklmnopqrstuvwxyz", 100000);
6784
TEST_HASH_STR(alphabet_100000.buf,
6885
"e7da7c55b3484fdf52aebec9cbe7b85a98f02fd4",
6986
"e406ba321ca712ad35a698bf0af8d61fc4dc40eca6bdcea4697962724ccbde35");
87+
strbuf_release(&alphabet_100000);
88+
}
89+
90+
void test_hash__zero_blob_literal(void)
91+
{
7092
TEST_HASH_LITERAL("blob 0\0",
7193
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
7294
"473a0f4c3be8a93681a267e3b1e9a7dcda1185436fe141f7749120a303721813");
95+
}
96+
97+
void test_hash__three_blob_literal(void)
98+
{
7399
TEST_HASH_LITERAL("blob 3\0abc",
74100
"f2ba8f84ab5c1bce84a7b441cb1959cfc7093b7f",
75101
"c1cf6e465077930e88dc5136641d402f72a229ddd996f627d60e9639eaba35a6");
102+
}
103+
104+
void test_hash__zero_tree_literal(void)
105+
{
76106
TEST_HASH_LITERAL("tree 0\0",
77107
"4b825dc642cb6eb9a060e54bf8d69288fbee4904",
78108
"6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321");
79-
80-
strbuf_release(&aaaaaaaaaa_100000);
81-
strbuf_release(&alphabet_100000);
82-
83-
return test_done();
84109
}

0 commit comments

Comments
 (0)