Browse Source

Enhancement bugfix + tests update

Yann Weber 7 years ago
parent
commit
90eede17bd
4 changed files with 139 additions and 13 deletions
  1. 1
    1
      src/include/ttail.h
  2. 12
    9
      src/ttail.c
  3. 125
    2
      tests/ttail_argparse_check.c
  4. 1
    1
      tests/ttail_init_check.c

+ 1
- 1
src/include/ttail.h View File

@@ -54,7 +54,7 @@ int ttail_add_logfile(ttail_t*, const char*);
54 54
 /**@brief Set a date prefix regex
55 55
  *@param ttail_t*
56 56
  *@param const char * regex
57
- *@return 0 if no errors
57
+ *@return 0 if no errors 1 if allready set -1 if compilation fails
58 58
  */
59 59
 int ttail_set_prefix(ttail_t*, const char*);
60 60
 

+ 12
- 9
src/ttail.c View File

@@ -32,7 +32,8 @@ ttail_t *ttail_init(int argc, char **argv)
32 32
 			{"date-format", required_argument, 0, 'f'},
33 33
 			{"date-min", required_argument, 0, 'd'},
34 34
 			{"date-max", required_argument, 0, 'm'},
35
-			{"logfile", required_argument, 0, 'l'}
35
+			{"logfile", required_argument, 0, 'l'},
36
+			{0,	0,	0,	0 }
36 37
 		};
37 38
 		opt_i = 0;
38 39
 		c = getopt_long(argc, argv, "p:f:d:l:m:", long_options, &opt_i);
@@ -45,7 +46,7 @@ ttail_t *ttail_init(int argc, char **argv)
45 46
 				res->verbose++;
46 47
 				break;
47 48
 			case 'p':
48
-				if(ttail_set_prefix(res, optarg) < 0)
49
+				if(ttail_set_prefix(res, optarg))
49 50
 				{
50 51
 					goto ttail_init_err;
51 52
 				}
@@ -53,8 +54,9 @@ ttail_t *ttail_init(int argc, char **argv)
53 54
 			case 'f':
54 55
 				if(res->fmt)
55 56
 				{
56
-					fprintf(stderr,"Warning : multiple\
57
-date format given\n");
57
+					fprintf(stderr,"Multiple date format \
58
+given\n");
59
+					goto ttail_init_err;
58 60
 				}
59 61
 				res->fmt = malloc(
60 62
 					sizeof(char)*(strlen(optarg)+1));
@@ -86,12 +88,12 @@ for date format");
86 88
 				dates[c=='d'?0:1] = date;
87 89
 				break;
88 90
 			case '?':
89
-				fprintf(stderr, "Bad argument : %s\n", argv[optind]);
91
+				optind--;
90 92
 				goto init_badarg;
91 93
 				break;
92 94
 			default:
93
-				fprintf(stderr, "Bad argument : 0%o\n", c);
94
-				goto ttail_init_err;
95
+				fprintf(stderr, "Bad argument\n");
96
+				goto init_badarg;
95 97
 				
96 98
 		}
97 99
 	}
@@ -105,6 +107,7 @@ for date format");
105 107
 			fprintf(stderr, argv[optind++]);
106 108
 		}
107 109
 		fprintf(stderr, "\n");
110
+		goto ttail_init_err;
108 111
 	}
109 112
 
110 113
 	for(c=0;c<c;c++)
@@ -211,8 +214,8 @@ int ttail_set_prefix(ttail_t* res, const char* regex)
211 214
 
212 215
 	if(res->flag & TTAIL_FLAG_PREFIX)
213 216
 	{
214
-		fprintf(stderr, "Warning : Regex prefix allready set");
215
-		return 0;
217
+		fprintf(stderr, "Regex prefix allready set");
218
+		return 1;
216 219
 	}
217 220
 	res->flag |= TTAIL_FLAG_PREFIX;
218 221
 	ret = regcomp(&res->date_prefix, regex, 0);

+ 125
- 2
tests/ttail_argparse_check.c View File

@@ -60,6 +60,74 @@ START_TEST (test_argparse_empty_verbose)
60 60
 }
61 61
 END_TEST
62 62
 
63
+/*
64
+ * Bad arguments
65
+ */
66
+
67
+START_TEST (test_argparse_bad1)
68
+{
69
+	ttail_t *t;
70
+	char *args[] = {"foo", "--sdfsdf"};
71
+	t = ttail_init(2, args);
72
+	ck_assert(t == NULL);
73
+}
74
+END_TEST
75
+
76
+START_TEST (test_argparse_bad2)
77
+{
78
+	ttail_t *t;
79
+	char *args[] = {"foo", "-x"};
80
+	t = ttail_init(2, args);
81
+	ck_assert(t == NULL);
82
+}
83
+END_TEST
84
+
85
+START_TEST (test_argparse_bad3)
86
+{
87
+	ttail_t *t;
88
+	char *args[] = {"foo", "-p"};
89
+	t = ttail_init(2, args);
90
+	ck_assert(t == NULL);
91
+}
92
+END_TEST
93
+
94
+START_TEST (test_argparse_bad4)
95
+{
96
+	ttail_t *t;
97
+	char *args[] = {"foo", "-f"};
98
+	t = ttail_init(2, args);
99
+	ck_assert(t == NULL);
100
+}
101
+END_TEST
102
+
103
+START_TEST (test_argparse_bad5)
104
+{
105
+	ttail_t *t;
106
+	char *args[] = {"foo", "-d"};
107
+	t = ttail_init(2, args);
108
+	ck_assert(t == NULL);
109
+}
110
+END_TEST
111
+
112
+START_TEST (test_argparse_bad6)
113
+{
114
+	ttail_t *t;
115
+	char *args[] = {"foo", "-m"};
116
+	t = ttail_init(2, args);
117
+	ck_assert(t == NULL);
118
+}
119
+END_TEST
120
+
121
+START_TEST (test_argparse_bad7)
122
+{
123
+	ttail_t *t;
124
+	char *args[] = {"foo", "-l"};
125
+	t = ttail_init(2, args);
126
+	ck_assert(t == NULL);
127
+}
128
+END_TEST
129
+
130
+
63 131
 /*
64 132
  * file argument parsing
65 133
  */
@@ -206,12 +274,50 @@ START_TEST (test_argparse_prefix_long)
206 274
 }
207 275
 END_TEST
208 276
 
277
+START_TEST (test_argparse_prefix_multiple)
278
+{
279
+	ttail_t *t;
280
+	char *args[] = {"foo", "--re-prefix", "^[^ ]+ ", "-p", "^[ -]+ "};
281
+	t = ttail_init(5, args);
282
+	ck_assert(t == NULL);
283
+}
284
+END_TEST
285
+
286
+START_TEST (test_argparse_fmt_short)
287
+{
288
+	ttail_t *t;
289
+	char *args[] = {"foo", "-f", "%m"};
290
+	t = ttail_init(3, args);
291
+	ck_assert(t != NULL);
292
+}
293
+END_TEST
294
+
295
+START_TEST (test_argparse_fmt_long)
296
+{
297
+	ttail_t *t;
298
+	char *args[] = {"foo", "--date-format", "%m"};
299
+	t = ttail_init(3, args);
300
+	ck_assert(t != NULL);
301
+}
302
+END_TEST
303
+
304
+START_TEST (test_argparse_fmt_multiple)
305
+{
306
+	ttail_t *t;
307
+	char *args[] = {"foo", "-f", "%m", "-f", "%d"};
308
+	t = ttail_init(5, args);
309
+	ck_assert(t == NULL);
310
+}
311
+END_TEST
312
+
209 313
 Suite * ttail_init_suite(void)
210 314
 {
211 315
 	Suite *s;
212 316
 	TCase *tc_argparse_empty;
317
+	TCase *tc_argparse_badarg;
213 318
 	TCase *tc_argparse_files;
214 319
 	TCase *tc_argparse_prefix;
320
+	TCase *tc_argparse_fmt;
215 321
 
216 322
 	s = suite_create("ttail argument parsing checks");
217 323
 
@@ -225,6 +331,15 @@ Suite * ttail_init_suite(void)
225 331
 	tcase_add_test(tc_argparse_empty, test_argparse_empty_fmt);
226 332
 	tcase_add_test(tc_argparse_empty, test_argparse_empty_verbose);
227 333
 
334
+	tc_argparse_badarg = tcase_create("bad arguments parsing");
335
+	tcase_add_test(tc_argparse_badarg, test_argparse_bad1);
336
+	tcase_add_test(tc_argparse_badarg, test_argparse_bad2);
337
+	tcase_add_test(tc_argparse_badarg, test_argparse_bad3);
338
+	tcase_add_test(tc_argparse_badarg, test_argparse_bad4);
339
+	tcase_add_test(tc_argparse_badarg, test_argparse_bad5);
340
+	tcase_add_test(tc_argparse_badarg, test_argparse_bad6);
341
+	tcase_add_test(tc_argparse_badarg, test_argparse_bad7);
342
+
228 343
 	tc_argparse_files = tcase_create("files options parse");
229 344
 	tcase_add_checked_fixture(tc_argparse_files,
230 345
 		setup_fname, teardown_fname);
@@ -233,12 +348,20 @@ Suite * ttail_init_suite(void)
233 348
 	tcase_add_test(tc_argparse_files, test_argparse_file_multiple);
234 349
 
235 350
 	tc_argparse_prefix = tcase_create("re-prefix arguments parsing");
236
-	tcase_add_test(tc_argparse_empty, test_argparse_prefix_short);
237
-	tcase_add_test(tc_argparse_empty, test_argparse_prefix_long);
351
+	tcase_add_test(tc_argparse_prefix, test_argparse_prefix_short);
352
+	tcase_add_test(tc_argparse_prefix, test_argparse_prefix_long);
353
+	tcase_add_test(tc_argparse_prefix, test_argparse_prefix_multiple);
354
+
355
+	tc_argparse_fmt = tcase_create("date format arguments parsing");
356
+	tcase_add_test(tc_argparse_fmt, test_argparse_fmt_short);
357
+	tcase_add_test(tc_argparse_fmt, test_argparse_fmt_long);
358
+	tcase_add_test(tc_argparse_fmt, test_argparse_fmt_multiple);
238 359
 
239 360
 	suite_add_tcase(s, tc_argparse_empty);
361
+	suite_add_tcase(s, tc_argparse_badarg);
240 362
 	suite_add_tcase(s, tc_argparse_files);
241 363
 	suite_add_tcase(s, tc_argparse_prefix);
364
+	suite_add_tcase(s, tc_argparse_fmt);
242 365
 	return s;
243 366
 }
244 367
 

+ 1
- 1
tests/ttail_init_check.c View File

@@ -174,7 +174,7 @@ START_TEST (test_init_again_prefix)
174 174
 	ck_assert_int_eq(ret, 0);
175 175
 	ck_assert((ttail->flag & TTAIL_FLAG_PREFIX) == TTAIL_FLAG_PREFIX);
176 176
 	ret = ttail_set_prefix(ttail, "^[^ + ");
177
-	ck_assert_int_eq(ret, 0);
177
+	ck_assert_int_eq(ret, 1);
178 178
 	ck_assert((ttail->flag & TTAIL_FLAG_PREFIX) == TTAIL_FLAG_PREFIX);
179 179
 }
180 180
 END_TEST

Loading…
Cancel
Save