You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2015/12/10 12:38:31 UTC
svn commit: r1719066 -
/subversion/trunk/subversion/tests/libsvn_subr/io-test.c
Author: ivan
Date: Thu Dec 10 11:38:31 2015
New Revision: 1719066
URL: http://svn.apache.org/viewvc?rev=1719066&view=rev
Log:
Add unit test for svn_io_read_length_line() function.
* subversion/tests/libsvn_subr/io-test.c
(test_read_length_line): New.
(test_funcs): Add test_read_length_line() to list.
Modified:
subversion/trunk/subversion/tests/libsvn_subr/io-test.c
Modified: subversion/trunk/subversion/tests/libsvn_subr/io-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/io-test.c?rev=1719066&r1=1719065&r2=1719066&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/io-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/io-test.c Thu Dec 10 11:38:31 2015
@@ -535,6 +535,87 @@ read_length_line_shouldnt_loop(apr_pool_
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_read_length_line(apr_pool_t *pool)
+{
+ const char *tmp_dir;
+ const char *tmp_file;
+ char buffer[80];
+ apr_size_t buffer_limit;
+ apr_file_t *f;
+ svn_error_t *err;
+
+ SVN_ERR(svn_dirent_get_absolute(&tmp_dir, "test_read_length_line", pool));
+ SVN_ERR(svn_io_remove_dir2(tmp_dir, TRUE, NULL, NULL, pool));
+ SVN_ERR(svn_io_make_dir_recursively(tmp_dir, pool));
+ svn_test_add_dir_cleanup(tmp_dir);
+
+ /* Test 1: Read empty file. */
+ tmp_file = svn_dirent_join(tmp_dir, "empty", pool);
+ SVN_ERR(svn_io_file_create(tmp_file, "", pool));
+
+ SVN_ERR(svn_io_file_open(&f, tmp_file, APR_READ | APR_BUFFERED,
+ APR_OS_DEFAULT, pool));
+ buffer_limit = sizeof(buffer);
+ err = svn_io_read_length_line(f, buffer, &buffer_limit, pool);
+ SVN_TEST_ASSERT_ERROR(err, APR_EOF);
+
+ SVN_ERR(svn_io_file_close(f, pool));
+
+ /* Test 2: Read empty line.*/
+ tmp_file = svn_dirent_join(tmp_dir, "empty-line", pool);
+ SVN_ERR(svn_io_file_create(tmp_file, "\n", pool));
+
+ SVN_ERR(svn_io_file_open(&f, tmp_file, APR_READ | APR_BUFFERED,
+ APR_OS_DEFAULT, pool));
+ buffer_limit = sizeof(buffer);
+ err = svn_io_read_length_line(f, buffer, &buffer_limit, pool);
+ SVN_ERR(err);
+ SVN_TEST_ASSERT(buffer_limit == 0);
+ SVN_TEST_STRING_ASSERT(buffer, "");
+ SVN_ERR(svn_io_file_close(f, pool));
+
+ /* Test 3: Read two lines.*/
+ tmp_file = svn_dirent_join(tmp_dir, "lines", pool);
+ SVN_ERR(svn_io_file_create(tmp_file, "first\nsecond\n", pool));
+
+ SVN_ERR(svn_io_file_open(&f, tmp_file, APR_READ | APR_BUFFERED,
+ APR_OS_DEFAULT, pool));
+
+ buffer_limit = sizeof(buffer);
+ err = svn_io_read_length_line(f, buffer, &buffer_limit, pool);
+ SVN_ERR(err);
+ SVN_TEST_ASSERT(buffer_limit == 5);
+ SVN_TEST_STRING_ASSERT(buffer, "first");
+
+ buffer_limit = sizeof(buffer);
+ err = svn_io_read_length_line(f, buffer, &buffer_limit, pool);
+ SVN_ERR(err);
+ SVN_TEST_ASSERT(buffer_limit == 6);
+ SVN_TEST_STRING_ASSERT(buffer, "second");
+
+ buffer_limit = sizeof(buffer);
+ err = svn_io_read_length_line(f, buffer, &buffer_limit, pool);
+ SVN_TEST_ASSERT_ERROR(err, APR_EOF);
+
+ SVN_ERR(svn_io_file_close(f, pool));
+
+ /* Test 4: Content without end-of-line.*/
+ tmp_file = svn_dirent_join(tmp_dir, "no-eol", pool);
+ SVN_ERR(svn_io_file_create(tmp_file, "text", pool));
+
+ SVN_ERR(svn_io_file_open(&f, tmp_file, APR_READ | APR_BUFFERED,
+ APR_OS_DEFAULT, pool));
+
+ buffer_limit = sizeof(buffer);
+ err = svn_io_read_length_line(f, buffer, &buffer_limit, pool);
+ SVN_TEST_ASSERT_ERROR(err, APR_EOF);
+
+ SVN_ERR(svn_io_file_close(f, pool));
+
+ return SVN_NO_ERROR;
+}
+
/* Move the read pointer in FILE to absolute position OFFSET and align
* the read buffer to multiples of BLOCK_SIZE. BUFFERED is set only if
* FILE actually uses a read buffer. Use POOL for allocations.
@@ -948,6 +1029,8 @@ static struct svn_test_descriptor_t test
"test svn_io_file_size_get"),
SVN_TEST_PASS2(test_file_rename2,
"test svn_io_file_rename2"),
+ SVN_TEST_PASS2(test_read_length_line,
+ "test svn_io_read_length_line()"),
SVN_TEST_NULL
};