Yeah, you're right.  Ultimately that's because svn_checksum_size takes
a checksum rather than a checksum kind.

What should we do then?

- revv svn_checksum_size to take an svn_checksum_kind_t?

- svn.core.APR_MD5_DIGESTSIZE?  svn.core doesn't export that symbol.

- len(hashlib.md5().hexdigest()) ?

- 32 ?

- explicitly test the digest of a known string (even the C unit tests
  don't do that)?

In the meantime, I applied Shivani's patch in r1420334.

Peter Samuelson wrote on Tue, Dec 11, 2012 at 12:49:27 -0600:
> 
> > > +LENGTH = 
> > > svn.core.svn_checksum_size(svn.core.svn_checksum_create(svn.core.svn_checksum_md5))
> 
> > > +        self.assertEqual(len(check_val)%LENGTH,0,"Length of digest does 
> > > not match kind")
> 
> Is there a better way to get the expected length?
> svn.core.svn_checksum_create(svn.core.svn_checksum_md5) is called twice
> here.  If we had an off-by-one bug in the length of the object returned
> from svn_checksum_create, this test wouldn't catch it.
> 
> I know others have said not to hardcode a 32 here.  But you're already
> hardcoding MD5.  I'd say if there's no other convenient alternative,
> hardcoding the knowledge that "md5 is 128 bits" (32 hex digits) seems
> better than testing that two objects created by the same constructor
> are the same length.
> 
> I mean, to extend this test to other checksum kinds would require
> something of a rewrite anyway.

Reply via email to