From owner-svn-src-head@FreeBSD.ORG Mon Apr 27 18:39:56 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 038BA10656A6; Mon, 27 Apr 2009 18:39:56 +0000 (UTC) (envelope-from kientzle@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DBC788FC20; Mon, 27 Apr 2009 18:39:55 +0000 (UTC) (envelope-from kientzle@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n3RIdt60023008; Mon, 27 Apr 2009 18:39:55 GMT (envelope-from kientzle@svn.freebsd.org) Received: (from kientzle@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n3RIdtng023006; Mon, 27 Apr 2009 18:39:55 GMT (envelope-from kientzle@svn.freebsd.org) Message-Id: <200904271839.n3RIdtng023006@svn.freebsd.org> From: Tim Kientzle Date: Mon, 27 Apr 2009 18:39:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r191581 - head/lib/libarchive/test X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Apr 2009 18:39:56 -0000 Author: kientzle Date: Mon Apr 27 18:39:55 2009 New Revision: 191581 URL: http://svn.freebsd.org/changeset/base/191581 Log: Merge r1054,r1060 from libarchive.googlecode.com: * assertEqualMem() now takes void * arguments * Be a little smarter about what we hexdump when assertEqualMem() fails Modified: head/lib/libarchive/test/main.c head/lib/libarchive/test/test.h Modified: head/lib/libarchive/test/main.c ============================================================================== --- head/lib/libarchive/test/main.c Mon Apr 27 18:35:06 2009 (r191580) +++ head/lib/libarchive/test/main.c Mon Apr 27 18:39:55 2009 (r191581) @@ -463,13 +463,16 @@ hexdump(const char *p, const char *ref, } /* assertEqualMem() displays the values of the two memory blocks. */ -/* TODO: For long blocks, hexdump the first bytes that actually differ. */ int test_assert_equal_mem(const char *file, int line, - const char *v1, const char *e1, - const char *v2, const char *e2, + const void *_v1, const char *e1, + const void *_v2, const char *e2, size_t l, const char *ld, void *extra) { + const char *v1 = (const char *)_v1; + const char *v2 = (const char *)_v2; + size_t offset; + count_assertion(file, line); if (v1 == NULL || v2 == NULL) { if (v1 == v2) { @@ -486,10 +489,20 @@ test_assert_equal_mem(const char *file, fprintf(stderr, "%s:%d: Assertion failed: memory not equal\n", file, line); fprintf(stderr, " size %s = %d\n", ld, (int)l); + /* Dump 48 bytes (3 lines) so that the first difference is + * in the second line. */ + offset = 0; + while (l > 64 && memcmp(v1, v2, 32) == 0) { + /* The first two lines agree, so step forward one line. */ + v1 += 16; + v2 += 16; + l -= 16; + offset += 16; + } fprintf(stderr, " Dump of %s\n", e1); - hexdump(v1, v2, l < 32 ? l : 32, 0); + hexdump(v1, v2, l < 64 ? l : 64, offset); fprintf(stderr, " Dump of %s\n", e2); - hexdump(v2, v1, l < 32 ? l : 32, 0); + hexdump(v2, v1, l < 64 ? l : 64, offset); fprintf(stderr, "\n"); report_failure(extra); return (0); Modified: head/lib/libarchive/test/test.h ============================================================================== --- head/lib/libarchive/test/test.h Mon Apr 27 18:35:06 2009 (r191580) +++ head/lib/libarchive/test/test.h Mon Apr 27 18:39:55 2009 (r191581) @@ -147,7 +147,7 @@ int test_assert_equal_file(const char *, int test_assert_equal_int(const char *, int, int, const char *, int, const char *, void *); int test_assert_equal_string(const char *, int, const char *v1, const char *, const char *v2, const char *, void *); int test_assert_equal_wstring(const char *, int, const wchar_t *v1, const char *, const wchar_t *v2, const char *, void *); -int test_assert_equal_mem(const char *, int, const char *, const char *, const char *, const char *, size_t, const char *, void *); +int test_assert_equal_mem(const char *, int, const void *, const char *, const void *, const char *, size_t, const char *, void *); int test_assert_file_contents(const void *, int, const char *, ...); int test_assert_file_exists(const char *, ...); int test_assert_file_not_exists(const char *, ...);