1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
5 #include "alloc-util.h"
6 #include "pretty-print.h"
7 #include "string-util.h"
8 #include "terminal-util.h"
12 TEST(strip_tab_ansi
) {
13 _cleanup_free_
char *urlified
= NULL
, *q
= NULL
, *qq
= NULL
;
16 assert_se(p
= strdup("\tFoobar\tbar\twaldo\t"));
17 assert_se(strip_tab_ansi(&p
, NULL
, NULL
));
18 fprintf(stdout
, "<%s>\n", p
);
19 assert_se(streq(p
, " Foobar bar waldo "));
22 assert_se(p
= strdup(ANSI_HIGHLIGHT
"Hello" ANSI_NORMAL ANSI_HIGHLIGHT_RED
" world!" ANSI_NORMAL
));
23 assert_se(strip_tab_ansi(&p
, NULL
, NULL
));
24 fprintf(stdout
, "<%s>\n", p
);
25 assert_se(streq(p
, "Hello world!"));
28 assert_se(p
= strdup("\x1B[\x1B[\t\x1B[" ANSI_HIGHLIGHT
"\x1B[" "Hello" ANSI_NORMAL ANSI_HIGHLIGHT_RED
" world!" ANSI_NORMAL
));
29 assert_se(strip_tab_ansi(&p
, NULL
, NULL
));
30 assert_se(streq(p
, "\x1B[\x1B[ \x1B[\x1B[Hello world!"));
33 assert_se(p
= strdup("\x1B[waldo"));
34 assert_se(strip_tab_ansi(&p
, NULL
, NULL
));
35 assert_se(streq(p
, "\x1B[waldo"));
38 assert_se(p
= strdup("\r\rwaldo"));
39 assert_se(strip_tab_ansi(&p
, NULL
, NULL
));
40 assert_se(streq(p
, "\r\rwaldo"));
43 assert_se(p
= strdup("waldo\r\r"));
44 assert_se(strip_tab_ansi(&p
, NULL
, NULL
));
45 assert_se(streq(p
, "waldo"));
48 assert_se(p
= strdup("waldo\r\r\n\r\n"));
49 assert_se(strip_tab_ansi(&p
, NULL
, NULL
));
50 assert_se(streq(p
, "waldo\n\n"));
53 assert_se(terminal_urlify_path("/etc/fstab", "i am a fabulous link", &urlified
) >= 0);
54 assert_se(p
= strjoin("something ", urlified
, " something-else"));
55 assert_se(q
= strdup(p
));
57 assert_se(strip_tab_ansi(&p
, NULL
, NULL
));
59 assert_se(streq(p
, "something i am a fabulous link something-else"));
62 /* Truncate the formatted string in the middle of an ANSI sequence (in which case we shouldn't touch the
63 * incomplete sequence) */
64 z
= strstr(q
, "fstab");
67 assert_se(qq
= strdup(q
));
68 assert_se(strip_tab_ansi(&q
, NULL
, NULL
));
69 assert_se(streq(q
, qq
));
73 DEFINE_TEST_MAIN(LOG_INFO
);