summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDirk-Jan C. Binnema <djcb@djcbsoftware.nl>2023-04-09 11:02:58 +0300
committerDirk-Jan C. Binnema <djcb@djcbsoftware.nl>2023-04-09 15:03:59 +0300
commitb56698a113ae67c5208606bf7dd4eeea1e8cbb23 (patch)
treed99d19f58565434d08e943d284076c25c3904c46
parent3e496d56d90f064358e86c568266f2d704764c5d (diff)
test: don't "uniqify" link names during test
-rw-r--r--lib/mu-maildir.cc10
-rw-r--r--lib/utils/mu-test-utils.cc2
-rw-r--r--lib/utils/mu-test-utils.hh2
-rw-r--r--mu/mu-cmd-find.cc6
4 files changed, 12 insertions, 8 deletions
diff --git a/lib/mu-maildir.cc b/lib/mu-maildir.cc
index a07bb0a..ca2546a 100644
--- a/lib/mu-maildir.cc
+++ b/lib/mu-maildir.cc
@@ -155,7 +155,7 @@ get_target_fullpath(const std::string& src, const std::string& targetpath,
if (auto&& res = check_subdir(src, in_cur); !res)
return Err(std::move(res.error()));
- char *srcfile{g_path_get_basename(src.c_str())};
+ const auto srcfile{to_string_gchar(g_path_get_basename(src.c_str()))};
/* create targetpath; note: make the filename *cough* unique by
* including a hash of the srcname in the targetname. This helps if
@@ -165,15 +165,13 @@ get_target_fullpath(const std::string& src, const std::string& targetpath,
if (unique_names)
fulltargetpath = join_paths(targetpath,
in_cur ? "cur" : "new",
- format("%u_%s",
+ format("%08x-%s",
g_str_hash(src.c_str()),
- srcfile));
+ srcfile.c_str()));
else
fulltargetpath = join_paths(targetpath,
in_cur ? "cur" : "new",
- srcfile);
- g_free(srcfile);
-
+ srcfile.c_str());
return fulltargetpath;
}
diff --git a/lib/utils/mu-test-utils.cc b/lib/utils/mu-test-utils.cc
index 8e049b2..4a0288a 100644
--- a/lib/utils/mu-test-utils.cc
+++ b/lib/utils/mu-test-utils.cc
@@ -93,6 +93,8 @@ black_hole(void)
void
Mu::mu_test_init(int *argc, char ***argv)
{
+ g_setenv("MU_TEST", "yes", TRUE);
+
g_test_init(argc, argv, NULL);
if (!g_test_verbose())
diff --git a/lib/utils/mu-test-utils.hh b/lib/utils/mu-test-utils.hh
index ffb0662..2db89b9 100644
--- a/lib/utils/mu-test-utils.hh
+++ b/lib/utils/mu-test-utils.hh
@@ -36,7 +36,7 @@ static inline std::string test_random_tmpdir() {
}
/**
- * mu wrapper for g_test_init
+ * mu wrapper for g_test_init. Sets environment variable MU_TEST to 1.
*
* @param argc
* @param argv
diff --git a/mu/mu-cmd-find.cc b/mu/mu-cmd-find.cc
index cbab137..e340a6d 100644
--- a/mu/mu-cmd-find.cc
+++ b/mu/mu-cmd-find.cc
@@ -178,7 +178,11 @@ output_link(const Option<Message>& msg, const OutputInfo& info, const Options& o
else if (info.footer)
return true;
- if (auto&& res = maildir_link(msg->path(), opts.find.linksdir); !res) {
+ /* during test, do not create "unique names" (i.e., names with path
+ * hashes), so we get a predictable result */
+ const auto unique_names{!g_getenv("MU_TEST")&&!g_test_initialized()};
+
+ if (auto&& res = maildir_link(msg->path(), opts.find.linksdir, unique_names); !res) {
res.error().fill_g_error(err);
return false;
}