summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2015-01-18 00:47:59 -0600
committerEdward Thomson <ethomson@microsoft.com>2015-01-21 11:53:20 -0600
commit0ad5c845d2c5fb709cc4eb4ef7f9309684f75934 (patch)
tree35c265ef21f183b80fdc2106582d8fa818936ef7
parent1d67e8fd0cccef467f4e87f9931896652185dc72 (diff)
downloadlibgit2-0ad5c845d2c5fb709cc4eb4ef7f9309684f75934.tar.gz
structinit test: show which byte differs
-rw-r--r--tests/structinit/structinit.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/tests/structinit/structinit.c b/tests/structinit/structinit.c
index 0e00ab5a0..620743b90 100644
--- a/tests/structinit/structinit.c
+++ b/tests/structinit/structinit.c
@@ -25,11 +25,8 @@ do { \
structname structname##_func_latest; \
int structname##_curr_ver = structver - 1; \
cl_git_pass(funcinitname(&structname##_func_latest, structver)); \
- cl_check_( \
- memcmp(&structname##_macro_latest, &structname##_func_latest, \
- sizeof(structname)) == 0, \
- "Macro-based and function-based initializer for " STRINGIFY(structname) \
- " are not equivalent."); \
+ options_cmp(&structname##_macro_latest, &structname##_func_latest, \
+ sizeof(structname), STRINGIFY(structname)); \
\
while (structname##_curr_ver > 0) \
{ \
@@ -39,6 +36,24 @@ do { \
}\
} while(0)
+static void options_cmp(void *one, void *two, size_t size, const char *name)
+{
+ size_t i;
+
+ for (i = 0; i < size; i++) {
+ if (((char *)one)[i] != ((char *)two)[i]) {
+ char desc[1024];
+
+ p_snprintf(desc, 1024, "Difference in %s at byte %d: macro=%u / func=%u",
+ name, i, ((char *)one)[i], ((char *)two)[i]);
+ clar__fail(__FILE__, __LINE__,
+ "Difference between macro and function options initializer",
+ desc, 0);
+ return;
+ }
+ }
+}
+
void test_structinit_structinit__compare(void)
{
/* blame */