[LTP] [PATCH v2 2/3] lib: Add test for tst_tmpdir
Petr Vorel
pvorel@suse.cz
Mon Mar 25 12:50:33 CET 2024
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
lib/newlib_tests/runtest.sh | 2 +-
lib/newlib_tests/tst_tmpdir.c | 49 +++++++++++++++++++++++++++++++++++
2 files changed, 50 insertions(+), 1 deletion(-)
create mode 100644 lib/newlib_tests/tst_tmpdir.c
diff --git a/lib/newlib_tests/runtest.sh b/lib/newlib_tests/runtest.sh
index 8f2a497b1..7bdc870bc 100755
--- a/lib/newlib_tests/runtest.sh
+++ b/lib/newlib_tests/runtest.sh
@@ -5,7 +5,7 @@ LTP_C_API_TESTS="${LTP_C_API_TESTS:-test05 test07 test09 test15 test_runtime01
tst_needs_cmds01 tst_needs_cmds02 tst_needs_cmds03 tst_needs_cmds06
tst_needs_cmds07 tst_bool_expr test_exec test_timer tst_res_hexd tst_strstatus
tst_fuzzy_sync03 test_zero_hugepage.sh test_kconfig.sh test_kconfig03
-test_children_cleanup.sh}"
+test_children_cleanup.sh tst_tmpdir}"
LTP_SHELL_API_TESTS="${LTP_SHELL_API_TESTS:-shell/tst_check_driver.sh
shell/tst_check_kconfig0[1-5].sh shell/tst_errexit.sh shell/net/*.sh}"
diff --git a/lib/newlib_tests/tst_tmpdir.c b/lib/newlib_tests/tst_tmpdir.c
new file mode 100644
index 000000000..c34430fa6
--- /dev/null
+++ b/lib/newlib_tests/tst_tmpdir.c
@@ -0,0 +1,49 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2024 Petr Vorel <pvorel@suse.cz>
+ */
+
+/*
+ * Tests TMPDIR variable cleanup.
+ */
+
+#include <stdlib.h>
+#include "tst_defaults.h"
+#include "tst_test.h"
+
+static struct tcase {
+ const char *orig;
+ const char *fixed;
+ const char *desc;
+} tcases[] = {
+ {NULL, TEMPDIR, "default value"},
+ {"/tmp/", "/tmp", "removing trailing slash"},
+ {"/var//tmp", "/var/tmp", "removing duplicate slashes"},
+ {"//var///tmp///", "/var/tmp", "removing too many slashes"},
+};
+
+static void do_test(unsigned int nr)
+{
+ struct tcase *tc = &tcases[nr];
+ const char *env_tmpdir;
+
+ tst_res(TINFO, "Testing TMPDIR='%s' (%s)", tc->orig, tc->desc);
+
+ if (tc->orig)
+ SAFE_SETENV("TMPDIR", tc->orig, 1);
+
+ env_tmpdir = tst_get_tmpdir_root();
+
+ if (!env_tmpdir)
+ tst_brk(TBROK, "Failed to get TMPDIR");
+
+ if (!strcmp(tc->fixed, env_tmpdir))
+ tst_res(TPASS, "TMPDIR '%s' is '%s'", env_tmpdir, tc->fixed);
+ else
+ tst_res(TFAIL, "TMPDIR '%s' should be '%s'", env_tmpdir, tc->fixed);
+}
+
+static struct tst_test test = {
+ .test = do_test,
+ .tcnt = ARRAY_SIZE(tcases),
+};
--
2.43.0
More information about the ltp
mailing list