From acdabc450ea087815f8d93cf139ac265c638f99f Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Thu, 14 Jan 2021 08:45:37 -0800 Subject: [PATCH] test: fix terminal settings on exit When running one test (via DPDK_TEST) the test program would leave the terminal in raw mode. This was because it was setting up cmdline to do interactive input. The fix is to use cmdline_new() for the interactive case. This also fixes a memory leak because the test runner was never calling cmdline_free(). Fixes: 9b848774a5dc ("test: use env variable to run tests") Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger Tested-by: Harry van Haaren --- app/test/test.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/app/test/test.c b/app/test/test.c index ba0b0309b5..624dd48042 100644 --- a/app/test/test.c +++ b/app/test/test.c @@ -164,29 +164,38 @@ main(int argc, char **argv) #ifdef RTE_LIB_CMDLINE - cl = cmdline_stdin_new(main_ctx, "RTE>>"); - if (cl == NULL) { - ret = -1; - goto out; - } - char *dpdk_test = getenv("DPDK_TEST"); if (dpdk_test && strlen(dpdk_test)) { char buf[1024]; + + cl = cmdline_new(main_ctx, "RTE>>", 0, 1); + if (cl == NULL) { + ret = -1; + goto out; + } + snprintf(buf, sizeof(buf), "%s\n", dpdk_test); if (cmdline_in(cl, buf, strlen(buf)) < 0) { printf("error on cmdline input\n"); + + ret = -1; + } else { + ret = last_test_result; + } + cmdline_free(cl); + goto out; + } else { + /* if no DPDK_TEST env variable, go interactive */ + cl = cmdline_stdin_new(main_ctx, "RTE>>"); + if (cl == NULL) { ret = -1; goto out; } + cmdline_interact(cl); cmdline_stdin_exit(cl); - ret = last_test_result; - goto out; + cmdline_free(cl); } - /* if no DPDK_TEST env variable, go interactive */ - cmdline_interact(cl); - cmdline_stdin_exit(cl); #endif ret = 0; -- 2.20.1