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?