You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2012/02/06 15:42:45 UTC
svn commit: r1241025 - in /subversion/trunk/subversion:
include/svn_checksum.h libsvn_subr/checksum.c
tests/libsvn_subr/checksum-test.c
Author: hwright
Date: Mon Feb 6 14:42:44 2012
New Revision: 1241025
URL: http://svn.apache.org/viewvc?rev=1241025&view=rev
Log:
Add an API which easily checks if a checksum is that of the empty string.
* subversion/include/svn_checksum.h
(svn_checksum_is_empty_checksum): New.
* subversion/libsvn_subr/checksum.c
(svn_checksum_is_empty_checksum): New.
* subversion/tests/libsvn_subr/checksum-test.c
(test_checksum_empty): New test.
(test_funcs): Run the new test.
Modified:
subversion/trunk/subversion/include/svn_checksum.h
subversion/trunk/subversion/libsvn_subr/checksum.c
subversion/trunk/subversion/tests/libsvn_subr/checksum-test.c
Modified: subversion/trunk/subversion/include/svn_checksum.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_checksum.h?rev=1241025&r1=1241024&r2=1241025&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_checksum.h (original)
+++ subversion/trunk/subversion/include/svn_checksum.h Mon Feb 6 14:42:44 2012
@@ -239,6 +239,14 @@ svn_checksum_final(svn_checksum_t **chec
apr_size_t
svn_checksum_size(const svn_checksum_t *checksum);
+/**
+ * Return @c TRUE iff CHECKSUM matches the checksum for the empty string.
+ *
+ * @since New in 1.8.
+ */
+svn_boolean_t
+svn_checksum_is_empty_checksum(svn_checksum_t *checksum);
+
/**
* Return an error of type #SVN_ERR_CHECKSUM_MISMATCH for @a actual and
Modified: subversion/trunk/subversion/libsvn_subr/checksum.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/checksum.c?rev=1241025&r1=1241024&r2=1241025&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/checksum.c (original)
+++ subversion/trunk/subversion/libsvn_subr/checksum.c Mon Feb 6 14:42:44 2012
@@ -423,3 +423,20 @@ svn_checksum_mismatch_err(const svn_chec
svn_checksum_to_cstring_display(expected, scratch_pool),
svn_checksum_to_cstring_display(actual, scratch_pool));
}
+
+svn_boolean_t
+svn_checksum_is_empty_checksum(svn_checksum_t *checksum)
+{
+ switch (checksum->kind)
+ {
+ case svn_checksum_md5:
+ return !strcmp(checksum->digest, svn_md5__empty_string_digest());
+
+ case svn_checksum_sha1:
+ return !strcmp(checksum->digest, svn_sha1__empty_string_digest());
+
+ default:
+ /* We really shouldn't get here, but if we do... */
+ return FALSE;
+ }
+}
Modified: subversion/trunk/subversion/tests/libsvn_subr/checksum-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/checksum-test.c?rev=1241025&r1=1241024&r2=1241025&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/checksum-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/checksum-test.c Mon Feb 6 14:42:44 2012
@@ -59,11 +59,27 @@ test_checksum_parse(apr_pool_t *pool)
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_checksum_empty(apr_pool_t *pool)
+{
+ svn_checksum_t *checksum;
+
+ checksum = svn_checksum_empty_checksum(svn_checksum_md5, pool);
+ SVN_TEST_ASSERT(svn_checksum_is_empty_checksum(checksum));
+
+ checksum = svn_checksum_empty_checksum(svn_checksum_sha1, pool);
+ SVN_TEST_ASSERT(svn_checksum_is_empty_checksum(checksum));
+
+ return SVN_NO_ERROR;
+}
+
/* An array of all test functions */
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
SVN_TEST_PASS2(test_checksum_parse,
"checksum parse"),
+ SVN_TEST_PASS2(test_checksum_empty,
+ "checksum emptiness"),
SVN_TEST_NULL
};
Re: svn commit: r1241025 - in /subversion/trunk/subversion:
include/svn_checksum.h libsvn_subr/checksum.c tests/libsvn_subr/checksum-test.c
Posted by Hyrum K Wright <hy...@wandisco.com>.
On Mon, Feb 6, 2012 at 8:50 AM, Daniel Shahaf <da...@elego.de> wrote:
> hwright@apache.org wrote on Mon, Feb 06, 2012 at 14:42:45 -0000:
>> + checksum = svn_checksum_empty_checksum(svn_checksum_md5, pool);
>> + SVN_TEST_ASSERT(svn_checksum_is_empty_checksum(checksum));
>> +
>
> That doesn't test much -- both functions just call
> svn_md5__empty_string_digest() which returns a static constant.
>
> Perhaps actually construct an empty svn_string_t and checksum it?
Makes sense: r1241033
-Hyrum
--
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com/
Re: svn commit: r1241025 - in /subversion/trunk/subversion:
include/svn_checksum.h libsvn_subr/checksum.c tests/libsvn_subr/checksum-test.c
Posted by Hyrum K Wright <hy...@wandisco.com>.
On Mon, Feb 6, 2012 at 8:50 AM, Daniel Shahaf <da...@elego.de> wrote:
> hwright@apache.org wrote on Mon, Feb 06, 2012 at 14:42:45 -0000:
>> + checksum = svn_checksum_empty_checksum(svn_checksum_md5, pool);
>> + SVN_TEST_ASSERT(svn_checksum_is_empty_checksum(checksum));
>> +
>
> That doesn't test much -- both functions just call
> svn_md5__empty_string_digest() which returns a static constant.
>
> Perhaps actually construct an empty svn_string_t and checksum it?
Makes sense: r1241033
-Hyrum
--
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com/
Re: svn commit: r1241025 - in /subversion/trunk/subversion:
include/svn_checksum.h libsvn_subr/checksum.c
tests/libsvn_subr/checksum-test.c
Posted by Daniel Shahaf <da...@elego.de>.
hwright@apache.org wrote on Mon, Feb 06, 2012 at 14:42:45 -0000:
> + checksum = svn_checksum_empty_checksum(svn_checksum_md5, pool);
> + SVN_TEST_ASSERT(svn_checksum_is_empty_checksum(checksum));
> +
That doesn't test much -- both functions just call
svn_md5__empty_string_digest() which returns a static constant.
Perhaps actually construct an empty svn_string_t and checksum it?
Re: svn commit: r1241025 - in /subversion/trunk/subversion:
include/svn_checksum.h libsvn_subr/checksum.c
tests/libsvn_subr/checksum-test.c
Posted by Daniel Shahaf <da...@elego.de>.
hwright@apache.org wrote on Mon, Feb 06, 2012 at 14:42:45 -0000:
> + checksum = svn_checksum_empty_checksum(svn_checksum_md5, pool);
> + SVN_TEST_ASSERT(svn_checksum_is_empty_checksum(checksum));
> +
That doesn't test much -- both functions just call
svn_md5__empty_string_digest() which returns a static constant.
Perhaps actually construct an empty svn_string_t and checksum it?