diff --git a/tests/torture.c b/tests/torture.c index 2bcea2cd..43e139ba 100644 --- a/tests/torture.c +++ b/tests/torture.c @@ -689,6 +689,30 @@ void torture_setup_socket_dir(void **state) *state = s; } +void torture_teardown_socket_dir(void **state) +{ + struct torture_state *s = *state; + char *env = getenv("TORTURE_SKIP_CLEANUP"); + int rc; + + if (env != NULL && env[0] == '1') { + fprintf(stderr, ">>> Skipping cleanup of %s\n", s->socket_dir); + } else { + rc = torture_rmdirs(s->socket_dir); + if (rc < 0) { + fprintf(stderr, + "torture_rmdirs(%s) failed: %s", + s->socket_dir, + strerror(errno)); + } + } + + free(s->socket_dir); + free(s->pcap_file); + free(s->srv_pidfile); + free(s); +} + int torture_libssh_verbosity(void){ return verbosity; } diff --git a/tests/torture.h b/tests/torture.h index 380c98bc..bf26ea6d 100644 --- a/tests/torture.h +++ b/tests/torture.h @@ -106,6 +106,8 @@ void _torture_filter_tests(UnitTest *tests, size_t ntests); void torture_setup_socket_dir(void **state); +void torture_teardown_socket_dir(void **state); + /* * This function must be defined in every unit test file. */