@@ -18,8 +18,7 @@ static void test_createReader_missingFile(void **state) {
18
18
assert_int_equal (err , RDB_ERR_FAILED_OPEN_RDB_FILE );
19
19
20
20
/* verify returned error string */
21
- assert_string_equal (RDB_getErrorMessage (parser ),
22
- "Failed to open RDB file `./test/dumps/non_exist_file.rdb`: No such file or directory\n" );
21
+ assert_true (strstr (RDB_getErrorMessage (parser ), "Failed to open RDB file" ));
23
22
RDB_deleteParser (parser );
24
23
}
25
24
@@ -110,6 +109,49 @@ static void test_examples(void **state) {
110
109
runSystemCmd ("make example > /dev/null " );
111
110
}
112
111
112
+ RdbRes handle_start_rdb_report_long_errors (RdbParser * p , void * userData , int rdbVersion ) {
113
+ UNUSED (userData , rdbVersion );
114
+ for (int i = 2 ; i < 1000 ; i ++ )
115
+ RDB_reportError (p , (RdbRes ) i , "Error Report number:%d" , i );
116
+ return 1001 ; /* This value will be eventually returned as the error code */
117
+ }
118
+
119
+ static void test_report_long_error (void * * state ) {
120
+ RdbStatus status ;
121
+ UNUSED (state );
122
+ void * user_data = NULL ;
123
+
124
+ RdbHandlersRawCallbacks cb = { .handleStartRdb = handle_start_rdb_report_long_errors };
125
+ RdbParser * parser = RDB_createParserRdb (NULL );
126
+ RDB_setLogger (parser , dummyLogger );
127
+ assert_non_null (RDBX_createReaderFile (parser , "./test/dumps/quicklist2_v11.rdb" ));
128
+ assert_non_null (RDB_createHandlersRaw (parser , & cb , user_data , NULL ));
129
+
130
+
131
+ while ((status = RDB_parse (parser )) == RDB_STATUS_WAIT_MORE_DATA );
132
+ assert_int_equal (status , RDB_STATUS_ERROR );
133
+ const char * returned = RDB_getErrorMessage (parser );
134
+ const char * expected =
135
+ "[errcode=2] [elementRdbHeader::State=0] Error Report number:2\n"
136
+ "[errcode=3] [elementRdbHeader::State=0] Error Report number:3\n[errcode=4] [elementRdbHeader::State=0] Error Report number:4\n"
137
+ "[errcode=5] [elementRdbHeader::State=0] Error Report number:5\n[errcode=6] [elementRdbHeader::State=0] Error Report number:6\n"
138
+ "[errcode=7] [elementRdbHeader::State=0] Error Report number:7\n[errcode=8] [elementRdbHeader::State=0] Error Report number:8\n"
139
+ "[errcode=9] [elementRdbHeader::State=0] Error Report number:9\n[errcode=10] [elementRdbHeader::State=0] Error Report number:10\n"
140
+ "[errcode=11] [elementRdbHeader::State=0] Error Report number:11\n[errcode=12] [elementRdbHeader::State=0] Error Report number:12\n"
141
+ "[errcode=13] [elementRdbHeader::State=0] Error Report number:13\n[errcode=14] [elementRdbHeader::State=0] Error Report number:14\n"
142
+ "[errcode=15] [elementRdbHeader::State=0] Error Report number:15\n[errcode=16] [elementRdbHeader::State=0] Error Report number:16\n"
143
+ "[errcode=17] [elementRdbHeader::State=0] Error Report number:17\n[errcode=18] [elementRdbHeader::State=0] Error Report number:18\n"
144
+ "[errcode=19] [elementRdbHeader::State=0] Error Report number:19\n[errcode=20] [elementRdbHeader::State=0] Error Report number:20\n"
145
+ "[errcode=21] [elementRdbHeader::State=0] Error Report number:21\n[errcode=22] [elementRdbHeader::State=0] Error Report number:22\n"
146
+ "[errcode=23] [elementRdbHeader::State=0] Error Report number:23\n[errcode=24] [elementRdbHeader::State=0] Error Report number:24\n"
147
+ "[errcode=25] [elementRdbHeader::State=0] Error Report number:25\n[errcode=26] [elementRdbHeader::State=0] Error Report number:26\n"
148
+ "[errcode=27] [el\n... last recorded error message: ...\n[errcode=999] [elementRdbHeader::State=0] Error Report number:999\n" ;
149
+
150
+ assert_string_equal (returned , expected );
151
+ assert_int_equal (RDB_getErrorCode (parser ), 1001 );
152
+ RDB_deleteParser (parser );
153
+ }
154
+
113
155
static void printResPicture (int result ) {
114
156
if (result )
115
157
printf (" x_x\n"
@@ -153,6 +195,7 @@ int group_misc(void) {
153
195
cmocka_unit_test (test_empty_rdb ),
154
196
cmocka_unit_test (test_mixed_levels_registration ),
155
197
cmocka_unit_test (test_checksum ),
198
+ cmocka_unit_test (test_report_long_error ),
156
199
};
157
200
return cmocka_run_group_tests (tests , NULL , NULL );
158
201
}
0 commit comments