on xenial help sign in
Add test and guard against gsettings time being 0
173128dMichael Terry
qml/Greeter/Greeter.qml+5
@@ -189,6 +189,7 @@ Showable {
189
189
190 Timer {
190 Timer {
191 id: forcedDelayTimer
191 id: forcedDelayTimer
192+ objectName: "forcedDelayTimer"
192
193
193 // We use a short interval and check against the system wall clock
194 // We use a short interval and check against the system wall clock
194 // because we have to consider the case that the system is suspended
195 // because we have to consider the case that the system is suspended
@@ -242,6 +243,10 @@ Showable {
242 }
243 }
243
244
244 function checkForForcedDelay() {
245 function checkForForcedDelay() {
246+ if (greeterSettings.lockedOutTime === 0) {
247+ return;
248+ }
249+
245 delayTarget = new Date();
250 delayTarget = new Date();
246 delayTarget.setTime(greeterSettings.lockedOutTime + failedLoginsDelayMinutes * 60000);
251 delayTarget.setTime(greeterSettings.lockedOutTime + failedLoginsDelayMinutes * 60000);
247 triggered();
252 triggered();
tests/qmltests/Greeter/tst_Greeter.qml+14
@@ -458,6 +458,20 @@ Item {
458 compare(view.delayMinutes, greeter.failedLoginsDelayMinutes);
458 compare(view.delayMinutes, greeter.failedLoginsDelayMinutes);
459 }
459 }
460
460
461+ function test_forcedDelayWhileTimeChanges() {
462+ greeterSettings.lockedOutTime = new Date().getTime();
463+ resetLoader();
464+ view = findChild(greeter, "testView");
465+ verify(view.delayMinutes > 0);
466+
467+ // Fake a time change by moving lockedOutTime way forward so that
468+ // the greeter will think the wall clock is too early for some
469+ // reason (like NTP messing up).
470+ greeterSettings.lockedOutTime = new Date().getTime() + 6000000;
471+ wait(1000);
472+ compare(view.delayMinutes, 0);
473+ }
474+
461 function test_forcedDelayRoundTrip() {
475 function test_forcedDelayRoundTrip() {
462 greeter.failedLoginsDelayAttempts = 1;
476 greeter.failedLoginsDelayAttempts = 1;
463 greeter.failedLoginsDelayMinutes = 0.001; // make delay very short
477 greeter.failedLoginsDelayMinutes = 0.001; // make delay very short