You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2011/02/02 13:37:15 UTC

svn commit: r1066445 - /subversion/trunk/subversion/tests/libsvn_subr/stream-test.c

Author: stsp
Date: Wed Feb  2 12:37:14 2011
New Revision: 1066445

URL: http://svn.apache.org/viewvc?rev=1066445&view=rev
Log:
Final fix for issue #3616 "Mark/seek in svn_subst_stream_translated() -
                           needs to restore translation state"

* subversion/tests/libsvn_subr/stream-test.c
  (test_stream_seek_translated): Fix test expectations.
   This test was making incorrect assumptions. 
   The correct keyword expansion for the test string is:
     "One$MyKeyword: my keyword was expanded $Two"
   This test was expecting something like the following instead:
     "Onemy keyword was expandedTwo"
   Also, this test was trying to use a mark set on the translated stream
   to seek within the underlying stream. But using marks set on one stream
   instance with another stream instance isn't valid.
  (test_funcs): Remove XFail marker for test_stream_seek_translated.

Modified:
    subversion/trunk/subversion/tests/libsvn_subr/stream-test.c

Modified: subversion/trunk/subversion/tests/libsvn_subr/stream-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/stream-test.c?rev=1066445&r1=1066444&r2=1066445&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/stream-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/stream-test.c Wed Feb  2 12:37:14 2011
@@ -342,71 +342,72 @@ test_stream_seek_translated(apr_pool_t *
 {
   svn_stream_t *stream, *translated_stream;
   svn_stringbuf_t *stringbuf;
-  char buf[23];
+  char buf[44]; /* strlen("One$MyKeyword: my keyword was expanded $Two") + \0 */
   apr_size_t len;
-  svn_stream_mark_t *mark, *mark2;
+  svn_stream_mark_t *mark;
   apr_hash_t *keywords;
   svn_string_t *keyword_val;
 
   keywords = apr_hash_make(pool);
-  keyword_val = svn_string_create("my key word was expanded", pool);
+  keyword_val = svn_string_create("my keyword was expanded", pool);
   apr_hash_set(keywords, "MyKeyword", APR_HASH_KEY_STRING, keyword_val);
   stringbuf = svn_stringbuf_create("One$MyKeyword$Two", pool);
   stream = svn_stream_from_stringbuf(stringbuf, pool);
   translated_stream = svn_subst_stream_translated(stream, APR_EOL_STR,
                                                   FALSE, keywords, TRUE, pool);
-  len = 3;
-  SVN_ERR(svn_stream_read(translated_stream, buf, &len));
-  SVN_TEST_ASSERT(len == 3);
-  buf[3] = '\0';
-  SVN_TEST_STRING_ASSERT(buf, "One");
-
   /* Seek from outside of keyword to inside of keyword. */
+  len = 25;
+  SVN_ERR(svn_stream_read(translated_stream, buf, &len));
+  SVN_TEST_ASSERT(len == 25);
+  buf[25] = '\0';
+  SVN_TEST_STRING_ASSERT(buf, "One$MyKeyword: my keyword");
   SVN_ERR(svn_stream_mark(translated_stream, &mark, pool));
-  len = 3;
+  SVN_ERR(svn_stream_reset(translated_stream));
+  SVN_ERR(svn_stream_seek(translated_stream, mark));
+  len = 4;
   SVN_ERR(svn_stream_read(translated_stream, buf, &len));
-  SVN_TEST_ASSERT(len == 3);
-  buf[3] = '\0';
-  /* ### The test currently fails here because the keyword isn't
-   * ### expanded correctly. buf contains "$My\0" */
-  SVN_TEST_STRING_ASSERT(buf, "my ");
-  SVN_ERR(svn_stream_seek(stream, mark));
-  len = 3;
-  SVN_ERR(svn_stream_read(stream, buf, &len));
-  SVN_TEST_ASSERT(len == 3);
-  buf[3] = '\0';
-  SVN_TEST_STRING_ASSERT(buf, "my ");
+  SVN_TEST_ASSERT(len == 4);
+  buf[4] = '\0';
+  SVN_TEST_STRING_ASSERT(buf, " was");
 
   /* Seek from inside of keyword to inside of keyword. */
   SVN_ERR(svn_stream_mark(translated_stream, &mark, pool));
-  len = 3;
+  len = 9;
+  SVN_ERR(svn_stream_read(translated_stream, buf, &len));
+  SVN_TEST_ASSERT(len == 9);
+  buf[9] = '\0';
+  SVN_TEST_STRING_ASSERT(buf, " expanded");
+  SVN_ERR(svn_stream_seek(translated_stream, mark));
+  len = 9;
   SVN_ERR(svn_stream_read(translated_stream, buf, &len));
-  SVN_TEST_ASSERT(len == 3);
-  buf[3] = '\0';
-  SVN_TEST_STRING_ASSERT(buf, "key");
-  SVN_ERR(svn_stream_seek(stream, mark));
-  len = 3;
-  SVN_ERR(svn_stream_read(stream, buf, &len));
-  SVN_TEST_ASSERT(len == 3);
-  buf[3] = '\0';
-  SVN_TEST_STRING_ASSERT(buf, "my ");
+  SVN_TEST_ASSERT(len == 9);
+  buf[9] = '\0';
+  SVN_TEST_STRING_ASSERT(buf, " expanded");
 
   /* Seek from inside of keyword to outside of keyword. */
-  len = 22;
+  SVN_ERR(svn_stream_mark(translated_stream, &mark, pool));
+  len = 4;
+  SVN_ERR(svn_stream_read(translated_stream, buf, &len));
+  SVN_TEST_ASSERT(len == 4);
+  buf[4] = '\0';
+  SVN_TEST_STRING_ASSERT(buf, " $Tw");
+  SVN_ERR(svn_stream_seek(translated_stream, mark));
+  len = 4;
+  SVN_ERR(svn_stream_read(translated_stream, buf, &len));
+  SVN_TEST_ASSERT(len == 4);
+  buf[4] = '\0';
+  SVN_TEST_STRING_ASSERT(buf, " $Tw");
+
+  /* Seek from outside of keyword to outside of keyword. */
+  SVN_ERR(svn_stream_mark(translated_stream, &mark, pool));
+  len = 1;
   SVN_ERR(svn_stream_read(translated_stream, buf, &len));
-  SVN_TEST_ASSERT(len == 22);
-  buf[22] = '\0';
-  SVN_TEST_STRING_ASSERT(buf, "keyword was expandedTw");
-  SVN_ERR(svn_stream_mark(translated_stream, &mark2, pool));
-  SVN_ERR(svn_stream_seek(stream, mark));
-  len = 3;
-  SVN_ERR(svn_stream_read(stream, buf, &len));
-  SVN_TEST_ASSERT(len == 3);
-  buf[3] = '\0';
-  SVN_TEST_STRING_ASSERT(buf, "my ");
-  SVN_ERR(svn_stream_seek(stream, mark2));
+  SVN_TEST_ASSERT(len == 1);
+  buf[1] = '\0';
+  SVN_TEST_STRING_ASSERT(buf, "o");
+  SVN_ERR(svn_stream_seek(translated_stream, mark));
   len = 1;
-  SVN_ERR(svn_stream_read(stream, buf, &len));
+  SVN_ERR(svn_stream_read(translated_stream, buf, &len));
   SVN_TEST_ASSERT(len == 1);
   buf[1] = '\0';
   SVN_TEST_STRING_ASSERT(buf, "o");
@@ -433,7 +434,7 @@ struct svn_test_descriptor_t test_funcs[
                    "test stream seeking for files"),
     SVN_TEST_PASS2(test_stream_seek_stringbuf,
                    "test stream seeking for stringbufs"),
-    SVN_TEST_XFAIL2(test_stream_seek_translated,
-                    "test stream seeking for translated streams"),
+    SVN_TEST_PASS2(test_stream_seek_translated,
+                   "test stream seeking for translated streams"),
     SVN_TEST_NULL
   };