[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r33612 - in trunk: . subversion/tests/libsvn_delta

From: Daniel Shahaf <d.s_at_daniel.shahaf.name>
Date: Mon, 13 Oct 2008 15:42:30 +0200 (Jerusalem Standard Time)

gstein_at_tigris.org wrote on Mon, 13 Oct 2008 at 04:51 -0700:
> Author: gstein
> Date: Mon Oct 13 04:51:59 2008
> New Revision: 33612
>
> Log:
> Add a new test, based on an email from Joe Swatosh <joe.swatosh_at_gmail.com>
>
> In the Ruby bindings, a digest was coming out wrong, so we now have a test
> to ensure that a txdelta stream is producing the target digest properly.
>
> TODO: test some invariants of the windows that are generated.
>
> * build.conf:
> (window-test): new test target
>
> * subversion/tests/libsvn_delta:
> (svn:ignore): ignore the new window-test executable
>

(I prefer to see these with uppercase first letter.)

> * subversion/tests/libsvn_delta/window-test.c: new file
>
> Added:
> trunk/subversion/tests/libsvn_delta/window-test.c
> Modified:
> trunk/build.conf
> trunk/subversion/tests/libsvn_delta/ (props changed)
>
> Added: trunk/subversion/tests/libsvn_delta/window-test.c
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/tests/libsvn_delta/window-test.c?pathrev=33612
> ==============================================================================
> --- /dev/null 00:00:00 1970 (empty, because file is newly added)
> +++ trunk/subversion/tests/libsvn_delta/window-test.c Mon Oct 13 04:51:59 2008 (r33612)
> @@ -0,0 +1,103 @@
> +static svn_error_t *
> +stream_window_test(const char **msg,
> + svn_boolean_t msg_only,
> + svn_test_opts_t *opts,
> + apr_pool_t *pool)
> +{
> + /* Note: put these in data segment, not the stack */

Why?

> + static char source[109001];
> + static char target[109001];
> + int i;
> + char *p = &source[9];
> + svn_checksum_t *expected;
> + svn_checksum_t *actual;
> + svn_string_t source_str;
> + svn_string_t target_str;
> + svn_stream_t *source_stream;
> + svn_stream_t *target_stream;
> + svn_txdelta_stream_t *txstream;
> +
> + *msg = "txdelta stream and windows test";
> + if (msg_only)
> + return SVN_NO_ERROR;
> +
> + memcpy(source, "a\nb\nc\nd\ne", 9);
> + for (i = 100; i--; )
> + *p++ = '\n';
> + for (i = 1000; i--; p += 109)
> + memcpy(p, source, 109);
> + source[109000] = '\0';
> +
> + memcpy(target, source, 109001);
> + for (i = 1000; i--; )
> + target[i*109 + 4] = 'X';
> +
> + svn_checksum(&expected, svn_checksum_md5, target, 109000, pool);

Needs SVN_ERR().

> + /* f6fd44565e14c6e44b35292719deb77e */
> + printf("expected: %s\n", svn_checksum_to_cstring(expected, pool));
> +
> + source_str.data = source;
> + source_str.len = 109000;
> + source_stream = svn_stream_from_string(&source_str, pool);
> +
> + target_str.data = target;
> + target_str.len = 109000;
> + target_stream = svn_stream_from_string(&target_str, pool);
> +
> + svn_txdelta(&txstream, source_stream, target_stream, pool);
> +
> + while (1)
> + {
> + svn_txdelta_window_t *window;
> +
> + SVN_ERR(svn_txdelta_next_window(&window, txstream, pool));
> + if (window == NULL)
> + break;
> +
> + /* ### examine the window */
> + }
> +
> + actual = svn_checksum_create(svn_checksum_md5, pool);
> + actual->digest = svn_txdelta_md5_digest(txstream);
> + printf(" actual: %s\n", svn_checksum_to_cstring(actual, pool));
> +
> + return SVN_NO_ERROR;

Where is the strcmp() that compares the actual and expected checksums?

> +}
> +
> +
> +
> +/* The test table. */
> +
> +struct svn_test_descriptor_t test_funcs[] =
> + {
> + SVN_TEST_NULL,
> + SVN_TEST_PASS(stream_window_test),
> + SVN_TEST_NULL
> + };

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-10-13 15:42:49 CEST

This is an archived mail posted to the Subversion Dev mailing list.