summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2014-03-07 00:28:18 -0800
committerEdward Thomson <ethomson@microsoft.com>2014-03-07 00:28:18 -0800
commit806571f3523d64be51e541705da580f28ea8f9a9 (patch)
treeb0825202dee511ae7caa64cbb87c7054fba8a2e6
parent8e5247203720de7abd084996c00afd6fb6f6cc21 (diff)
downloadlibgit2-806571f3523d64be51e541705da580f28ea8f9a9.tar.gz
Update clar to a0b00f0
-rw-r--r--tests/clar.c23
-rw-r--r--tests/clar.h3
2 files changed, 26 insertions, 0 deletions
diff --git a/tests/clar.c b/tests/clar.c
index 6c7399a54..90aeb571d 100644
--- a/tests/clar.c
+++ b/tests/clar.c
@@ -65,7 +65,12 @@
# ifndef PRIxZ
# define PRIxZ "Ix"
# endif
+
+# ifdef _MSC_VER
+ typedef struct stat STAT_T;
+# else
typedef struct _stat STAT_T;
+# endif
#else
# include <sys/wait.h> /* waitpid(2) */
# include <unistd.h>
@@ -468,6 +473,24 @@ void clar__assert_equal(
}
}
}
+ else if(!strcmp("%.*s", fmt)) {
+ const char *s1 = va_arg(args, const char *);
+ const char *s2 = va_arg(args, const char *);
+ size_t len = va_arg(args, size_t);
+ is_equal = (!s1 || !s2) ? (s1 == s2) : !strncmp(s1, s2, len);
+
+ if (!is_equal) {
+ if (s1 && s2) {
+ size_t pos;
+ for (pos = 0; s1[pos] == s2[pos] && pos < len; ++pos)
+ /* find differing byte offset */;
+ p_snprintf(buf, sizeof(buf), "'%.*s' != '%.*s' (at byte %d)",
+ len, s1, len, s2, pos);
+ } else {
+ p_snprintf(buf, sizeof(buf), "'%.*s' != '%.*s'", len, s1, len, s2);
+ }
+ }
+ }
else if (!strcmp("%"PRIuZ, fmt) || !strcmp("%"PRIxZ, fmt)) {
size_t sz1 = va_arg(args, size_t), sz2 = va_arg(args, size_t);
is_equal = (sz1 == sz2);
diff --git a/tests/clar.h b/tests/clar.h
index e1f244eba..7f77f7502 100644
--- a/tests/clar.h
+++ b/tests/clar.h
@@ -60,6 +60,9 @@ void cl_fixture_cleanup(const char *fixture_name);
#define cl_assert_equal_s(s1,s2) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2, 1, "%s", (s1), (s2))
#define cl_assert_equal_s_(s1,s2,note) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2 " (" #note ")", 1, "%s", (s1), (s2))
+#define cl_assert_equal_strn(s1,s2,len) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2, 1, "%.*s", (s1), (s2), (size_t)(len))
+#define cl_assert_equal_strn_(s1,s2,len,note) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2 " (" #note ")", 1, "%.*s", (s1), (s2), (size_t)(len))
+
#define cl_assert_equal_i(i1,i2) clar__assert_equal(__FILE__,__LINE__,#i1 " != " #i2, 1, "%d", (int)(i1), (int)(i2))
#define cl_assert_equal_i_(i1,i2,note) clar__assert_equal(__FILE__,__LINE__,#i1 " != " #i2 " (" #note ")", 1, "%d", (i1), (i2))
#define cl_assert_equal_i_fmt(i1,i2,fmt) clar__assert_equal(__FILE__,__LINE__,#i1 " != " #i2, 1, (fmt), (int)(i1), (int)(i2))