strvec: add functions to replace and remove strings

Add two functions that allow to replace and remove strings contained in
the strvec. This will be used by a subsequent commit that refactors
git-mv(1).

While at it, add a bunch of unit tests that cover both old and new
functionality.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt
2024-05-27 13:47:04 +02:00
committed by Junio C Hamano
parent 3ef52dd112
commit 11ce77b5cc
6 changed files with 329 additions and 0 deletions

View File

@ -75,6 +75,18 @@ int test_assert(const char *location, const char *check, int ok);
check_bool_loc(TEST_LOCATION(), #x, x)
int check_bool_loc(const char *loc, const char *check, int ok);
/*
* Compare two integers. Prints a message with the two values if the
* comparison fails. NB this is not thread safe.
*/
#define check_pointer_eq(a, b) \
(test__tmp[0].p = (a), test__tmp[1].p = (b), \
check_pointer_eq_loc(TEST_LOCATION(), #a" == "#b, \
test__tmp[0].p == test__tmp[1].p, \
test__tmp[0].p, test__tmp[1].p))
int check_pointer_eq_loc(const char *loc, const char *check, int ok,
const void *a, const void *b);
/*
* Compare two integers. Prints a message with the two values if the
* comparison fails. NB this is not thread safe.
@ -136,6 +148,7 @@ union test__tmp {
intmax_t i;
uintmax_t u;
char c;
const void *p;
};
extern union test__tmp test__tmp[2];