Changeset View
Changeset View
Standalone View
Standalone View
autotests/jobremotetest.cpp
Show First 20 Lines • Show All 200 Lines • ▼ Show 20 Line(s) | 191 | { | |||
---|---|---|---|---|---|
201 | connect(fileJob, &KIO::FileJob::data, | 201 | connect(fileJob, &KIO::FileJob::data, | ||
202 | this, &JobRemoteTest::slotFileJobData); | 202 | this, &JobRemoteTest::slotFileJobData); | ||
203 | connect(fileJob, &KIO::FileJob::open, | 203 | connect(fileJob, &KIO::FileJob::open, | ||
204 | this, &JobRemoteTest::slotFileJobOpen); | 204 | this, &JobRemoteTest::slotFileJobOpen); | ||
205 | connect(fileJob, &KIO::FileJob::written, | 205 | connect(fileJob, &KIO::FileJob::written, | ||
206 | this, &JobRemoteTest::slotFileJobWritten); | 206 | this, &JobRemoteTest::slotFileJobWritten); | ||
207 | connect(fileJob, &KIO::FileJob::position, | 207 | connect(fileJob, &KIO::FileJob::position, | ||
208 | this, &JobRemoteTest::slotFileJobPosition); | 208 | this, &JobRemoteTest::slotFileJobPosition); | ||
209 | connect(fileJob, SIGNAL(close(KIO::Job*)), | 209 | connect(fileJob, QOverload<KIO::Job*>::of(&KIO::FileJob::close), | ||
210 | this, SLOT(slotFileJobClose(KIO::Job*))); | 210 | this, &JobRemoteTest::slotFileJobClose); | ||
211 | m_result = -1; | 211 | m_result = -1; | ||
212 | m_closeSignalCalled = false; | ||||
212 | 213 | | |||
213 | enterLoop(); | 214 | enterLoop(); | ||
214 | QEXPECT_FAIL("", "Needs fixing in kio_file", Abort); | 215 | QEXPECT_FAIL("", "Needs fixing in kio_file", Abort); | ||
215 | QVERIFY(m_result == 0); // no error | 216 | QVERIFY(m_result == 0); // no error | ||
216 | 217 | | |||
217 | KIO::StoredTransferJob *getJob = KIO::storedGet(u, KIO::NoReload, KIO::HideProgressInfo); | 218 | KIO::StoredTransferJob *getJob = KIO::storedGet(u, KIO::NoReload, KIO::HideProgressInfo); | ||
218 | getJob->setUiDelegate(nullptr); | 219 | getJob->setUiDelegate(nullptr); | ||
219 | connect(getJob, &KJob::result, | 220 | connect(getJob, &KJob::result, | ||
220 | this, &JobRemoteTest::slotGetResult); | 221 | this, &JobRemoteTest::slotGetResult); | ||
221 | enterLoop(); | 222 | enterLoop(); | ||
222 | QCOMPARE(m_result, 0); // no error | 223 | QCOMPARE(m_result, 0); // no error | ||
224 | QVERIFY(m_closeSignalCalled); // close signal called. | ||||
223 | qDebug() << "m_data: " << m_data; | 225 | qDebug() << "m_data: " << m_data; | ||
224 | QCOMPARE(m_data, QByteArray("test....test....test....test....test....test....end")); | 226 | QCOMPARE(m_data, QByteArray("test....test....test....test....test....test....end")); | ||
225 | 227 | | |||
226 | } | 228 | } | ||
227 | 229 | | |||
228 | void JobRemoteTest::slotFileJobData(KIO::Job *job, const QByteArray &data) | 230 | void JobRemoteTest::slotFileJobData(KIO::Job *job, const QByteArray &data) | ||
229 | { | 231 | { | ||
230 | Q_UNUSED(job); | 232 | Q_UNUSED(job); | ||
Show All 37 Lines | 267 | { | |||
268 | const QByteArray data("test....end"); | 270 | const QByteArray data("test....end"); | ||
269 | fileJob->write(data); | 271 | fileJob->write(data); | ||
270 | 272 | | |||
271 | } | 273 | } | ||
272 | 274 | | |||
273 | void JobRemoteTest::slotFileJobClose(KIO::Job *job) | 275 | void JobRemoteTest::slotFileJobClose(KIO::Job *job) | ||
274 | { | 276 | { | ||
275 | Q_UNUSED(job); | 277 | Q_UNUSED(job); | ||
278 | m_closeSignalCalled = true; | ||||
276 | qDebug() << "+++++++++ closed"; | 279 | qDebug() << "+++++++++ closed"; | ||
277 | } | 280 | } | ||
278 | 281 | | |||
279 | //// | 282 | //// | ||
280 | 283 | | |||
281 | void JobRemoteTest::openFileReading() | 284 | void JobRemoteTest::openFileReading() | ||
282 | { | 285 | { | ||
283 | QUrl u(remoteTmpUrl()); | 286 | QUrl u(remoteTmpUrl()); | ||
Show All 27 Lines | |||||
311 | connect(fileJob, &KIO::FileJob::data, | 314 | connect(fileJob, &KIO::FileJob::data, | ||
312 | this, &JobRemoteTest::slotFileJob2Data); | 315 | this, &JobRemoteTest::slotFileJob2Data); | ||
313 | connect(fileJob, &KIO::FileJob::open, | 316 | connect(fileJob, &KIO::FileJob::open, | ||
314 | this, &JobRemoteTest::slotFileJob2Open); | 317 | this, &JobRemoteTest::slotFileJob2Open); | ||
315 | connect(fileJob, &KIO::FileJob::written, | 318 | connect(fileJob, &KIO::FileJob::written, | ||
316 | this, &JobRemoteTest::slotFileJob2Written); | 319 | this, &JobRemoteTest::slotFileJob2Written); | ||
317 | connect(fileJob, &KIO::FileJob::position, | 320 | connect(fileJob, &KIO::FileJob::position, | ||
318 | this, &JobRemoteTest::slotFileJob2Position); | 321 | this, &JobRemoteTest::slotFileJob2Position); | ||
319 | connect(fileJob, SIGNAL(close(KIO::Job*)), | 322 | connect(fileJob, QOverload<KIO::Job*>::of(&KIO::FileJob::close), | ||
320 | this, SLOT(slotFileJob2Close(KIO::Job*))); | 323 | this, &JobRemoteTest::slotFileJob2Close); | ||
321 | m_result = -1; | 324 | m_result = -1; | ||
325 | m_closeSignalCalled = false; | ||||
322 | 326 | | |||
323 | enterLoop(); | 327 | enterLoop(); | ||
324 | QVERIFY(m_result == 0); // no error | 328 | QVERIFY(m_result == 0); // no error | ||
329 | QVERIFY(m_closeSignalCalled); // close signal called. | ||||
325 | qDebug() << "resulting m_data: " << QString(m_data); | 330 | qDebug() << "resulting m_data: " << QString(m_data); | ||
326 | QCOMPARE(m_data, QByteArray("test5test4test3test2test1")); | 331 | QCOMPARE(m_data, QByteArray("test5test4test3test2test1")); | ||
327 | 332 | | |||
328 | } | 333 | } | ||
329 | 334 | | |||
330 | void JobRemoteTest::slotFileJob2Data(KIO::Job *job, const QByteArray &data) | 335 | void JobRemoteTest::slotFileJob2Data(KIO::Job *job, const QByteArray &data) | ||
331 | { | 336 | { | ||
332 | Q_UNUSED(job); | 337 | Q_UNUSED(job); | ||
Show All 36 Lines | 373 | { | |||
369 | Q_UNUSED(job); | 374 | Q_UNUSED(job); | ||
370 | qDebug() << "position : " << offset << " -> read (5)"; | 375 | qDebug() << "position : " << offset << " -> read (5)"; | ||
371 | fileJob->read(5); | 376 | fileJob->read(5); | ||
372 | } | 377 | } | ||
373 | 378 | | |||
374 | void JobRemoteTest::slotFileJob2Close(KIO::Job *job) | 379 | void JobRemoteTest::slotFileJob2Close(KIO::Job *job) | ||
375 | { | 380 | { | ||
376 | Q_UNUSED(job); | 381 | Q_UNUSED(job); | ||
382 | m_closeSignalCalled = true; | ||||
377 | qDebug() << "+++++++++ job2 closed"; | 383 | qDebug() << "+++++++++ job2 closed"; | ||
378 | } | 384 | } | ||
379 | 385 | | |||
380 | //// | 386 | //// | ||
381 | 387 | | |||
382 | void JobRemoteTest::slotMimetype(KIO::Job *job, const QString &type) | 388 | void JobRemoteTest::slotMimetype(KIO::Job *job, const QString &type) | ||
383 | { | 389 | { | ||
384 | QVERIFY(job != nullptr); | 390 | QVERIFY(job != nullptr); | ||
385 | m_mimetype = type; | 391 | m_mimetype = type; | ||
386 | } | 392 | } | ||
387 | 393 | | |||
394 | void JobRemoteTest::openFileRead0Bytes() | ||||
395 | { | ||||
396 | QUrl u(remoteTmpUrl()); | ||||
397 | u.setPath(u.path() + "openFileReading"); | ||||
398 | | ||||
399 | const QByteArray putData("Doesn't matter"); | ||||
400 | | ||||
401 | KIO::StoredTransferJob *putJob = KIO::storedPut(putData, | ||||
402 | u, | ||||
403 | 0600, KIO::Overwrite | KIO::HideProgressInfo | ||||
404 | ); | ||||
405 | | ||||
406 | quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch(); // Use second granularity, supported on all filesystems | ||||
407 | QDateTime mtime = QDateTime::fromSecsSinceEpoch(secsSinceEpoch - 30); // 30 seconds ago | ||||
408 | putJob->setModificationTime(mtime); | ||||
409 | putJob->setUiDelegate(nullptr); | ||||
410 | connect(putJob, &KJob::result, | ||||
411 | this, &JobRemoteTest::slotResult); | ||||
412 | m_result = -1; | ||||
413 | enterLoop(); | ||||
414 | QVERIFY(m_result == 0); // no error | ||||
415 | | ||||
416 | m_data = QByteArray(); | ||||
417 | | ||||
418 | fileJob = KIO::open(u, QIODevice::ReadOnly); | ||||
419 | | ||||
420 | fileJob->setUiDelegate(nullptr); | ||||
421 | connect(fileJob, &KJob::result, | ||||
422 | this, &JobRemoteTest::slotResult); | ||||
423 | connect(fileJob, &KIO::FileJob::data, | ||||
424 | this, &JobRemoteTest::slotFileJob3Data); | ||||
425 | connect(fileJob, &KIO::FileJob::open, | ||||
426 | this, &JobRemoteTest::slotFileJob3Open); | ||||
427 | // Can reuse this slot (it's a noop). | ||||
428 | connect(fileJob, &KIO::FileJob::written, | ||||
429 | this, &JobRemoteTest::slotFileJob2Written); | ||||
430 | connect(fileJob, &KIO::FileJob::position, | ||||
431 | this, &JobRemoteTest::slotFileJob3Position); | ||||
432 | // Can reuse this as well. | ||||
433 | connect(fileJob, QOverload<KIO::Job*>::of(&KIO::FileJob::close), | ||||
434 | this, &JobRemoteTest::slotFileJob3Close); | ||||
435 | m_result = -1; | ||||
436 | m_closeSignalCalled = false; | ||||
437 | | ||||
438 | enterLoop(); | ||||
439 | // Previously reading 0 bytes would cause both data() and error() being emitted... | ||||
440 | QVERIFY(m_result == 0); // no error | ||||
441 | QVERIFY(m_closeSignalCalled); // close signal called. | ||||
442 | } | ||||
443 | | ||||
444 | void JobRemoteTest::slotFileJob3Open(KIO::Job *job) | ||||
445 | { | ||||
446 | Q_UNUSED(job); | ||||
447 | fileJob->seek(0); | ||||
448 | } | ||||
449 | | ||||
450 | void JobRemoteTest::slotFileJob3Position(KIO::Job *job, KIO::filesize_t offset) | ||||
451 | { | ||||
452 | Q_UNUSED(job); | ||||
453 | qDebug() << "position : " << offset << " -> read (0)"; | ||||
454 | fileJob->read(0); | ||||
455 | } | ||||
456 | | ||||
457 | void JobRemoteTest::slotFileJob3Data(KIO::Job *job, const QByteArray& data) | ||||
458 | { | ||||
459 | Q_UNUSED(job); | ||||
460 | QVERIFY(data.isEmpty()); | ||||
461 | fileJob->close(); | ||||
462 | } | ||||
463 | | ||||
464 | void JobRemoteTest::slotFileJob3Close(KIO::Job *job) | ||||
465 | { | ||||
466 | Q_UNUSED(job); | ||||
467 | m_closeSignalCalled = true; | ||||
468 | qDebug() << "+++++++++ job2 closed"; | ||||
469 | } |