From e0ede145640050b28165a53677c6f2cac341a5ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Dachary?= <loic@dachary.org>
Date: Sat, 1 Jul 2023 01:20:44 +0200
Subject: [PATCH] [TESTS] MockVariable temporarily replaces a global value

  defer test.MockVariable(&variable, 1234)()

(cherry picked from commit 9c78752444c2411f20e72b96b7b4fdf5359099d5)
(cherry picked from commit d7795d7b256beacd7216b4c3edebe6948f54cae1)
(cherry picked from commit d0ffbd112cbfb008fa76ce68be8484187a990ba9)
(cherry picked from commit f3e62a57bfed6890f5ea1218e4b94e27899c0d88)
---
 modules/test/utils.go | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/modules/test/utils.go b/modules/test/utils.go
index 2917741c45..363cfa32d1 100644
--- a/modules/test/utils.go
+++ b/modules/test/utils.go
@@ -33,3 +33,11 @@ func RedirectURL(resp http.ResponseWriter) string {
 func IsNormalPageCompleted(s string) bool {
 	return strings.Contains(s, `<footer class="page-footer"`) && strings.Contains(s, `</html>`)
 }
+
+func MockVariable[T any](variable *T, mock T) func() {
+	original := *variable
+	*variable = mock
+	return func() {
+		*variable = original
+	}
+}