dovecot-2.2: lib: test-istream-crlf - fix expected output string...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Nov 4 09:40:52 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/5717e416f31f
changeset: 19342:5717e416f31f
user: Phil Carmody <phil at dovecot.fi>
date: Wed Nov 04 11:39:58 2015 +0200
description:
lib: test-istream-crlf - fix expected output strings, add more coverage
Fix an out-by-one which was missing trailing carriage returns in _lf mode.
Debug: input = [19]:``...........N.N....R''
Debug: output= [19]:``...........N.N....R''
Debug: data = [18]:``...........N.N....''
test-istream-crlf.c:78: Assert(#20) failed: size == str_len(output)
Add some randomised tests to get better coverage of all possibilities.
Signed-off-by: Phil Carmody <phil at dovecot.fi>
diffstat:
src/lib/test-istream-crlf.c | 27 ++++++++++++++++++++++++---
1 files changed, 24 insertions(+), 3 deletions(-)
diffs (50 lines):
diff -r 1e7fe403dd50 -r 5717e416f31f src/lib/test-istream-crlf.c
--- a/src/lib/test-istream-crlf.c Tue Oct 27 21:54:26 2015 -0600
+++ b/src/lib/test-istream-crlf.c Wed Nov 04 11:39:58 2015 +0200
@@ -24,7 +24,7 @@
crlf_istream = i_stream_create_lf(istream);
for (i = 0; i < input_len; i++) {
if (input[i] == '\r' &&
- (i == input_len || input[i+1] == '\n'))
+ (i == input_len-1 || input[i+1] == '\n'))
;
else
str_append_c(output, input[i]);
@@ -66,9 +66,9 @@
test_assert(pos + (unsigned int)ret1 == size);
pos += ret1;
}
- test_assert(memcmp(data, str_data(output), size) == 0);
+ test_assert_idx(memcmp(data, str_data(output), size) == 0, j*10000+i);
}
- test_assert(size == str_len(output));
+ test_assert_idx(size == str_len(output), j*10000+i);
i_stream_unref(&crlf_istream);
i_stream_unref(&istream);
}
@@ -89,4 +89,25 @@
for (i = 0; i < N_ELEMENTS(input); i++)
test_istream_crlf_input(input[i]);
test_end();
+
+#define ISTREAM_CRLF_TEST_REPS 1000
+ test_begin("istream crlf(random)");
+ for (i = 0; i < ISTREAM_CRLF_TEST_REPS; i++) T_BEGIN {
+ char buf[100];
+ size_t len = 0;
+ while (len < sizeof(buf) - 1) {
+ switch(rand()%16) {
+ case 0: goto outahere;
+ case 1: buf[len] = '\r'; break;
+ case 2: buf[len] = '\n'; break;
+ default: buf[len]= '.'; break;
+ }
+ len++;
+ }
+ outahere:
+ buf[len] = '\0';
+ if (len > 0)
+ test_istream_crlf_input(buf);
+ } T_END;
+ test_end();
}
More information about the dovecot-cvs
mailing list