on xenial help sign in
Fix tryShell to actually show appropriate backgrounds for each mock user.
c8a37b6Michael Terry
debian/rules+3−2
@@ -37,6 +37,7 @@ override_dh_installdeb:
37override_dh_makeshlibs:
37override_dh_makeshlibs:
38 dh_makeshlibs -Nunity8-private -Nunity8-fake-env
38 dh_makeshlibs -Nunity8-private -Nunity8-fake-env
39
39
40−# libMockLightDM-qml.so links against liblightdm-qt5-3.so which doesn't exist
41override_dh_shlibdeps:
40override_dh_shlibdeps:
41+ # Some mock libraries link against liblightdm-qt5-3.so which we want to
42+ # avoid, since we only really link against our mock one, not the system one.
42− dh_shlibdeps -XlibMockLightDM-qml.so
43+ dh_shlibdeps -XlibMockLightDM-qml.so -XlibMockAccountsService-qml.so
tests/CMakeLists.txt+8−13
@@ -37,27 +37,22 @@ set(UNITY_IMPORT_PATHS ${UNITY_IMPORT_PATHS} CACHE INTERNAL "")
37
37
38macro(unity8_parse_arguments)
38macro(unity8_parse_arguments)
39 cmake_parse_arguments(U8TEST
39 cmake_parse_arguments(U8TEST
40− "${QMLTEST_OPTIONS};LIGHTDM"
40+ "${QMLTEST_OPTIONS}"
41 "${QMLTEST_SINGLE}"
41 "${QMLTEST_SINGLE}"
42 "${QMLTEST_MULTI}"
42 "${QMLTEST_MULTI}"
43 ${ARGN}
43 ${ARGN}
44 )
44 )
45
45
46 set(ld_paths)
46 set(ld_paths)
47− if(U8TEST_LIGHTDM)
48− list(APPEND ld_paths
47+ list(APPEND ld_paths
49− ${UNITY_MOCKPATH}/libusermetrics
48+ ${UNITY_MOCKPATH}/libusermetrics
50− ${UNITY_MOCKPATH}/LightDM/IntegratedLightDM/liblightdm
49+ ${UNITY_MOCKPATH}/LightDM/IntegratedLightDM/liblightdm
51− )
50+ )
52− endif()
51+
53−
54− if(ld_paths)
55− string(REPLACE ";" ":" ld_library_path "${ld_paths}")
52+ string(REPLACE ";" ":" ld_library_path "${ld_paths}")
56− set(ld_library_path LD_LIBRARY_PATH=${ld_library_path})
53+ set(ld_library_path LD_LIBRARY_PATH=${ld_library_path})
57− endif()
58
54
59 set(U8TEST_ARGN "${ARGN}")
55 set(U8TEST_ARGN "${ARGN}")
60− list(REMOVE_ITEM U8TEST_ARGN LIGHTDM)
61
56
62 set(environment
57 set(environment
63 UNITY_TESTING=1
58 UNITY_TESTING=1
tests/mocks/AccountsService/AccountsService.cpp+19−3
@@ -15,7 +15,9 @@
15 */
15 */
16
16
17#include "AccountsService.h"
17#include "AccountsService.h"
18+#include "MockUsersModel.h"
18
19
20+#include <QLightDM/UsersModel>
19#include <paths.h>
21#include <paths.h>
20
22
21AccountsService::AccountsService(QObject* parent)
23AccountsService::AccountsService(QObject* parent)
@@ -23,15 +25,17 @@ AccountsService::AccountsService(QObject* parent)
23 m_enableFingerprintIdentification(true),
25 m_enableFingerprintIdentification(true),
24 m_enableLauncherWhileLocked(true),
26 m_enableLauncherWhileLocked(true),
25 m_enableIndicatorsWhileLocked(true),
27 m_enableIndicatorsWhileLocked(true),
26− m_backgroundFile(qmlDirectory() + "/graphics/phone_background.jpg"),
28+ m_backgroundFile(),
27 m_statsWelcomeScreen(true),
29 m_statsWelcomeScreen(true),
28 m_failedLogins(0),
30 m_failedLogins(0),
29 m_failedFingerprintLogins(0),
31 m_failedFingerprintLogins(0),
30 m_demoEdges(false),
32 m_demoEdges(false),
31 m_demoEdgesCompleted(),
33 m_demoEdgesCompleted(),
32 m_hereEnabled(false),
34 m_hereEnabled(false),
33− m_hereLicensePath("")
35+ m_hereLicensePath(""),
36+ m_usersModel(new MockUsersModel(this))
34{
37{
38+ m_usersModel->setMockMode("full");
35}
39}
36
40
37QString AccountsService::user() const
41QString AccountsService::user() const
@@ -44,6 +48,7 @@ void AccountsService::setUser(const QString &user)
44 m_user = user;
48 m_user = user;
45 Q_EMIT userChanged();
49 Q_EMIT userChanged();
46 Q_EMIT passwordDisplayHintChanged();
50 Q_EMIT passwordDisplayHintChanged();
51+ Q_EMIT backgroundFileChanged();
47}
52}
48
53
49bool AccountsService::demoEdges() const
54bool AccountsService::demoEdges() const
@@ -111,7 +116,18 @@ void AccountsService::setEnableIndicatorsWhileLocked(bool enableIndicatorsWhileL
111
116
112QString AccountsService::backgroundFile() const
117QString AccountsService::backgroundFile() const
113{
118{
119+ if (!m_backgroundFile.isEmpty()) {
114− return m_backgroundFile;
120+ return m_backgroundFile;
121+ }
122+
123+ // Check if our mock user has a background set in liblightdm
124+ for (int i = 0; i < m_usersModel->count(); i++) {
125+ if (m_usersModel->data(i, QLightDM::UsersModel::NameRole) == m_user) {
126+ return m_usersModel->data(i, QLightDM::UsersModel::BackgroundPathRole).toString();
127+ }
128+ }
129+
130+ return QString();
115}
131}
116
132
117void AccountsService::setBackgroundFile(const QString &backgroundFile)
133void AccountsService::setBackgroundFile(const QString &backgroundFile)
tests/mocks/AccountsService/AccountsService.h+3
@@ -22,6 +22,8 @@
22#include <QStringList>
22#include <QStringList>
23#include <QVariant>
23#include <QVariant>
24
24
25+class MockUsersModel;
26+
25class AccountsService: public QObject
27class AccountsService: public QObject
26{
28{
27 Q_OBJECT
29 Q_OBJECT
@@ -163,6 +165,7 @@ private:
163 QString m_realName;
165 QString m_realName;
164 QStringList m_kbdMap;
166 QStringList m_kbdMap;
165 QString m_email;
167 QString m_email;
168+ MockUsersModel *m_usersModel;
166};
169};
167
170
168#endif
171#endif
tests/mocks/AccountsService/CMakeLists.txt+14
@@ -1,10 +1,24 @@
1+include_directories(
2+ ${CMAKE_CURRENT_BINARY_DIR}
3+ ${CMAKE_SOURCE_DIR}/plugins/LightDM
4+ ${CMAKE_SOURCE_DIR}/plugins/Utils
5+ ${CMAKE_SOURCE_DIR}/tests/mocks/LightDM/IntegratedLightDM
6+ )
7+
1add_library(MockAccountsService-qml MODULE
8add_library(MockAccountsService-qml MODULE
9+ ${CMAKE_SOURCE_DIR}/plugins/LightDM/UsersModel.cpp
10+ ${CMAKE_SOURCE_DIR}/plugins/Utils/unitysortfilterproxymodelqml.cpp
11+ ${CMAKE_SOURCE_DIR}/tests/mocks/LightDM/IntegratedLightDM/MockUsersModel.cpp
2 AccountsService.cpp
12 AccountsService.cpp
3 plugin.cpp
13 plugin.cpp
4 )
14 )
5
15
6qt5_use_modules(MockAccountsService-qml DBus Qml)
16qt5_use_modules(MockAccountsService-qml DBus Qml)
7
17
18+target_link_libraries(MockAccountsService-qml
19+ MockLightDM
20+ )
21+
8add_unity8_mock(AccountsService 0.1 AccountsService
22add_unity8_mock(AccountsService 0.1 AccountsService
9 PREFIX mocks
23 PREFIX mocks
10 TARGETS MockAccountsService-qml
24 TARGETS MockAccountsService-qml
tests/mocks/LightDM/IntegratedLightDM/MockUsersModel.cpp+5
@@ -19,6 +19,11 @@
19#include <QLightDM/UsersModel>
19#include <QLightDM/UsersModel>
20#include <QSortFilterProxyModel>
20#include <QSortFilterProxyModel>
21
21
22+MockUsersModel::MockUsersModel(QObject* parent)
23+ : UsersModel(parent)
24+{
25+}
26+
22QString MockUsersModel::mockMode() const
27QString MockUsersModel::mockMode() const
23{
28{
24 QLightDM::UsersModel* qUsersModel =
29 QLightDM::UsersModel* qUsersModel =
tests/mocks/LightDM/IntegratedLightDM/MockUsersModel.h+2
@@ -27,6 +27,8 @@ class MockUsersModel : public UsersModel
27 Q_PROPERTY(QString mockMode READ mockMode WRITE setMockMode NOTIFY mockModeChanged)
27 Q_PROPERTY(QString mockMode READ mockMode WRITE setMockMode NOTIFY mockModeChanged)
28
28
29public:
29public:
30+ explicit MockUsersModel(QObject* parent=0);
31+
30 QString mockMode() const;
32 QString mockMode() const;
31 void setMockMode(QString mockMode);
33 void setMockMode(QString mockMode);
32
34
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+14−1
@@ -17,6 +17,8 @@
17#include "UsersModelPrivate.h"
17#include "UsersModelPrivate.h"
18#include "UsersModel.h"
18#include "UsersModel.h"
19
19
20+#include <QDir>
21+
20namespace QLightDM
22namespace QLightDM
21{
23{
22
24
@@ -53,6 +55,17 @@ void UsersModelPrivate::resetEntries()
53 entries[i].uid = i + 1;
55 entries[i].uid = i + 1;
54 }
56 }
55
57
58+ // Assign backgrounds
59+ QDir backgroundDir("/usr/share/backgrounds");
60+ QStringList backgrounds = backgroundDir.entryList(QDir::Files);
61+ if (!backgrounds.empty()) {
62+ for (int i = 0; i < entries.size(); i++) {
63+ if (entries[i].background.isNull()) {
64+ entries[i].background = backgroundDir.filePath(backgrounds[i % backgrounds.size()]);
65+ }
66+ }
67+ }
68+
56 q->endResetModel();
69 q->endResetModel();
57}
70}
58
71
@@ -96,7 +109,7 @@ void UsersModelPrivate::resetEntries_full()
96 { "wide-info-prompt", "Wide Info Prompt", 0, 0, false, false, "ubuntu", 0 },
109 { "wide-info-prompt", "Wide Info Prompt", 0, 0, false, false, "ubuntu", 0 },
97 { "multi-info-prompt", "Multi Info Prompt", 0, 0, false, false, "ubuntu", 0 },
110 { "multi-info-prompt", "Multi Info Prompt", 0, 0, false, false, "ubuntu", 0 },
98 { "long-name", "Long name (far far too long to fit, seriously this would never fit on the screen, you will never see this part of the name)", 0, 0, false, false, "ubuntu", 0 },
111 { "long-name", "Long name (far far too long to fit, seriously this would never fit on the screen, you will never see this part of the name)", 0, 0, false, false, "ubuntu", 0 },
99− { "color-background", "Color Background", "#dd4814", 0, false, false, "ubuntu", 0 },
112+ { "color-background", "Color Background", "#E95420", 0, false, false, "ubuntu", 0 },
100 // white and black are a bit redundant, but useful for manually testing if UI is still readable
113 // white and black are a bit redundant, but useful for manually testing if UI is still readable
101 { "white-background", "White Background", "#ffffff", 0, false, false, "ubuntu", 0 },
114 { "white-background", "White Background", "#ffffff", 0, false, false, "ubuntu", 0 },
102 { "black-background", "Black Background", "#000000", 0, false, false, "ubuntu", 0 },
115 { "black-background", "Black Background", "#000000", 0, false, false, "ubuntu", 0 },
tests/plugins/LightDM/IntegratedLightDM/CMakeLists.txt−3
@@ -26,7 +26,6 @@ add_unity8_uitest(GreeterDBus dbus-test-runner
26 ARGS --task $<TARGET_FILE:GreeterDBusTestExec>
26 ARGS --task $<TARGET_FILE:GreeterDBusTestExec>
27 DEPENDS MockLightDM
27 DEPENDS MockLightDM
28 IMPORT_PATHS ${UNITY_MOCKPATH}
28 IMPORT_PATHS ${UNITY_MOCKPATH}
29− LIGHTDM
30 )
29 )
31
30
32add_executable(GreeterPamTestExec
31add_executable(GreeterPamTestExec
@@ -63,7 +62,6 @@ target_include_directories(GreeterSessionsModelTestExec PUBLIC
63add_unity8_uitest(GreeterSessions GreeterSessionsModelTestExec
62add_unity8_uitest(GreeterSessions GreeterSessionsModelTestExec
64 ENVIRONMENT LIBLIGHTDM_MOCK_MODE=full
63 ENVIRONMENT LIBLIGHTDM_MOCK_MODE=full
65 DEPENDS MockLightDM
64 DEPENDS MockLightDM
66− LIGHTDM
67 )
65 )
68
66
69# UsersModelTest
67# UsersModelTest
@@ -87,7 +85,6 @@ target_include_directories(GreeterUsersModelTestExec PUBLIC
87add_unity8_uitest(GreeterUsers GreeterUsersModelTestExec
85add_unity8_uitest(GreeterUsers GreeterUsersModelTestExec
88 ENVIRONMENT LIBLIGHTDM_MOCK_MODE=full
86 ENVIRONMENT LIBLIGHTDM_MOCK_MODE=full
89 DEPENDS MockLightDM
87 DEPENDS MockLightDM
90− LIGHTDM
91 )
88 )
92
89
93add_executable(GreeterIntegratedTestExec
90add_executable(GreeterIntegratedTestExec
tests/plugins/LightDM/IntegratedLightDM/usersmodel.cpp+2−2
@@ -59,10 +59,10 @@ private Q_SLOTS:
59 void testMangleColor()
59 void testMangleColor()
60 {
60 {
61 QString background = getStringValue(sourceModel, "color-background", QLightDM::UsersModel::BackgroundPathRole);
61 QString background = getStringValue(sourceModel, "color-background", QLightDM::UsersModel::BackgroundPathRole);
62− QVERIFY(background == "#dd4814");
62+ QVERIFY(background == "#E95420");
63
63
64 background = getStringValue(model, "color-background", QLightDM::UsersModel::BackgroundPathRole);
64 background = getStringValue(model, "color-background", QLightDM::UsersModel::BackgroundPathRole);
65− QVERIFY(background == "data:image/svg+xml,<svg><rect width='100%' height='100%' fill='#dd4814'/></svg>");
65+ QVERIFY(background == "data:image/svg+xml,<svg><rect width='100%' height='100%' fill='#E95420'/></svg>");
66 }
66 }
67
67
68 void testMangleEmptyName()
68 void testMangleEmptyName()
tests/qmltests/CMakeLists.txt+10−10
@@ -1,14 +1,14 @@
1
1
2add_subdirectory(Components)
2add_subdirectory(Components)
3
3
4−add_unity8_qmltest(. OrientedShell LIGHTDM)
4+add_unity8_qmltest(. OrientedShell)
5add_unity8_qmltest(. DisabledScreenNotice)
5add_unity8_qmltest(. DisabledScreenNotice)
6−add_unity8_qmltest(. Shell LIGHTDM)
6+add_unity8_qmltest(. Shell)
7−add_unity8_qmltest(. ShellWithPin LIGHTDM)
7+add_unity8_qmltest(. ShellWithPin)
8add_unity8_qmltest(. DeviceConfiguration)
8add_unity8_qmltest(. DeviceConfiguration)
9add_unity8_qmltest(Components Background)
9add_unity8_qmltest(Components Background)
10add_unity8_qmltest(Components Carousel)
10add_unity8_qmltest(Components Carousel)
11−add_unity8_qmltest(Components Dialogs LIGHTDM)
11+add_unity8_qmltest(Components Dialogs)
12add_unity8_qmltest(Components DraggingArea)
12add_unity8_qmltest(Components DraggingArea)
13add_unity8_qmltest(Components LazyImage)
13add_unity8_qmltest(Components LazyImage)
14add_unity8_qmltest(Components Lockscreen)
14add_unity8_qmltest(Components Lockscreen)
@@ -25,7 +25,7 @@ add_unity8_qmltest(Components WallpaperResolver)
25add_unity8_qmltest(Components ZoomableImage)
25add_unity8_qmltest(Components ZoomableImage)
26add_unity8_qmltest(Dash Dash)
26add_unity8_qmltest(Dash Dash)
27add_unity8_qmltest(Dash DashContent)
27add_unity8_qmltest(Dash DashContent)
28−add_unity8_qmltest(Dash DashShell LIGHTDM)
28+add_unity8_qmltest(Dash DashShell)
29add_unity8_qmltest(Dash Card)
29add_unity8_qmltest(Dash Card)
30add_unity8_qmltest(Dash CardCarousel)
30add_unity8_qmltest(Dash CardCarousel)
31add_unity8_qmlbenchmark(Dash CardBenchmark 1000)
31add_unity8_qmlbenchmark(Dash CardBenchmark 1000)
@@ -66,10 +66,10 @@ add_unity8_qmltest(Dash/ScopeSettings ScopeSettingNumber)
66add_unity8_qmltest(Dash/ScopeSettings ScopeSettingString)
66add_unity8_qmltest(Dash/ScopeSettings ScopeSettingString)
67add_unity8_qmltest(Dash/ScopeSettings ScopeSettingsWidgetFactory)
67add_unity8_qmltest(Dash/ScopeSettings ScopeSettingsWidgetFactory)
68add_unity8_qmltest(Greeter Clock)
68add_unity8_qmltest(Greeter Clock)
69−add_unity8_qmltest(Greeter Greeter LIGHTDM)
69+add_unity8_qmltest(Greeter Greeter)
70−add_unity8_qmltest(Greeter Infographics LIGHTDM)
70+add_unity8_qmltest(Greeter Infographics)
71−add_unity8_qmltest(Greeter NarrowView LIGHTDM)
71+add_unity8_qmltest(Greeter NarrowView)
72−add_unity8_qmltest(Greeter WideView LIGHTDM)
72+add_unity8_qmltest(Greeter WideView)
73add_unity8_qmltest(Launcher Launcher)
73add_unity8_qmltest(Launcher Launcher)
74add_unity8_qmltest(Notifications Notifications)
74add_unity8_qmltest(Notifications Notifications)
75add_unity8_qmltest(Notifications VisualSnapDecisionsQueue)
75add_unity8_qmltest(Notifications VisualSnapDecisionsQueue)
@@ -94,6 +94,6 @@ add_unity8_qmltest(Stages SurfaceContainer)
94add_unity8_qmltest(Stages TabletStage)
94add_unity8_qmltest(Stages TabletStage)
95add_unity8_qmltest(Stages WindowResizeArea)
95add_unity8_qmltest(Stages WindowResizeArea)
96add_unity8_qmltest(Stages Splash)
96add_unity8_qmltest(Stages Splash)
97−add_unity8_qmltest(Tutorial Tutorial LIGHTDM)
97+add_unity8_qmltest(Tutorial Tutorial)
98add_unity8_qmltest(Wizard Wizard ENVIRONMENT "OXIDE_NO_SANDBOX=1")
98add_unity8_qmltest(Wizard Wizard ENVIRONMENT "OXIDE_NO_SANDBOX=1")
99add_unity8_qmltest(utils/Unity/Test UnityTest)
99add_unity8_qmltest(utils/Unity/Test UnityTest)