Changeset View
Changeset View
Standalone View
Standalone View
autotests/jobtest.cpp
Show All 36 Lines | |||||
37 | 37 | | |||
38 | #include <kmountpoint.h> | 38 | #include <kmountpoint.h> | ||
39 | #include <kprotocolinfo.h> | 39 | #include <kprotocolinfo.h> | ||
40 | #include <kio/scheduler.h> | 40 | #include <kio/scheduler.h> | ||
41 | #include <kio/directorysizejob.h> | 41 | #include <kio/directorysizejob.h> | ||
42 | #include <kio/copyjob.h> | 42 | #include <kio/copyjob.h> | ||
43 | #include <kio/deletejob.h> | 43 | #include <kio/deletejob.h> | ||
44 | #include <kio/chmodjob.h> | 44 | #include <kio/chmodjob.h> | ||
45 | #include <kio/statjob.h> | ||||
45 | #include "kiotesthelper.h" // createTestFile etc. | 46 | #include "kiotesthelper.h" // createTestFile etc. | ||
46 | #ifndef Q_OS_WIN | 47 | #ifndef Q_OS_WIN | ||
47 | #include <unistd.h> // for readlink | 48 | #include <unistd.h> // for readlink | ||
48 | #endif | 49 | #endif | ||
49 | 50 | | |||
50 | QTEST_MAIN(JobTest) | 51 | QTEST_MAIN(JobTest) | ||
51 | 52 | | |||
52 | // The code comes partly from kdebase/kioslave/trash/testtrash.cpp | 53 | // The code comes partly from kdebase/kioslave/trash/testtrash.cpp | ||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Line(s) | 109 | { | |||
109 | QEventLoop eventLoop; | 110 | QEventLoop eventLoop; | ||
110 | connect(this, &JobTest::exitLoop, | 111 | connect(this, &JobTest::exitLoop, | ||
111 | &eventLoop, &QEventLoop::quit); | 112 | &eventLoop, &QEventLoop::quit); | ||
112 | eventLoop.exec(QEventLoop::ExcludeUserInputEvents); | 113 | eventLoop.exec(QEventLoop::ExcludeUserInputEvents); | ||
113 | } | 114 | } | ||
114 | 115 | | |||
115 | void JobTest::storedGet() | 116 | void JobTest::storedGet() | ||
116 | { | 117 | { | ||
117 | qDebug(); | 118 | // qDebug(); | ||
118 | const QString filePath = homeTmpDir() + "fileFromHome"; | 119 | const QString filePath = homeTmpDir() + "fileFromHome"; | ||
119 | createTestFile(filePath); | 120 | createTestFile(filePath); | ||
120 | QUrl u = QUrl::fromLocalFile(filePath); | 121 | QUrl u = QUrl::fromLocalFile(filePath); | ||
121 | m_result = -1; | 122 | m_result = -1; | ||
122 | 123 | | |||
123 | KIO::StoredTransferJob *job = KIO::storedGet(u, KIO::NoReload, KIO::HideProgressInfo); | 124 | KIO::StoredTransferJob *job = KIO::storedGet(u, KIO::NoReload, KIO::HideProgressInfo); | ||
124 | QSignalSpy spyPercent(job, SIGNAL(percent(KJob*,ulong))); | 125 | QSignalSpy spyPercent(job, SIGNAL(percent(KJob*,ulong))); | ||
125 | QVERIFY(spyPercent.isValid()); | 126 | QVERIFY(spyPercent.isValid()); | ||
▲ Show 20 Lines • Show All 468 Lines • ▼ Show 20 Line(s) | 594 | { | |||
594 | const QString filePath = homeTmpDir() + "fileFromHome"; | 595 | const QString filePath = homeTmpDir() + "fileFromHome"; | ||
595 | const QString dest = homeTmpDir() + "fileFromHome_copied"; | 596 | const QString dest = homeTmpDir() + "fileFromHome_copied"; | ||
596 | createTestFile(filePath); | 597 | createTestFile(filePath); | ||
597 | copyLocalFile(filePath, dest); | 598 | copyLocalFile(filePath, dest); | ||
598 | } | 599 | } | ||
599 | 600 | | |||
600 | void JobTest::copyDirectoryToSamePartition() | 601 | void JobTest::copyDirectoryToSamePartition() | ||
601 | { | 602 | { | ||
602 | qDebug(); | 603 | // qDebug(); | ||
603 | const QString src = homeTmpDir() + "dirFromHome"; | 604 | const QString src = homeTmpDir() + "dirFromHome"; | ||
604 | const QString dest = homeTmpDir() + "dirFromHome_copied"; | 605 | const QString dest = homeTmpDir() + "dirFromHome_copied"; | ||
605 | createTestDirectory(src); | 606 | createTestDirectory(src); | ||
606 | copyLocalDirectory(src, dest); | 607 | copyLocalDirectory(src, dest); | ||
607 | } | 608 | } | ||
608 | 609 | | |||
609 | void JobTest::copyDirectoryToExistingDirectory() | 610 | void JobTest::copyDirectoryToExistingDirectory() | ||
610 | { | 611 | { | ||
611 | qDebug(); | 612 | // qDebug(); | ||
612 | // just the same as copyDirectoryToSamePartition, but this time dest exists. | 613 | // just the same as copyDirectoryToSamePartition, but this time dest exists. | ||
613 | // So we get a subdir, "dirFromHome_copy/dirFromHome" | 614 | // So we get a subdir, "dirFromHome_copy/dirFromHome" | ||
614 | const QString src = homeTmpDir() + "dirFromHome"; | 615 | const QString src = homeTmpDir() + "dirFromHome"; | ||
615 | const QString dest = homeTmpDir() + "dirFromHome_copied"; | 616 | const QString dest = homeTmpDir() + "dirFromHome_copied"; | ||
616 | createTestDirectory(src); | 617 | createTestDirectory(src); | ||
617 | createTestDirectory(dest); | 618 | createTestDirectory(dest); | ||
618 | copyLocalDirectory(src, dest, AlreadyExists); | 619 | copyLocalDirectory(src, dest, AlreadyExists); | ||
619 | } | 620 | } | ||
620 | 621 | | |||
621 | void JobTest::copyFileToOtherPartition() | 622 | void JobTest::copyFileToOtherPartition() | ||
622 | { | 623 | { | ||
623 | qDebug(); | 624 | // qDebug(); | ||
624 | const QString filePath = homeTmpDir() + "fileFromHome"; | 625 | const QString filePath = homeTmpDir() + "fileFromHome"; | ||
625 | const QString dest = otherTmpDir() + "fileFromHome_copied"; | 626 | const QString dest = otherTmpDir() + "fileFromHome_copied"; | ||
626 | createTestFile(filePath); | 627 | createTestFile(filePath); | ||
627 | copyLocalFile(filePath, dest); | 628 | copyLocalFile(filePath, dest); | ||
628 | } | 629 | } | ||
629 | 630 | | |||
630 | void JobTest::copyDirectoryToOtherPartition() | 631 | void JobTest::copyDirectoryToOtherPartition() | ||
631 | { | 632 | { | ||
632 | qDebug(); | 633 | // qDebug(); | ||
633 | const QString src = homeTmpDir() + "dirFromHome"; | 634 | const QString src = homeTmpDir() + "dirFromHome"; | ||
634 | const QString dest = otherTmpDir() + "dirFromHome_copied"; | 635 | const QString dest = otherTmpDir() + "dirFromHome_copied"; | ||
635 | createTestDirectory(src); | 636 | createTestDirectory(src); | ||
636 | copyLocalDirectory(src, dest); | 637 | copyLocalDirectory(src, dest); | ||
637 | } | 638 | } | ||
638 | 639 | | |||
639 | void JobTest::copyRelativeSymlinkToSamePartition() // #352927 | 640 | void JobTest::copyRelativeSymlinkToSamePartition() // #352927 | ||
640 | { | 641 | { | ||
Show All 30 Lines | 670 | #endif | |||
671 | const QString dst_dir = homeTmpDir() + "dstHome"; | 672 | const QString dst_dir = homeTmpDir() + "dstHome"; | ||
672 | 673 | | |||
673 | QDir().remove(src_dir); | 674 | QDir().remove(src_dir); | ||
674 | QDir().remove(dst_dir); | 675 | QDir().remove(dst_dir); | ||
675 | 676 | | |||
676 | createTestDirectory(src_dir); | 677 | createTestDirectory(src_dir); | ||
677 | createTestDirectory(src_dir + "/folder1"); | 678 | createTestDirectory(src_dir + "/folder1"); | ||
678 | QString inaccessible = src_dir + "/folder1/inaccessible"; | 679 | QString inaccessible = src_dir + "/folder1/inaccessible"; | ||
680 | | ||||
679 | createTestDirectory(inaccessible); | 681 | createTestDirectory(inaccessible); | ||
680 | 682 | | |||
681 | QFile(inaccessible).setPermissions(QFile::Permissions()); // Make it inaccessible | 683 | QFile(inaccessible).setPermissions(QFile::Permissions()); // Make it inaccessible | ||
682 | //Copying should throw some warnings, as it cannot access some folders | 684 | //Copying should throw some warnings, as it cannot access some folders | ||
683 | 685 | | |||
684 | KIO::CopyJob *job = KIO::copy(QUrl::fromLocalFile(src_dir), QUrl::fromLocalFile(dst_dir), KIO::HideProgressInfo); | 686 | KIO::CopyJob *job = KIO::copy(QUrl::fromLocalFile(src_dir), QUrl::fromLocalFile(dst_dir), KIO::HideProgressInfo); | ||
685 | 687 | | |||
686 | QSignalSpy spy(job, SIGNAL(warning(KJob*,QString,QString))); | 688 | QSignalSpy spy(job, SIGNAL(warning(KJob*,QString,QString))); | ||
▲ Show 20 Lines • Show All 689 Lines • ▼ Show 20 Line(s) | |||||
1376 | { | 1378 | { | ||
1377 | #if 1 | 1379 | #if 1 | ||
1378 | const QString filePath = homeTmpDir() + "fileFromHome"; | 1380 | const QString filePath = homeTmpDir() + "fileFromHome"; | ||
1379 | createTestFile(filePath); | 1381 | createTestFile(filePath); | ||
1380 | const QUrl url(QUrl::fromLocalFile(filePath)); | 1382 | const QUrl url(QUrl::fromLocalFile(filePath)); | ||
1381 | KIO::StatJob *job = KIO::stat(url, KIO::HideProgressInfo); | 1383 | KIO::StatJob *job = KIO::stat(url, KIO::HideProgressInfo); | ||
1382 | QVERIFY(job); | 1384 | QVERIFY(job); | ||
1383 | QVERIFY2(job->exec(), qPrintable(job->errorString())); | 1385 | QVERIFY2(job->exec(), qPrintable(job->errorString())); | ||
1384 | // TODO set setSide, setDetails | 1386 | // TODO set setSide | ||
1385 | const KIO::UDSEntry &entry = job->statResult(); | 1387 | const KIO::UDSEntry &entry = job->statResult(); | ||
1388 | | ||||
1389 | // we only get filename, access, type, size, uid, gid, btime, mtime, atime | ||||
1390 | QCOMPARE(entry.count(), 9); | ||||
1391 | | ||||
1386 | QVERIFY(!entry.isDir()); | 1392 | QVERIFY(!entry.isDir()); | ||
1387 | QVERIFY(!entry.isLink()); | 1393 | QVERIFY(!entry.isLink()); | ||
1388 | QCOMPARE(entry.stringValue(KIO::UDSEntry::UDS_NAME), QStringLiteral("fileFromHome")); | 1394 | QCOMPARE(entry.stringValue(KIO::UDSEntry::UDS_NAME), QStringLiteral("fileFromHome")); | ||
1389 | 1395 | | |||
1390 | // Compare what we get via kio_file and what we get when KFileItem stat()s directly | 1396 | // Compare what we get via kio_file and what we get when KFileItem stat()s directly | ||
1391 | const KFileItem kioItem(entry, url); | 1397 | const KFileItem kioItem(entry, url); | ||
1392 | const KFileItem fileItem(url); | 1398 | const KFileItem fileItem(url); | ||
1393 | QCOMPARE(kioItem.name(), fileItem.name()); | 1399 | QCOMPARE(kioItem.name(), fileItem.name()); | ||
Show All 14 Lines | 1409 | #else | |||
1408 | // TODO set setSide, setDetails | 1414 | // TODO set setSide, setDetails | ||
1409 | const KIO::UDSEntry &entry = job->statResult(); | 1415 | const KIO::UDSEntry &entry = job->statResult(); | ||
1410 | QVERIFY(!entry.isDir()); | 1416 | QVERIFY(!entry.isDir()); | ||
1411 | QVERIFY(!entry.isLink()); | 1417 | QVERIFY(!entry.isLink()); | ||
1412 | QCOMPARE(entry.stringValue(KIO::UDSEntry::UDS_NAME), QString()); | 1418 | QCOMPARE(entry.stringValue(KIO::UDSEntry::UDS_NAME), QString()); | ||
1413 | #endif | 1419 | #endif | ||
1414 | } | 1420 | } | ||
1415 | 1421 | | |||
1422 | void JobTest::statDetailsBasic() | ||||
1423 | { | ||||
1424 | const QString filePath = homeTmpDir() + "fileFromHome"; | ||||
1425 | createTestFile(filePath); | ||||
1426 | const QUrl url(QUrl::fromLocalFile(filePath)); | ||||
1427 | KIO::StatJob *job = KIO::statDetails(url, KIO::StatJob::StatSide::SourceSide, KIO::StatDetail::Basic, KIO::HideProgressInfo); | ||||
1428 | QVERIFY(job); | ||||
1429 | QVERIFY2(job->exec(), qPrintable(job->errorString())); | ||||
1430 | // TODO set setSide | ||||
1431 | const KIO::UDSEntry &entry = job->statResult(); | ||||
1432 | | ||||
1433 | // we only get filename, access, type, size, (no linkdest) | ||||
1434 | QCOMPARE(entry.count(), 4); | ||||
1435 | | ||||
1436 | QVERIFY(!entry.isDir()); | ||||
1437 | QVERIFY(!entry.isLink()); | ||||
1438 | QVERIFY(entry.numberValue(KIO::UDSEntry::UDS_ACCESS) > 0); | ||||
1439 | QCOMPARE(entry.stringValue(KIO::UDSEntry::UDS_NAME), QStringLiteral("fileFromHome")); | ||||
1440 | | ||||
1441 | // Compare what we get via kio_file and what we get when KFileItem stat()s directly | ||||
1442 | // for the requested fields | ||||
1443 | const KFileItem kioItem(entry, url); | ||||
1444 | const KFileItem fileItem(url); | ||||
1445 | QCOMPARE(kioItem.name(), fileItem.name()); | ||||
1446 | QCOMPARE(kioItem.url(), fileItem.url()); | ||||
1447 | QCOMPARE(kioItem.size(), fileItem.size()); | ||||
1448 | QCOMPARE(kioItem.user(), ""); | ||||
1449 | QCOMPARE(kioItem.group(), ""); | ||||
1450 | QCOMPARE(kioItem.mimetype(), "application/octet-stream"); | ||||
1451 | QCOMPARE(kioItem.permissions(), 438); | ||||
1452 | QCOMPARE(kioItem.time(KFileItem::ModificationTime), QDateTime()); | ||||
1453 | QCOMPARE(kioItem.time(KFileItem::AccessTime), QDateTime()); | ||||
1454 | } | ||||
1455 | | ||||
1456 | void JobTest::statDetailsBasicSetDetails() | ||||
1457 | { | ||||
1458 | const QString filePath = homeTmpDir() + "fileFromHome"; | ||||
1459 | createTestFile(filePath); | ||||
1460 | const QUrl url(QUrl::fromLocalFile(filePath)); | ||||
1461 | KIO::StatJob *job = KIO::stat(url); | ||||
1462 | job->setDetails(KIO::StatDetail::Basic); | ||||
1463 | QVERIFY(job); | ||||
1464 | QVERIFY2(job->exec(), qPrintable(job->errorString())); | ||||
1465 | // TODO set setSide | ||||
1466 | const KIO::UDSEntry &entry = job->statResult(); | ||||
1467 | | ||||
1468 | // we only get filename, access, type, size, (no linkdest) | ||||
1469 | QCOMPARE(entry.count(), 4); | ||||
1470 | | ||||
1471 | QVERIFY(!entry.isDir()); | ||||
1472 | QVERIFY(!entry.isLink()); | ||||
1473 | QVERIFY(entry.numberValue(KIO::UDSEntry::UDS_ACCESS) > 0); | ||||
1474 | QCOMPARE(entry.stringValue(KIO::UDSEntry::UDS_NAME), QStringLiteral("fileFromHome")); | ||||
1475 | | ||||
1476 | // Compare what we get via kio_file and what we get when KFileItem stat()s directly | ||||
1477 | // for the requested fields | ||||
1478 | const KFileItem kioItem(entry, url); | ||||
1479 | const KFileItem fileItem(url); | ||||
1480 | QCOMPARE(kioItem.name(), fileItem.name()); | ||||
1481 | QCOMPARE(kioItem.url(), fileItem.url()); | ||||
1482 | QCOMPARE(kioItem.size(), fileItem.size()); | ||||
1483 | QCOMPARE(kioItem.user(), ""); | ||||
1484 | QCOMPARE(kioItem.group(), ""); | ||||
1485 | QCOMPARE(kioItem.mimetype(), "application/octet-stream"); | ||||
1486 | QCOMPARE(kioItem.permissions(), 438); | ||||
1487 | QCOMPARE(kioItem.time(KFileItem::ModificationTime), QDateTime()); | ||||
1488 | QCOMPARE(kioItem.time(KFileItem::AccessTime), QDateTime()); | ||||
1489 | } | ||||
1490 | | ||||
1416 | #ifndef Q_OS_WIN | 1491 | #ifndef Q_OS_WIN | ||
1417 | void JobTest::statSymlink() | 1492 | void JobTest::statSymlink() | ||
1418 | { | 1493 | { | ||
1419 | const QString filePath = homeTmpDir() + "fileFromHome"; | 1494 | const QString filePath = homeTmpDir() + "fileFromHome"; | ||
1420 | createTestFile(filePath); | 1495 | createTestFile(filePath); | ||
1421 | const QString symlink = otherTmpDir() + "link"; | 1496 | const QString symlink = otherTmpDir() + "link"; | ||
1422 | QVERIFY(QFile(filePath).link(symlink)); | 1497 | QVERIFY(QFile(filePath).link(symlink)); | ||
1423 | QVERIFY(QFile::exists(symlink)); | 1498 | QVERIFY(QFile::exists(symlink)); | ||
1424 | setTimeStamp(symlink, QDateTime::currentDateTime().addSecs(-20)); // differentiate link time and source file time | 1499 | setTimeStamp(symlink, QDateTime::currentDateTime().addSecs(-20)); // differentiate link time and source file time | ||
1425 | 1500 | | |||
1426 | const QUrl url(QUrl::fromLocalFile(symlink)); | 1501 | const QUrl url(QUrl::fromLocalFile(symlink)); | ||
1427 | KIO::StatJob *job = KIO::stat(url, KIO::HideProgressInfo); | 1502 | KIO::StatJob *job = KIO::statDetails(url, KIO::StatJob::StatSide::SourceSide, | ||
1503 | KIO::StatDetail::Basic | KIO::StatDetail::ResolveSymlink | KIO::StatDetail::User | KIO::StatDetail::Time, | ||||
1504 | KIO::HideProgressInfo); | ||||
1428 | QVERIFY(job); | 1505 | QVERIFY(job); | ||
1429 | QVERIFY2(job->exec(), qPrintable(job->errorString())); | 1506 | QVERIFY2(job->exec(), qPrintable(job->errorString())); | ||
1430 | // TODO set setSide, setDetails | 1507 | // TODO set setSide, setDetails | ||
1431 | const KIO::UDSEntry &entry = job->statResult(); | 1508 | const KIO::UDSEntry &entry = job->statResult(); | ||
1509 | | ||||
1510 | // we only get filename, access, type, size, linkdest, uid, gid, btime, mtime, atime | ||||
1511 | QCOMPARE(entry.count(), 10); | ||||
1512 | | ||||
1432 | QVERIFY(!entry.isDir()); | 1513 | QVERIFY(!entry.isDir()); | ||
1433 | QVERIFY(entry.isLink()); | 1514 | QVERIFY(entry.isLink()); | ||
1515 | QVERIFY(entry.numberValue(KIO::UDSEntry::UDS_ACCESS) > 0); | ||||
1434 | QCOMPARE(entry.stringValue(KIO::UDSEntry::UDS_NAME), QStringLiteral("link")); | 1516 | QCOMPARE(entry.stringValue(KIO::UDSEntry::UDS_NAME), QStringLiteral("link")); | ||
1435 | 1517 | | |||
1436 | // Compare what we get via kio_file and what we get when KFileItem stat()s directly | 1518 | // Compare what we get via kio_file and what we get when KFileItem stat()s directly | ||
1437 | const KFileItem kioItem(entry, url); | 1519 | const KFileItem kioItem(entry, url); | ||
1438 | const KFileItem fileItem(url); | 1520 | const KFileItem fileItem(url); | ||
1439 | QCOMPARE(kioItem.name(), fileItem.name()); | 1521 | QCOMPARE(kioItem.name(), fileItem.name()); | ||
1440 | QCOMPARE(kioItem.url(), fileItem.url()); | 1522 | QCOMPARE(kioItem.url(), fileItem.url()); | ||
1441 | QVERIFY(kioItem.isLink()); | 1523 | QVERIFY(kioItem.isLink()); | ||
▲ Show 20 Lines • Show All 688 Lines • Show Last 20 Lines |