aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRatchanan Srirattanamet <ratchanan@ubports.com>2020-04-27 17:58:04 +0700
committerRobert Tari <robert@tari.in>2021-08-12 02:25:11 +0200
commitef802adfb4afe44ae2ef529275aadc2629d7170f (patch)
tree5f24bc66baf1cd8c648c7f71fe1575463e2347c0
parentf193bca3b029fa2e379f61e28bb1e4b38ec43fac (diff)
downloadayatana-indicator-sound-ef802adfb4afe44ae2ef529275aadc2629d7170f.tar.gz
ayatana-indicator-sound-ef802adfb4afe44ae2ef529275aadc2629d7170f.tar.bz2
ayatana-indicator-sound-ef802adfb4afe44ae2ef529275aadc2629d7170f.zip
integration-test: provide a temporary HOME directory to the test
A couple of things in the integration-test rely on having a HOME directory. Provide a temporary HOME for the test and its child, which both prevents polluting the building user's HOME and allow the test to run where HOME=/nonexistent (i.e. autobuilder). Also remove the exception not to run the integration test inside the (Canonical's) Jenkins, as it's not relevant anymore.
-rw-r--r--tests/integration/CMakeLists.txt13
-rw-r--r--tests/integration/main.cpp17
2 files changed, 17 insertions, 13 deletions
diff --git a/tests/integration/CMakeLists.txt b/tests/integration/CMakeLists.txt
index 74b9c23..e803a87 100644
--- a/tests/integration/CMakeLists.txt
+++ b/tests/integration/CMakeLists.txt
@@ -87,19 +87,6 @@ target_link_libraries(
gmenuharness-shared
)
-####
-## When building under jenkins, pulseuadio fails to start as there is no
-## /run/user tree, HOME directory is missing, and similar issues. So here
-## we check that we are the jenkins user, and avoid the integration tests,
-## until such time in future when we can run these tests in some different
-## manner to avoid needing to run pulseaudio in this way.
-####
-execute_process(
- COMMAND whoami
- OUTPUT_VARIABLE TESTS_USER
- OUTPUT_STRIP_TRAILING_WHITESPACE
-)
-
add_test(
integration-tests
integration-tests
diff --git a/tests/integration/main.cpp b/tests/integration/main.cpp
index a29b3b6..f42c90a 100644
--- a/tests/integration/main.cpp
+++ b/tests/integration/main.cpp
@@ -20,6 +20,7 @@
//#include <config.h>
#include <QCoreApplication>
+#include <QTemporaryDir>
#include <QTimer>
#include <gtest/gtest.h>
@@ -44,6 +45,22 @@ int main(int argc, char **argv)
qputenv("LANG", "C.UTF-8");
unsetenv("LC_ALL");
+ /*
+ * A couple of things rely on having a HOME directory:
+ * - The indicator itself relies on having a writable gsettings/dconf
+ * database, and the test relies on the functionality it provides.
+ * - The test starts Pulseaudio, which requires both a runtime and a
+ * state directory, both of which has a failback to the HOME.
+ * Provide a temporary HOME for the test and its child, which both prevents
+ * polluting the building user's HOME and allow the test to run where
+ * HOME=/nonexistent (i.e. autobuilder).
+ */
+ QTemporaryDir tmpHome;
+ if (!tmpHome.isValid())
+ qFatal("Cannot create a temporary HOME for the test.");
+
+ setenv("HOME", tmpHome.path().toLocal8Bit().constData(), true);
+
QCoreApplication application(argc, argv);
DBusMock::registerMetaTypes();
DBusTypes::registerMetaTypes();