on xenial help sign in
Simulate PAM delay when manually testing lockscreen
e12dc3dMichael Terry
cmake/modules/QmlTest.cmake+2−2
@@ -103,7 +103,7 @@ macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
103 endif()
103 endif()
104
104
105 set(qmltest_command
105 set(qmltest_command
106− env ${qmltest_ENVIRONMENT}
106+ env ${qmltest_ENVIRONMENT} UNITY_TESTING=1
107 ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
107 ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
108 ${qmltestrunner_imports}
108 ${qmltestrunner_imports}
109 ${ITERATIONS_STRING}
109 ${ITERATIONS_STRING}
@@ -117,7 +117,7 @@ macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
117 set(LD_PRELOAD_PATH "LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1")
117 set(LD_PRELOAD_PATH "LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1")
118 endif()
118 endif()
119 set(qmltest_xvfb_command
119 set(qmltest_xvfb_command
120− env ${qmltest_ENVIRONMENT} ${LD_PRELOAD_PATH}
120+ env ${qmltest_ENVIRONMENT} ${LD_PRELOAD_PATH} UNITY_TESTING=1
121 xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
121 xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
122 ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
122 ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
123 ${qmltestrunner_imports}
123 ${qmltestrunner_imports}
cmake/modules/autopilot.cmake+2−2
@@ -2,7 +2,7 @@ add_custom_target(autopilot)
2
2
3function(declare_autopilot_test TEST_NAME TEST_SUITE WORKING_DIR)
3function(declare_autopilot_test TEST_NAME TEST_SUITE WORKING_DIR)
4 add_custom_target(autopilot-${TEST_NAME}
4 add_custom_target(autopilot-${TEST_NAME}
5− COMMAND LANG=C QML2_IMPORT_PATH=${SHELL_INSTALL_QML}/mocks python3 -m autopilot.run run ${TEST_SUITE}
5+ COMMAND UNITY_TESTING=1 LANG=C QML2_IMPORT_PATH=${SHELL_INSTALL_QML}/mocks python3 -m autopilot.run run ${TEST_SUITE}
6 WORKING_DIRECTORY ${WORKING_DIR}
6 WORKING_DIRECTORY ${WORKING_DIR}
7 DEPENDS fake_install
7 DEPENDS fake_install
8 )
8 )
@@ -14,7 +14,7 @@ function(declare_autopilot_test TEST_NAME TEST_SUITE WORKING_DIR)
14 add_dependencies(autopilot autopilot-${TEST_NAME})
14 add_dependencies(autopilot autopilot-${TEST_NAME})
15
15
16 add_custom_target(autopilot2-${TEST_NAME}
16 add_custom_target(autopilot2-${TEST_NAME}
17− COMMAND LANG=C QML2_IMPORT_PATH=${SHELL_INSTALL_QML}/mocks python2 -m autopilot.run run ${TEST_SUITE}
17+ COMMAND UNITY_TESTING=1 LANG=C QML2_IMPORT_PATH=${SHELL_INSTALL_QML}/mocks python2 -m autopilot.run run ${TEST_SUITE}
18 WORKING_DIRECTORY ${WORKING_DIR}
18 WORKING_DIRECTORY ${WORKING_DIR}
19 DEPENDS fake_install
19 DEPENDS fake_install
20 )
20 )
tests/mocks/LightDM/full/GreeterPrivate.cpp+10
@@ -19,6 +19,9 @@
19#include "../Greeter.h"
19#include "../Greeter.h"
20#include "../GreeterPrivate.h"
20#include "../GreeterPrivate.h"
21
21
22+#include <QEventLoop>
23+#include <QTimer>
24+
22namespace QLightDM
25namespace QLightDM
23{
26{
24
27
@@ -69,6 +72,13 @@ void GreeterPrivate::handleRespond(const QString &response)
69{
72{
70 Q_Q(Greeter);
73 Q_Q(Greeter);
71
74
75+ if (qgetenv("UNITY_TESTING").isEmpty()) {
76+ // simulate PAM's delay
77+ QEventLoop loop;
78+ QTimer::singleShot(1000, &loop, SLOT(quit()));
79+ loop.exec();
80+ }
81+
72 if (authenticationUser == "no-response")
82 if (authenticationUser == "no-response")
73 return;
83 return;
74 else if (authenticationUser == "two-factor") {
84 else if (authenticationUser == "two-factor") {
tests/mocks/LightDM/single-passphrase/GreeterPrivate.cpp+8−5
@@ -19,7 +19,8 @@
19#include "../Greeter.h"
19#include "../Greeter.h"
20#include "../GreeterPrivate.h"
20#include "../GreeterPrivate.h"
21
21
22−#include <QDebug>
22+#include <QEventLoop>
23+#include <QTimer>
23
24
24namespace QLightDM
25namespace QLightDM
25{
26{
@@ -34,9 +35,6 @@ GreeterPrivate::GreeterPrivate(Greeter* parent)
34void GreeterPrivate::handleAuthenticate()
35void GreeterPrivate::handleAuthenticate()
35{
36{
36 Q_Q(Greeter);
37 Q_Q(Greeter);
37−
38− qDebug() << "handleAuthentication called!" << authenticationUser;
39−
40 Q_EMIT q->showPrompt("Password:", Greeter::PromptTypeSecret);
38 Q_EMIT q->showPrompt("Password:", Greeter::PromptTypeSecret);
41}
39}
42
40
@@ -44,9 +42,14 @@ void GreeterPrivate::handleRespond(const QString &response)
44{
42{
45 Q_Q(Greeter);
43 Q_Q(Greeter);
46
44
45+ if (qgetenv("UNITY_TESTING").isEmpty()) {
46+ // simulate PAM's delay
47+ QEventLoop loop;
48+ QTimer::singleShot(1000, &loop, SLOT(quit()));
49+ loop.exec();
50+ }
47
51
48 authenticated = (response == "password");
52 authenticated = (response == "password");
49− qDebug() << "responding" << response << authenticated;
50 Q_EMIT q->authenticationComplete();
53 Q_EMIT q->authenticationComplete();
51}
54}
52
55
tests/mocks/LightDM/single-pin/GreeterPrivate.cpp+11
@@ -19,6 +19,9 @@
19#include "../Greeter.h"
19#include "../Greeter.h"
20#include "../GreeterPrivate.h"
20#include "../GreeterPrivate.h"
21
21
22+#include <QEventLoop>
23+#include <QTimer>
24+
22namespace QLightDM
25namespace QLightDM
23{
26{
24
27
@@ -38,6 +41,14 @@ void GreeterPrivate::handleAuthenticate()
38void GreeterPrivate::handleRespond(const QString &response)
41void GreeterPrivate::handleRespond(const QString &response)
39{
42{
40 Q_Q(Greeter);
43 Q_Q(Greeter);
44+
45+ if (qgetenv("UNITY_TESTING").isEmpty()) {
46+ // simulate PAM's delay
47+ QEventLoop loop;
48+ QTimer::singleShot(1000, &loop, SLOT(quit()));
49+ loop.exec();
50+ }
51+
41 authenticated = (response == "1234");
52 authenticated = (response == "1234");
42 Q_EMIT q->authenticationComplete();
53 Q_EMIT q->authenticationComplete();
43}
54}