14 QTextStream out(stderr);
15 out <<
"Parse QTest output on STDIN and make it shiny" << endl
17 <<
"Usage: formatoutput [options]" << endl
19 <<
"\t--skip-pass <yes|no> \tSkip PASS lines [yes]" << endl
20 <<
"\t--skip-debug <yes|no> \tSkip QDEBUG lines [yes]" << endl
21 <<
"\t--skip-warn <yes|no> \tSkip QWARN lines [no]" << endl
22 <<
"\t--skip-config <yes|no> \tSkip Config: lines [yes]" << endl
24 <<
"\t--help \tThis help text" << endl
28bool isTrue(
char *argument)
30 if (!strcasecmp(argument,
"yes") ||
31 !strcasecmp(argument,
"true") ||
32 !strcmp(argument,
"1"))
37int main(
int argc,
char **argv)
39 QTextStream in(stdin);
40 QTextStream out(stdout);
43 static struct option long_options[] = {
44 {
"skip-pass", required_argument, 0, 0 },
45 {
"skip-debug", required_argument, 0, 0 },
46 {
"skip-warn", required_argument, 0, 0 },
47 {
"skip-config", required_argument, 0, 0 },
48 {
"help", no_argument, 0, 0 }
52 bool skip_pass =
true;
53 bool skip_debug =
true;
54 bool skip_warn =
false;
55 bool skip_config =
true;
58 while ((c = getopt_long_only(argc, argv,
"",
59 long_options, &option_index)) != EOF) {
62 if (!strcmp(long_options[option_index].name,
"help")) {
65 }
else if (!strcmp(long_options[option_index].name,
"skip-pass")) {
66 options.skip_pass = isTrue(optarg);
67 }
else if (!strcmp(long_options[option_index].name,
"skip-debug")) {
68 options.skip_debug = isTrue(optarg);
69 }
else if (!strcmp(long_options[option_index].name,
"skip-warn")) {
70 options.skip_warn = isTrue(optarg);
71 }
else if (!strcmp(long_options[option_index].name,
"skip-config")) {
72 options.skip_config = isTrue(optarg);
82 QString line = in.readLine();
84 if (line.startsWith(
"PASS") && options.skip_pass)
continue;
85 if (line.startsWith(
"QDEBUG") && options.skip_debug)
continue;
86 if (line.startsWith(
"QWARN") && options.skip_warn)
continue;
87 if (line.startsWith(
"Config:") && options.skip_config)
continue;
89 line.replace(QRegExp(
"^(\\*{3}.*\\*{3})"),
"\033[0;36m\\1\033[0;0m");
90 line.replace(QRegExp(
"^(QDEBUG .*)"),
"\033[0;90m\\1\033[0;0m");
91 line.replace(QRegExp(
"^(QWARN .*)"),
"\033[0;34m\\1\033[0;0m");
92 line.replace(QRegExp(
"^FAIL!"),
"\033[0;31mFAIL!\033[0;0m");
93 line.replace(QRegExp(
"^PASS"),
"\033[0;32mPASS\033[0;0m");
94 line.replace(QRegExp(
"^Totals: (\\d{1,} passed), (\\d{1,} failed), (\\d{1,} skipped)"),
95 "Totals: \033[0;32m\\1\033[0;0m, \033[0;31m\\2\033[0;0m, \033[0;33m\\3\033[0;0m");