From b0ae4875f5dd7ce0b3ff998754307cb627415a86 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Thu, 19 Sep 2024 21:12:55 +0200
Subject: [PATCH] testsuite: testsuite-script - Add testsuite_script_get_name()

---
 src/testsuite/testsuite-script.c | 28 ++++++++++++++++++++++++++++
 src/testsuite/testsuite-script.h |  2 ++
 2 files changed, 30 insertions(+)

diff --git a/src/testsuite/testsuite-script.c b/src/testsuite/testsuite-script.c
index 7548f8128..102909cbb 100644
--- a/src/testsuite/testsuite-script.c
+++ b/src/testsuite/testsuite-script.c
@@ -31,6 +31,34 @@ void testsuite_script_deinit(void)
 {
 }
 
+static const char *path_get_filename(const char *path)
+{
+	const char *filename;
+
+	filename = strrchr(path, '/');
+	if (filename == NULL)
+		filename = path;
+	else
+		filename++;
+	return filename;
+}
+
+const char *testsuite_script_get_name(const char *path)
+{
+	const char *file, *ext;
+
+	file = path_get_filename(path);
+
+	/* Extract the script name */
+	ext = strrchr(file, '.');
+	if (ext == NULL || ext == file ||
+	    (strcmp(ext, ".svtest") != 0 &&
+	     strcmp(ext, "."SIEVE_SCRIPT_FILEEXT) != 0))
+		return NULL;
+
+	return t_strdup_until(file, ext);
+}
+
 static struct sieve_binary *
 _testsuite_script_compile(const struct sieve_runtime_env *renv,
 			  const char *script)
diff --git a/src/testsuite/testsuite-script.h b/src/testsuite/testsuite-script.h
index 547fdfc74..1bbab0aec 100644
--- a/src/testsuite/testsuite-script.h
+++ b/src/testsuite/testsuite-script.h
@@ -6,6 +6,8 @@
 void testsuite_script_init(void);
 void testsuite_script_deinit(void);
 
+const char *testsuite_script_get_name(const char *path);
+
 bool testsuite_script_is_subtest(const struct sieve_runtime_env *renv);
 
 bool testsuite_script_compile(const struct sieve_runtime_env *renv,
-- 
GitLab