Merge lp:~michihenning/thumbnailer/snap into lp:thumbnailer/devel

Proposed by Michi Henning
Status: Merged
Approved by: James Henstridge
Approved revision: 377
Merged at revision: 370
Proposed branch: lp:~michihenning/thumbnailer/snap
Merge into: lp:thumbnailer/devel
Diff against target: 833 lines (+228/-124)
25 files modified
CMakeLists.txt (+5/-0)
doc/libthumbnailer-qt/examples/qt_example_test.cpp (+3/-3)
include/internal/env_vars.h (+22/-6)
man/thumbnailer-service.1 (+1/-1)
snapcraft.yaml (+4/-0)
src/CMakeLists.txt (+1/-0)
src/env_vars.cpp (+148/-0)
src/file_io.cpp (+1/-1)
src/imageextractor.cpp (+1/-4)
src/service/inactivityhandler.cpp (+1/-39)
src/settings.cpp (+2/-19)
src/thumbnailer.cpp (+2/-2)
src/ubuntuserverdownloader.cpp (+2/-13)
tests/dbus/dbus_test.cpp (+7/-7)
tests/download/download_test.cpp (+1/-1)
tests/file_io/file_io_test.cpp (+1/-1)
tests/image-provider/image-provider_test.cpp (+1/-2)
tests/libthumbnailer-qt/libthumbnailer-qt_test.cpp (+3/-3)
tests/qml/qml_test.cpp (+1/-1)
tests/settings/settings_test.cpp (+3/-3)
tests/slow-vs-thumb/slow-vs-thumb_test.cpp (+1/-1)
tests/stress/stress_test.cpp (+4/-4)
tests/thumbnailer-admin/thumbnailer-admin_test.cpp (+3/-3)
tests/thumbnailer/thumbnailer_test.cpp (+8/-8)
tests/utils/artserver.cpp (+2/-2)
To merge this branch: bzr merge lp:~michihenning/thumbnailer/snap
Reviewer Review Type Date Requested Status
James Henstridge Approve
unity-api-1-bot continuous-integration Approve
Review via email: mp+316060@code.launchpad.net

Commit message

Adjust paths when running in a snap. Decision whether to adjust paths is now made at compile time. Also consolidated all the environment variable accesses into an EnvVar helper class.
Added home interface to service and admin tool for the time being. This allows local thumbnailing to work (but the apparmor credentials check is currently not doing the right thing).
videos don't thumbnail yet because we are not bundling the gstreamer codecs, I suspect.

Description of the change

Adjust paths when running in a snap.

To post a comment you must log in.
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :

PASSED: Continuous integration, rev:373
https://jenkins.canonical.com/unity-api-1/job/lp-thumbnailer-ci/22/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build/1577
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-0-fetch/1584
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1362
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1362/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=zesty/1362
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=zesty/1362/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1362
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1362/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=zesty/1362
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=zesty/1362/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/1362
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/1362/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=zesty/1362
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=zesty/1362/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/unity-api-1/job/lp-thumbnailer-ci/22/rebuild

review: Approve (continuous-integration)
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :

PASSED: Continuous integration, rev:374
https://jenkins.canonical.com/unity-api-1/job/lp-thumbnailer-ci/23/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build/1578
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-0-fetch/1585
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1363
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1363/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=zesty/1363
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=zesty/1363/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1363
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1363/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=zesty/1363
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=zesty/1363/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/1363
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/1363/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=zesty/1363
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=zesty/1363/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/unity-api-1/job/lp-thumbnailer-ci/23/rebuild

review: Approve (continuous-integration)
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :

PASSED: Continuous integration, rev:375
https://jenkins.canonical.com/unity-api-1/job/lp-thumbnailer-ci/24/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build/1579
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-0-fetch/1586
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1364
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1364/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=zesty/1364
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=zesty/1364/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1364
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1364/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=zesty/1364
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=zesty/1364/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/1364
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/1364/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=zesty/1364
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=zesty/1364/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/unity-api-1/job/lp-thumbnailer-ci/24/rebuild

review: Approve (continuous-integration)
lp:~michihenning/thumbnailer/snap updated
376. By Michi Henning

Added home interface to enable thumbnailing local files.
Also add this to the thumbnailer-admin command, because it is a royal
pain not to be able to use it for local media files.

Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :

PASSED: Continuous integration, rev:376
https://jenkins.canonical.com/unity-api-1/job/lp-thumbnailer-ci/25/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build/1580
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-0-fetch/1587
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1365
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1365/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=zesty/1365
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=zesty/1365/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1365
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1365/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=zesty/1365
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=zesty/1365/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/1365
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/1365/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=zesty/1365
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=zesty/1365/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/unity-api-1/job/lp-thumbnailer-ci/25/rebuild

review: Approve (continuous-integration)
Revision history for this message
James Henstridge (jamesh) wrote :

I've noted a few small issues as inline comments.

review: Needs Fixing
lp:~michihenning/thumbnailer/snap updated
377. By Michi Henning

Review comments from James.

Revision history for this message
Michi Henning (michihenning) wrote :

Thanks for that! I think I've addressed all the issues. Tests pass for normal and -DSNAP_BUILD.

Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :

PASSED: Continuous integration, rev:377
https://jenkins.canonical.com/unity-api-1/job/lp-thumbnailer-ci/26/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build/1593
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-0-fetch/1600
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1378
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1378/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=zesty/1378
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=zesty/1378/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1378
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1378/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=zesty/1378
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=zesty/1378/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/1378
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/1378/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=zesty/1378
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=zesty/1378/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/unity-api-1/job/lp-thumbnailer-ci/26/rebuild

review: Approve (continuous-integration)
Revision history for this message
James Henstridge (jamesh) wrote :

Looks close enough. I expected you to call the cmake option SNAP_BUILD, since that's the variable you were already using (and setting in snapcraft.yaml). That can be addressed with a future MP though.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2017-01-16 05:12:01 +0000
3+++ CMakeLists.txt 2017-02-03 07:36:24 +0000
4@@ -47,6 +47,11 @@
5
6 add_definitions(-DQT_NO_KEYWORDS)
7
8+option(SnapBuild "Build for snap release")
9+if(${SnapBuild} OR "${SNAP_BUILD}")
10+ add_definitions(-DSNAP_BUILD=1)
11+endif()
12+
13 include(GNUInstallDirs)
14
15 # libthumbnailer-qt version
16
17=== modified file 'doc/libthumbnailer-qt/examples/qt_example_test.cpp'
18--- doc/libthumbnailer-qt/examples/qt_example_test.cpp 2017-01-17 04:13:01 +0000
19+++ doc/libthumbnailer-qt/examples/qt_example_test.cpp 2017-02-03 07:36:24 +0000
20@@ -146,7 +146,7 @@
21 setenv("XDG_CACHE_HOME", (tempdir->path() + "/cache").toUtf8().data(), true);
22
23 // set 3 seconds as max idle time
24- setenv(unity::thumbnailer::internal::MAX_IDLE, "1000", true);
25+ setenv(unity::thumbnailer::internal::EnvVars::MAX_IDLE, "1000", true);
26
27 dbus_.reset(new DBusServer());
28 }
29@@ -155,7 +155,7 @@
30 {
31 dbus_.reset();
32
33- unsetenv(unity::thumbnailer::internal::MAX_IDLE);
34+ unsetenv(unity::thumbnailer::internal::EnvVars::MAX_IDLE);
35 unsetenv("XDG_CACHE_HOME");
36 tempdir.reset();
37 }
38@@ -192,7 +192,7 @@
39 QCoreApplication app(argc, argv);
40 setenv("GSETTINGS_BACKEND", "memory", true);
41 setenv("GSETTINGS_SCHEMA_DIR", GSETTINGS_SCHEMA_DIR, true);
42- setenv(unity::thumbnailer::internal::UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
43+ setenv(unity::thumbnailer::internal::EnvVars::UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
44 ::testing::InitGoogleTest(&argc, argv);
45 return RUN_ALL_TESTS();
46 }
47
48=== modified file 'include/internal/env_vars.h'
49--- include/internal/env_vars.h 2015-12-14 04:43:11 +0000
50+++ include/internal/env_vars.h 2017-02-03 07:36:24 +0000
51@@ -18,8 +18,9 @@
52
53 #pragma once
54
55-#include <map>
56-#include <string>
57+#include <internal/config.h>
58+
59+#include <QString>
60
61 namespace unity
62 {
63@@ -30,10 +31,25 @@
64 namespace internal
65 {
66
67-constexpr char const* MAX_IDLE = "THUMBNAILER_MAX_IDLE";
68-constexpr char const* UBUNTU_SERVER_URL = "THUMBNAILER_UBUNTU_SERVER_URL";
69-constexpr char const* UTIL_DIR = "THUMBNAILER_UTIL_DIR";
70-constexpr char const* LOG_LEVEL = "THUMBNAILER_LOG_LEVEL";
71+struct EnvVars
72+{
73+ static int get_max_idle();
74+ static QString get_ubuntu_server_url();
75+ static QString get_util_dir();
76+ static int get_log_level();
77+ static std::string get_cache_dir();
78+
79+ static constexpr char const* MAX_IDLE = "THUMBNAILER_MAX_IDLE";
80+ static constexpr int DFLT_MAX_IDLE = 30000;
81+
82+ static constexpr char const* UBUNTU_SERVER_URL = "THUMBNAILER_UBUNTU_SERVER_URL";
83+ static constexpr char const* DFLT_UBUNTU_SERVER_URL = "https://dash.ubuntu.com";
84+
85+ static constexpr char const* UTIL_DIR = "THUMBNAILER_UTIL_DIR";
86+ static constexpr char const* DFLT_UTIL_DIR = SHARE_PRIV_ABS;
87+
88+ static constexpr char const* LOG_LEVEL = "THUMBNAILER_LOG_LEVEL";
89+};
90
91 } // namespace internal
92
93
94=== modified file 'man/thumbnailer-service.1'
95--- man/thumbnailer-service.1 2016-04-07 01:18:31 +0000
96+++ man/thumbnailer-service.1 2017-02-03 07:36:24 +0000
97@@ -55,7 +55,7 @@
98 .B THUMBNAILER_UTIL_DIR
99 The directory in which to look for the \fBvs\-thumb\fP executable, which is used
100 to extract images from streaming media. If not set, the program is expected to be in
101-\fB/usr/lib/\fP\fI<arch>\fP\fB/thumbnailer\fP.
102+\fB$/usr/lib/\fP\fI<arch>\fP\fB/thumbnailer\fP.
103 .TP
104 .B THUMBNAILER_MAX_IDLE
105 The service exits once it has been idle for the number of milliseconds specified by this variable. If not set,
106
107=== modified file 'snapcraft.yaml'
108--- snapcraft.yaml 2017-01-30 03:00:30 +0000
109+++ snapcraft.yaml 2017-02-03 07:36:24 +0000
110@@ -44,6 +44,7 @@
111 # See https://bugs.launchpad.net/snappy/+bug/1600154
112 # For now, the service uses default settings because it's gsettings lookups fail.
113 - gsettings
114+ - home
115 slots:
116 - thumbnailer
117 thumbnailer-admin:
118@@ -51,10 +52,13 @@
119 plugs:
120 - platform
121 - thumbnails
122+ - home
123
124 parts:
125 thumbnailer:
126 plugin: cmake
127+ configflags:
128+ - -DSNAP_BUILD=1
129 source: .
130 after:
131 - desktop-ubuntu-app-platform
132
133=== modified file 'src/CMakeLists.txt'
134--- src/CMakeLists.txt 2016-02-14 23:42:00 +0000
135+++ src/CMakeLists.txt 2017-02-03 07:36:24 +0000
136@@ -18,6 +18,7 @@
137 artdownloader.cpp
138 backoff_adjuster.cpp
139 check_access.cpp
140+ env_vars.cpp
141 file_io.cpp
142 file_lock.cpp
143 image.cpp
144
145=== added file 'src/env_vars.cpp'
146--- src/env_vars.cpp 1970-01-01 00:00:00 +0000
147+++ src/env_vars.cpp 2017-02-03 07:36:24 +0000
148@@ -0,0 +1,148 @@
149+/*
150+ * Copyright (C) 2017 Canonical Ltd.
151+ *
152+ * This program is free software: you can redistribute it and/or modify
153+ * it under the terms of the GNU General Public License version 3 as
154+ * published by the Free Software Foundation.
155+ *
156+ * This program is distributed in the hope that it will be useful,
157+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
158+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
159+ * GNU General Public License for more details.
160+ *
161+ * You should have received a copy of the GNU General Public License
162+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
163+ *
164+ * Authored by: Michi Henning <michi.henning@canonical.com>
165+ */
166+
167+#include <internal/env_vars.h>
168+
169+#include <internal/config.h>
170+
171+#pragma GCC diagnostic push
172+#pragma GCC diagnostic ignored "-Wold-style-cast"
173+#include <glib.h>
174+#pragma GCC diagnostic pop
175+#include <QDebug>
176+#include <sstream>
177+
178+using namespace std;
179+
180+namespace unity
181+{
182+
183+namespace thumbnailer
184+{
185+
186+namespace internal
187+{
188+
189+int EnvVars::get_max_idle()
190+{
191+ char const* c_idle_time = getenv(MAX_IDLE);
192+ if (c_idle_time)
193+ {
194+ std::string str_idle_time(c_idle_time);
195+ try
196+ {
197+ int env_value = std::stoi(str_idle_time);
198+ if (env_value < 1000)
199+ {
200+ std::ostringstream s;
201+ s << "Value for env variable THUMBNAILER_MAX_IDLE \"" << env_value << "\" must be >= 1000.";
202+ throw std::invalid_argument(s.str());
203+ }
204+ return env_value;
205+ }
206+ catch (std::exception& e)
207+ {
208+ std::ostringstream s;
209+ s << "Value for env variable THUMBNAILER_MAX_IDLE \"" << str_idle_time << "\" must be >= 1000.";
210+ throw std::invalid_argument(s.str());
211+ }
212+ }
213+ return DFLT_MAX_IDLE;
214+}
215+
216+QString EnvVars::get_ubuntu_server_url()
217+{
218+ char const* override_url = getenv(UBUNTU_SERVER_URL);
219+ if (override_url && *override_url)
220+ {
221+ return override_url;
222+ }
223+ return DFLT_UBUNTU_SERVER_URL;
224+}
225+
226+QString EnvVars::get_util_dir()
227+{
228+ char const* utildir = getenv(UTIL_DIR);
229+ if (utildir && *utildir)
230+ {
231+ return utildir;
232+ }
233+
234+#ifdef SNAP_BUILD
235+ char const* snapdir = getenv("SNAP");
236+ if (!snapdir || !*snapdir)
237+ {
238+ throw std::runtime_error("Environment variable SNAP is not set or empty.");
239+ }
240+ return QString(snapdir) + "/" + SHARE_PRIV_ABS;
241+#else
242+ return SHARE_PRIV_ABS;
243+#endif
244+}
245+
246+int EnvVars::get_log_level()
247+{
248+ char const* level = getenv(LOG_LEVEL);
249+ if (level && *level)
250+ {
251+ int l;
252+ try
253+ {
254+ l = std::stoi(level);
255+ }
256+ catch (std::exception const& e)
257+ {
258+ qCritical() << "Environment variable" << LOG_LEVEL << "has invalid setting:" << level
259+ << "(expected value in range 0..2) - variable ignored";
260+ return -1;
261+ }
262+ if (l < 0 || l > 2)
263+ {
264+ qCritical() << "Environment variable" << LOG_LEVEL << "has invalid setting:" << level
265+ << "(expected value in range 0..2) - variable ignored";
266+ return -1;
267+ }
268+ return l;
269+ }
270+ return -1;
271+}
272+
273+string EnvVars::get_cache_dir()
274+{
275+ string cache_dir = g_get_user_cache_dir(); // Always returns something, even HOME and XDG_CACHE_HOME are not set.
276+
277+#ifdef SNAP_BUILD
278+ // When running in a snap, g_get_user_cache_dir() returns $SNAP_USER_DATA (not shared among snap versions),
279+ // but we want $SNAP_USER_COMMON, which is shared. PersistentCache automatically deals with versioning
280+ // changes in the database, so reverting to a snap with an earlier DB schema is safe.
281+ char const* user_common = getenv("SNAP_USER_COMMON");
282+ if (user_common && *user_common)
283+ {
284+ return user_common;
285+ }
286+ setenv("SNAP_USER_COMMON", cache_dir.c_str(), 1);
287+#endif
288+
289+ return cache_dir;
290+}
291+
292+} // namespace internal
293+
294+} // namespace thumbnailer
295+
296+} // namespace unity
297
298=== modified file 'src/file_io.cpp'
299--- src/file_io.cpp 2015-12-02 12:48:12 +0000
300+++ src/file_io.cpp 2017-02-03 07:36:24 +0000
301@@ -90,7 +90,7 @@
302 int fd = mkstemp(&tmp_path[0]);
303 if (fd == -1)
304 {
305- string s = string("write_file(): mkstemp() failed for " + tmp_path + ": ") + safe_strerror(errno);
306+ string s = string("write_file(): cannot create temp file in " + dir.native() + ": ") + safe_strerror(errno);
307 throw runtime_error(s);
308 }
309
310
311=== modified file 'src/imageextractor.cpp'
312--- src/imageextractor.cpp 2016-03-18 22:49:32 +0000
313+++ src/imageextractor.cpp 2017-02-03 07:36:24 +0000
314@@ -20,7 +20,6 @@
315
316 #include <internal/imageextractor.h>
317
318-#include <internal/config.h>
319 #include <internal/env_vars.h>
320 #include <internal/safe_strerror.h>
321
322@@ -102,9 +101,7 @@
323 {
324 // Gstreamer video pipelines are unstable so we need to run an
325 // external helper executable.
326- char* utildir = getenv(UTIL_DIR);
327- exe_path_ = utildir ? utildir : SHARE_PRIV_ABS;
328- exe_path_ += QLatin1String("/vs-thumb");
329+ exe_path_ = EnvVars::get_util_dir() + "/vs-thumb";
330 QUrl in_url = QUrl::fromLocalFile(filename_.c_str());
331 QUrl out_url;
332 out_url.setScheme("fd");
333
334=== modified file 'src/service/inactivityhandler.cpp'
335--- src/service/inactivityhandler.cpp 2015-12-12 02:06:41 +0000
336+++ src/service/inactivityhandler.cpp 2017-02-03 07:36:24 +0000
337@@ -28,44 +28,6 @@
338 #include <sstream>
339 #include <string>
340
341-const int MAX_INACTIVITY_TIME = 30000; // max inactivity time before exiting the app, in milliseconds
342-
343-namespace
344-{
345-
346-int get_env_inactivity_time(int default_value)
347-{
348- using namespace unity::thumbnailer::internal;
349-
350- char const* c_idle_time = getenv(MAX_IDLE);
351- if (c_idle_time)
352- {
353- std::string str_idle_time(c_idle_time);
354- try
355- {
356- int env_value = std::stoi(str_idle_time);
357- if (env_value < 1000)
358- {
359- std::ostringstream s;
360- s << "InactivityHandler::InactivityHandler(): Value for env variable THUMBNAILER_MAX_IDLE \""
361- << env_value << "\" must be >= 1000.";
362- throw std::invalid_argument(s.str());
363- }
364- return env_value;
365- }
366- catch (std::exception& e)
367- {
368- std::ostringstream s;
369- s << "InactivityHandler::InactivityHandler(): Value for env variable THUMBNAILER_MAX_IDLE \""
370- << str_idle_time << "\" must be >= 1000.";
371- throw std::invalid_argument(s.str());
372- }
373- }
374- return default_value;
375-}
376-
377-} // namespace
378-
379 namespace unity
380 {
381
382@@ -81,7 +43,7 @@
383 {
384 assert(timer_func);
385 connect(&timer_, &QTimer::timeout, this, &InactivityHandler::timer_expired);
386- timer_.setInterval(get_env_inactivity_time(MAX_INACTIVITY_TIME));
387+ timer_.setInterval(internal::EnvVars::get_max_idle());
388 }
389
390 InactivityHandler::~InactivityHandler()
391
392=== modified file 'src/settings.cpp'
393--- src/settings.cpp 2016-01-11 07:33:57 +0000
394+++ src/settings.cpp 2017-02-03 07:36:24 +0000
395@@ -139,26 +139,9 @@
396 using namespace unity::thumbnailer::internal;
397
398 int log_level = get_positive_or_zero_int("log-level", LOG_LEVEL_DEFAULT);
399- char const* level = getenv(LOG_LEVEL);
400- if (level && *level)
401+ int l = EnvVars::get_log_level();
402+ if (l != -1)
403 {
404- int l;
405- try
406- {
407- l = std::stoi(level);
408- }
409- catch (std::exception const& e)
410- {
411- qCritical() << "Environment variable" << LOG_LEVEL << "has invalid setting:" << level
412- << "(expected value in range 0..2) - variable ignored";
413- return log_level;
414- }
415- if (l < 0 || l > 2)
416- {
417- qCritical() << "Environment variable" << LOG_LEVEL << "has invalid setting:" << level
418- << "(expected value in range 0..2) - variable ignored";
419- return log_level;
420- }
421 log_level = l;
422 }
423 return log_level;
424
425=== modified file 'src/thumbnailer.cpp'
426--- src/thumbnailer.cpp 2017-01-30 08:24:44 +0000
427+++ src/thumbnailer.cpp 2017-02-03 07:36:24 +0000
428@@ -23,6 +23,7 @@
429 #include <internal/artreply.h>
430 #include <internal/cachehelper.h>
431 #include <internal/check_access.h>
432+#include <internal/env_vars.h>
433 #include <internal/image.h>
434 #include <internal/imageextractor.h>
435 #include <internal/local_album_art.h>
436@@ -744,8 +745,7 @@
437 Thumbnailer::Thumbnailer()
438 : downloader_(new UbuntuServerDownloader())
439 {
440- string xdg_base = g_get_user_cache_dir(); // Always returns something, even HOME and XDG_CACHE_HOME are not set.
441- string cache_dir = xdg_base + "/unity-thumbnailer";
442+ string cache_dir = EnvVars::get_cache_dir() + "/unity-thumbnailer";
443 make_directories(cache_dir, 0700);
444
445 try
446
447=== modified file 'src/ubuntuserverdownloader.cpp'
448--- src/ubuntuserverdownloader.cpp 2016-01-05 07:00:49 +0000
449+++ src/ubuntuserverdownloader.cpp 2017-02-03 07:36:24 +0000
450@@ -99,17 +99,6 @@
451 return key;
452 }
453
454-char const* server_url()
455-{
456- char const* server_url = DFLT_SERVER_URL;
457- char const* override_url = getenv(thumbnailer::internal::UBUNTU_SERVER_URL);
458- if (override_url && *override_url)
459- {
460- server_url = override_url;
461- }
462- return server_url;
463-}
464-
465 } // namespace
466
467 class UbuntuServerArtReply : public ArtReply
468@@ -279,7 +268,7 @@
469 QString const& album,
470 chrono::milliseconds timeout)
471 {
472- auto url = make_art_url(server_url(), ALBUM_ART_BASE_URL, artist, album, api_key_);
473+ auto url = make_art_url(EnvVars::get_ubuntu_server_url(), ALBUM_ART_BASE_URL, artist, album, api_key_);
474 return download_url(url, timeout);
475 }
476
477@@ -287,7 +276,7 @@
478 QString const& album,
479 chrono::milliseconds timeout)
480 {
481- auto url = make_art_url(server_url(), ARTIST_ART_BASE_URL, artist, album, api_key_);
482+ auto url = make_art_url(EnvVars::get_ubuntu_server_url(), ARTIST_ART_BASE_URL, artist, album, api_key_);
483 return download_url(url, timeout);
484 }
485
486
487=== modified file 'tests/dbus/dbus_test.cpp'
488--- tests/dbus/dbus_test.cpp 2017-01-17 04:13:01 +0000
489+++ tests/dbus/dbus_test.cpp 2017-02-03 07:36:24 +0000
490@@ -74,8 +74,8 @@
491 tempdir.reset(new QTemporaryDir(TESTBINDIR "/dbus-test.XXXXXX"));
492 setenv("XDG_CACHE_HOME", (tempdir->path() + "/cache").toUtf8().data(), true);
493
494- setenv(MAX_IDLE, "1000", true);
495- setenv(LOG_LEVEL, "2", true); // For coverage
496+ setenv(EnvVars::MAX_IDLE, "1000", true);
497+ setenv(EnvVars::LOG_LEVEL, "2", true); // For coverage
498
499 dbus_.reset(new DBusServer());
500 }
501@@ -90,7 +90,7 @@
502 dbus_.reset();
503 art_server_.reset();
504
505- unsetenv(MAX_IDLE);
506+ unsetenv(EnvVars::MAX_IDLE);
507 unsetenv("XDG_CACHE_HOME");
508 tempdir.reset();
509 }
510@@ -318,7 +318,7 @@
511 QTemporaryDir tempdir(TESTBINDIR "/dbus-test.XXXXXX");
512 setenv("XDG_CACHE_HOME", (tempdir.path() + "/cache").toUtf8().data(), true);
513
514- EnvVarGuard ev_guard(MAX_IDLE, "bad_value");
515+ EnvVarGuard ev_guard(EnvVars::MAX_IDLE, "bad_value");
516 try
517 {
518 unique_ptr<DBusServer> dbus(new DBusServer());
519@@ -341,7 +341,7 @@
520 QTemporaryDir tempdir(TESTBINDIR "/dbus-test.XXXXXX");
521 setenv("XDG_CACHE_HOME", (tempdir.path() + "/cache").toUtf8().data(), true);
522
523- EnvVarGuard ev_guard(MAX_IDLE, "999");
524+ EnvVarGuard ev_guard(EnvVars::MAX_IDLE, "999");
525 try
526 {
527 unique_ptr<DBusServer> dbus(new DBusServer());
528@@ -359,7 +359,7 @@
529 QTemporaryDir tempdir(TESTBINDIR "/dbus-test.XXXXXX");
530 setenv("XDG_CACHE_HOME", (tempdir.path() + "/cache").toUtf8().data(), true);
531
532- EnvVarGuard ev_guard(MAX_IDLE, nullptr);
533+ EnvVarGuard ev_guard(EnvVars::MAX_IDLE, nullptr);
534 unique_ptr<DBusServer> dbus(new DBusServer()); // For coverage with default timeout.
535 }
536
537@@ -623,7 +623,7 @@
538
539 setenv("GSETTINGS_BACKEND", "memory", true);
540 setenv("GSETTINGS_SCHEMA_DIR", GSETTINGS_SCHEMA_DIR, true);
541- setenv(UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
542+ setenv(EnvVars::UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
543 ::testing::InitGoogleTest(&argc, argv);
544 return RUN_ALL_TESTS();
545 }
546
547=== modified file 'tests/download/download_test.cpp'
548--- tests/download/download_test.cpp 2017-01-17 04:13:01 +0000
549+++ tests/download/download_test.cpp 2017-02-03 07:36:24 +0000
550@@ -234,7 +234,7 @@
551 QCoreApplication qt_app(argc, argv);
552 setenv("GSETTINGS_BACKEND", "memory", true);
553 setenv("GSETTINGS_SCHEMA_DIR", GSETTINGS_SCHEMA_DIR, true);
554- setenv(UBUNTU_SERVER_URL, "http://127.0.0.1", true);
555+ setenv(EnvVars::UBUNTU_SERVER_URL, "http://127.0.0.1", true);
556 ::testing::InitGoogleTest(&argc, argv);
557 return RUN_ALL_TESTS();
558 }
559
560=== modified file 'tests/file_io/file_io_test.cpp'
561--- tests/file_io/file_io_test.cpp 2017-01-17 04:13:01 +0000
562+++ tests/file_io/file_io_test.cpp 2017-02-03 07:36:24 +0000
563@@ -113,7 +113,7 @@
564 {
565 chmod(dir.c_str(), 0700);
566 string msg = e.what();
567- EXPECT_TRUE(boost::starts_with(msg, "write_file(): mkstemp() failed for ")) << msg;
568+ EXPECT_TRUE(boost::starts_with(msg, "write_file(): cannot create temp file in ")) << msg;
569 }
570
571 try
572
573=== modified file 'tests/image-provider/image-provider_test.cpp'
574--- tests/image-provider/image-provider_test.cpp 2017-01-17 04:13:01 +0000
575+++ tests/image-provider/image-provider_test.cpp 2017-02-03 07:36:24 +0000
576@@ -40,7 +40,6 @@
577
578 using namespace std;
579 using namespace unity::thumbnailer::qml;
580-using unity::thumbnailer::internal::UTIL_DIR;
581 using unity::thumbnailer::qt::Thumbnailer;
582
583 class ProviderTest : public ::testing::Test
584@@ -214,7 +213,7 @@
585 QGuiApplication app(argc, argv);
586 setenv("GSETTINGS_BACKEND", "memory", true);
587 setenv("GSETTINGS_SCHEMA_DIR", GSETTINGS_SCHEMA_DIR, true);
588- setenv(UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
589+ setenv(unity::thumbnailer::internal::EnvVars::UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
590 ::testing::InitGoogleTest(&argc, argv);
591 return RUN_ALL_TESTS();
592 }
593
594=== modified file 'tests/libthumbnailer-qt/libthumbnailer-qt_test.cpp'
595--- tests/libthumbnailer-qt/libthumbnailer-qt_test.cpp 2017-01-17 04:13:01 +0000
596+++ tests/libthumbnailer-qt/libthumbnailer-qt_test.cpp 2017-02-03 07:36:24 +0000
597@@ -82,7 +82,7 @@
598 tempdir.reset(new QTemporaryDir(TESTBINDIR "/libthumbnailer-qt.XXXXXX"));
599 setenv("XDG_CACHE_HOME", (tempdir->path() + "/cache").toUtf8().data(), true);
600
601- setenv(MAX_IDLE, "10000", true);
602+ setenv(EnvVars::MAX_IDLE, "10000", true);
603
604 dbus_.reset(new DBusServer());
605 }
606@@ -97,7 +97,7 @@
607 dbus_.reset();
608 art_server_.reset();
609
610- unsetenv(MAX_IDLE);
611+ unsetenv(EnvVars::MAX_IDLE);
612 unsetenv("XDG_CACHE_HOME");
613 tempdir.reset();
614 }
615@@ -794,7 +794,7 @@
616
617 setenv("GSETTINGS_BACKEND", "memory", true);
618 setenv("GSETTINGS_SCHEMA_DIR", GSETTINGS_SCHEMA_DIR, true);
619- setenv(UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
620+ setenv(EnvVars::UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
621
622 // Turn on trace so we get coverage on those parts of the code.
623 gobj_ptr<GSettings> gsettings(g_settings_new("com.canonical.Unity.Thumbnailer"));
624
625=== modified file 'tests/qml/qml_test.cpp'
626--- tests/qml/qml_test.cpp 2016-09-26 00:30:42 +0000
627+++ tests/qml/qml_test.cpp 2017-02-03 07:36:24 +0000
628@@ -78,7 +78,7 @@
629
630 setenv("GSETTINGS_BACKEND", "memory", true);
631 setenv("GSETTINGS_SCHEMA_DIR", GSETTINGS_SCHEMA_DIR, true);
632- setenv(unity::thumbnailer::internal::UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
633+ setenv(unity::thumbnailer::internal::EnvVars::UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
634 qmlRegisterSingletonType("testconfig", 1, 0, "Config", make_test_config);
635 qmlProtectModule("testconfig", 1);
636
637
638=== modified file 'tests/settings/settings_test.cpp'
639--- tests/settings/settings_test.cpp 2017-01-17 04:13:01 +0000
640+++ tests/settings/settings_test.cpp 2017-02-03 07:36:24 +0000
641@@ -188,7 +188,7 @@
642
643 TEST(Settings, log_level_env_override)
644 {
645- EnvVarGuard ev_guard(LOG_LEVEL, "0");
646+ EnvVarGuard ev_guard(EnvVars::LOG_LEVEL, "0");
647
648 Settings settings;
649 EXPECT_EQ(0, settings.log_level());
650@@ -196,7 +196,7 @@
651
652 TEST(Settings, log_level_env_bad_setting)
653 {
654- EnvVarGuard ev_guard(LOG_LEVEL, "abc");
655+ EnvVarGuard ev_guard(EnvVars::LOG_LEVEL, "abc");
656
657 Settings settings;
658 EXPECT_EQ(1, settings.log_level());
659@@ -204,7 +204,7 @@
660
661 TEST(Settings, log_level_out_of_range)
662 {
663- EnvVarGuard ev_guard(LOG_LEVEL, "3");
664+ EnvVarGuard ev_guard(EnvVars::LOG_LEVEL, "3");
665
666 Settings settings;
667 EXPECT_EQ(1, settings.log_level());
668
669=== modified file 'tests/slow-vs-thumb/slow-vs-thumb_test.cpp'
670--- tests/slow-vs-thumb/slow-vs-thumb_test.cpp 2017-01-17 04:13:01 +0000
671+++ tests/slow-vs-thumb/slow-vs-thumb_test.cpp 2017-02-03 07:36:24 +0000
672@@ -82,7 +82,7 @@
673 QCoreApplication app(argc, argv);
674
675 // Run fake vs-thumb that does nothing for 20 seconds.
676- setenv(UTIL_DIR, TESTSRCDIR "/slow-vs-thumb/slow", true);
677+ setenv(EnvVars::UTIL_DIR, TESTSRCDIR "/slow-vs-thumb/slow", true);
678 ::testing::InitGoogleTest(&argc, argv);
679 return RUN_ALL_TESTS();
680 }
681
682=== modified file 'tests/stress/stress_test.cpp'
683--- tests/stress/stress_test.cpp 2017-01-17 04:13:01 +0000
684+++ tests/stress/stress_test.cpp 2017-02-03 07:36:24 +0000
685@@ -163,7 +163,7 @@
686 tempdir.reset(new QTemporaryDir(TESTBINDIR "/stress-test.XXXXXX"));
687 setenv("XDG_CACHE_HOME", (tempdir->path() + "/cache").toUtf8().data(), true);
688
689- setenv(MAX_IDLE, "30000", true);
690+ setenv(EnvVars::MAX_IDLE, "30000", true);
691
692 dbus_.reset(new DBusServer());
693 thumbnailer_.reset(new unity::thumbnailer::qt::Thumbnailer(dbus_->connection()));
694@@ -224,7 +224,7 @@
695 dbus_.reset();
696 art_server_.reset();
697
698- unsetenv(MAX_IDLE);
699+ unsetenv(EnvVars::MAX_IDLE);
700 unsetenv("XDG_CACHE_HOME");
701 tempdir.reset();
702
703@@ -612,8 +612,8 @@
704 #endif
705 setenv("GSETTINGS_BACKEND", "memory", true);
706 setenv("GSETTINGS_SCHEMA_DIR", GSETTINGS_SCHEMA_DIR, true);
707- setenv(UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
708- setenv(LOG_LEVEL, "0", true);
709+ setenv(EnvVars::UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
710+ setenv(EnvVars::LOG_LEVEL, "0", true);
711 ::testing::InitGoogleTest(&argc, argv);
712 return RUN_ALL_TESTS();
713 }
714
715=== modified file 'tests/thumbnailer-admin/thumbnailer-admin_test.cpp'
716--- tests/thumbnailer-admin/thumbnailer-admin_test.cpp 2017-01-17 04:13:01 +0000
717+++ tests/thumbnailer-admin/thumbnailer-admin_test.cpp 2017-02-03 07:36:24 +0000
718@@ -48,7 +48,7 @@
719 ASSERT_NE(-1, chdir(temp_dir().c_str()));
720 setenv("XDG_CACHE_HOME", qPrintable(tempdir->path() + "/cache"), true);
721
722- setenv(MAX_IDLE, "3000", true);
723+ setenv(EnvVars::MAX_IDLE, "3000", true);
724
725 dbus_.reset(new DBusServer());
726 }
727@@ -62,7 +62,7 @@
728 {
729 dbus_.reset();
730
731- unsetenv(MAX_IDLE);
732+ unsetenv(EnvVars::MAX_IDLE);
733 unsetenv("XDG_CACHE_HOME");
734 tempdir.reset();
735 }
736@@ -723,7 +723,7 @@
737 {
738 QCoreApplication app(argc, argv);
739
740- setenv(UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
741+ setenv(EnvVars::UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
742 setenv("LC_ALL", "C", true);
743 ::testing::InitGoogleTest(&argc, argv);
744 return RUN_ALL_TESTS();
745
746=== modified file 'tests/thumbnailer/thumbnailer_test.cpp'
747--- tests/thumbnailer/thumbnailer_test.cpp 2017-01-17 04:13:01 +0000
748+++ tests/thumbnailer/thumbnailer_test.cpp 2017-02-03 07:36:24 +0000
749@@ -447,7 +447,7 @@
750 TEST_F(ThumbnailerTest, vs_thumb_exec_failure)
751 {
752 // Cause vs-thumb exec failure.
753- EnvVarGuard ev_guard(UTIL_DIR, "no_such_directory");
754+ EnvVarGuard ev_guard(EnvVars::UTIL_DIR, "no_such_directory");
755
756 Thumbnailer tn;
757
758@@ -468,7 +468,7 @@
759 TEST_F(ThumbnailerTest, vs_thumb_exit_1)
760 {
761 // Run fake vs-thumb that exits with status 1
762- EnvVarGuard ev_guard(UTIL_DIR, TESTSRCDIR "/thumbnailer/vs-thumb-exit-1");
763+ EnvVarGuard ev_guard(EnvVars::UTIL_DIR, TESTSRCDIR "/thumbnailer/vs-thumb-exit-1");
764
765 Thumbnailer tn;
766
767@@ -489,7 +489,7 @@
768 TEST_F(ThumbnailerTest, vs_thumb_exit_2)
769 {
770 // Run fake vs-thumb that exits with status 2
771- EnvVarGuard ev_guard(UTIL_DIR, TESTSRCDIR "/thumbnailer/vs-thumb-exit-2");
772+ EnvVarGuard ev_guard(EnvVars::UTIL_DIR, TESTSRCDIR "/thumbnailer/vs-thumb-exit-2");
773
774 Thumbnailer tn;
775
776@@ -510,7 +510,7 @@
777 TEST_F(ThumbnailerTest, vs_thumb_exit_99)
778 {
779 // Run fake vs-thumb that exits with status 99
780- EnvVarGuard ev_guard(UTIL_DIR, TESTSRCDIR "/thumbnailer/vs-thumb-exit-99");
781+ EnvVarGuard ev_guard(EnvVars::UTIL_DIR, TESTSRCDIR "/thumbnailer/vs-thumb-exit-99");
782
783 Thumbnailer tn;
784
785@@ -531,7 +531,7 @@
786 TEST_F(ThumbnailerTest, vs_thumb_crash)
787 {
788 // Run fake vs-thumb that kills itself with SIGTERM
789- EnvVarGuard ev_guard(UTIL_DIR, TESTSRCDIR "/thumbnailer/vs-thumb-crash");
790+ EnvVarGuard ev_guard(EnvVars::UTIL_DIR, TESTSRCDIR "/thumbnailer/vs-thumb-crash");
791
792 Thumbnailer tn;
793
794@@ -1011,7 +1011,7 @@
795 TEST_F(RemoteServer, dead_server)
796 {
797 // Dead server won't reply.
798- EnvVarGuard ev_guard(UBUNTU_SERVER_URL, "http://deadserver.invalid");
799+ EnvVarGuard ev_guard(EnvVars::UBUNTU_SERVER_URL, "http://deadserver.invalid");
800
801 Thumbnailer tn;
802
803@@ -1032,8 +1032,8 @@
804 QCoreApplication app(argc, argv);
805 setenv("GSETTINGS_BACKEND", "memory", true);
806 setenv("GSETTINGS_SCHEMA_DIR", GSETTINGS_SCHEMA_DIR, true);
807- setenv(UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
808- setenv(UBUNTU_SERVER_URL, "http://127.0.0.1", true);
809+ setenv(EnvVars::UTIL_DIR, TESTBINDIR "/../src/vs-thumb", true);
810+ setenv(EnvVars::UBUNTU_SERVER_URL, "http://127.0.0.1", true);
811 ::testing::InitGoogleTest(&argc, argv);
812 return RUN_ALL_TESTS();
813 }
814
815=== modified file 'tests/utils/artserver.cpp'
816--- tests/utils/artserver.cpp 2016-01-11 08:20:51 +0000
817+++ tests/utils/artserver.cpp 2017-02-03 07:36:24 +0000
818@@ -79,7 +79,7 @@
819 {
820 qCritical() << "Failed to terminate fake art server";
821 }
822- unsetenv(unity::thumbnailer::internal::UBUNTU_SERVER_URL);
823+ unsetenv(unity::thumbnailer::internal::EnvVars::UBUNTU_SERVER_URL);
824 }
825
826 std::string const& ArtServer::server_url() const
827@@ -108,5 +108,5 @@
828
829 void ArtServer::update_env()
830 {
831- setenv(unity::thumbnailer::internal::UBUNTU_SERVER_URL, server_url().c_str(), true);
832+ setenv(unity::thumbnailer::internal::EnvVars::UBUNTU_SERVER_URL, server_url().c_str(), true);
833 }

Subscribers

People subscribed via source and target branches

to all changes: