Skip to content

Commit

Permalink
test: fix terminal settings on exit
Browse files Browse the repository at this point in the history
[ upstream commit acdabc4 ]

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: 9b84877 ("test: use env variable to run tests")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Tested-by: Harry van Haaren <harry.van.haaren@intel.com>
  • Loading branch information
shemminger authored and cpaelzer committed Feb 3, 2021
1 parent 4f99d06 commit b54feaf
Showing 1 changed file with 20 additions and 11 deletions.
31 changes: 20 additions & 11 deletions app/test/test.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,29 +164,38 @@ main(int argc, char **argv)


#ifdef RTE_LIBRTE_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;

Expand Down

0 comments on commit b54feaf

Please sign in to comment.