[Tarantool-patches] [PATCH luajit 1/2] test: disable buffering for the C test engine

Igor Munkin imun at tarantool.org
Tue Nov 28 17:53:16 MSK 2023


Our testing engine for the tests implemented in C introduced in scope of
the commit a0483bd214f2bbc9d7e5fc95ebc0ae13e8d22bcc ("test: introduce
module for C tests") lazily flushes the TAP-formatted report to the
<stdout>. This might lead to a mess in a report e.g. in case when the
particular case forks a child (that inherits its <stdout>) prior to TAP
header is yield to <stdout>. Hence the patch disables buffering for
<stdout> before any part of the TAP-formatted report is printed.

Follows up tarantool/tarantool#7900

Signed-off-by: Igor Munkin <imun at tarantool.org>
---
 test/tarantool-c-tests/test.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/test/tarantool-c-tests/test.c b/test/tarantool-c-tests/test.c
index 7907c12a..0a370cdd 100644
--- a/test/tarantool-c-tests/test.c
+++ b/test/tarantool-c-tests/test.c
@@ -228,6 +228,12 @@ static int test_run(const struct test_unit *test, size_t test_number,
 int _test_run_group(const char *group_name, const struct test_unit tests[],
 		    size_t n_tests, void *test_state)
 {
+	/*
+	 * XXX: Disable buffering for stdout to not mess with the
+	 * output in case there are forking tests in the group.
+	 */
+	setvbuf(stdout, NULL, _IONBF, 0);
+
 	test_start_comment(group_name);
 
 	level++;
-- 
2.39.2



More information about the Tarantool-patches mailing list