static void testCopyTo( KArchive* archive ) { const KArchiveDirectory* dir = archive->directory(); KTempDir tmpDir; const QString dirName = tmpDir.name(); dir->copyTo( dirName ); QVERIFY(QFile::exists(dirName+"dir")); QVERIFY(QFileInfo(dirName+"dir").isDir()); QFileInfo fileInfo1(dirName+"dir/subdir/mediumfile2"); QVERIFY(fileInfo1.exists()); QVERIFY(fileInfo1.isFile()); QCOMPARE(fileInfo1.size(), Q_INT64_C(100)); QFileInfo fileInfo2(dirName+"hugefile"); QVERIFY(fileInfo2.exists()); QVERIFY(fileInfo2.isFile()); QCOMPARE(fileInfo2.size(), Q_INT64_C(20000)); QFileInfo fileInfo3(dirName+"mediumfile"); QVERIFY(fileInfo3.exists()); QVERIFY(fileInfo3.isFile()); QCOMPARE(fileInfo3.size(), Q_INT64_C(100)); QFileInfo fileInfo4(dirName+"my/dir/test3"); QVERIFY(fileInfo4.exists()); QVERIFY(fileInfo4.isFile()); QCOMPARE(fileInfo4.size(), Q_INT64_C(29)); #ifndef Q_OS_WIN const QString fileName = dirName+"z/test3_symlink"; const QFileInfo fileInfo5(fileName); QVERIFY(fileInfo5.exists()); QVERIFY(fileInfo5.isFile()); // Do not use fileInfo.readLink() for unix symlinks // It returns the -full- path to the target, while we want the target string "as is". QString symLinkTarget; const QByteArray encodedFileName = QFile::encodeName(fileName); QByteArray s; #if defined(PATH_MAX) s.resize(PATH_MAX+1); #else int path_max = pathconf(encodedFileName.data(), _PC_PATH_MAX); if (path_max <= 0) { path_max = 4096; } s.resize(path_max); #endif int len = readlink(encodedFileName.data(), s.data(), s.size() - 1); if ( len >= 0 ) { s[len] = '\0'; symLinkTarget = QFile::decodeName(s); } QCOMPARE(symLinkTarget, QString("test3")); #endif }
int main(int argc, char *argv[]) { QApplication app(argc, argv); //! [0] QFileInfo fileInfo1("~/examples/191697/."); QFileInfo fileInfo2("~/examples/191697/.."); QFileInfo fileInfo3("~/examples/191697/main.cpp"); //! [0] //! [1] QFileInfo fileInfo4("."); QFileInfo fileInfo5(".."); QFileInfo fileInfo6("main.cpp"); //! [1] qDebug() << fileInfo1.fileName(); qDebug() << fileInfo2.fileName(); qDebug() << fileInfo3.fileName(); qDebug() << fileInfo4.fileName(); qDebug() << fileInfo5.fileName(); qDebug() << fileInfo6.fileName(); QPushButton* button1 = new QPushButton(fileInfo1.dir().path()); QPushButton* button2 = new QPushButton(fileInfo2.dir().path()); QPushButton* button3 = new QPushButton(fileInfo3.dir().path()); QPushButton* button4 = new QPushButton(fileInfo4.dir().path()); QPushButton* button5 = new QPushButton(fileInfo5.dir().path()); QPushButton* button6 = new QPushButton(fileInfo6.dir().path()); QVBoxLayout* vbox = new QVBoxLayout; vbox->addWidget(button1); vbox->addWidget(button2); vbox->addWidget(button3); vbox->addWidget(button4); vbox->addWidget(button5); vbox->addWidget(button6); vbox->addStretch(1); QGroupBox *groupBox = new QGroupBox("QFileInfo::dir() test"); groupBox->setLayout(vbox); groupBox->show(); return app.exec(); }
static void testCopyTo(KArchive *archive) { const KArchiveDirectory *dir = archive->directory(); QTemporaryDir tmpDir; const QString dirName = tmpDir.path() + '/'; QVERIFY(dir->copyTo(dirName)); QVERIFY(QFile::exists(dirName + "dir")); QVERIFY(QFileInfo(dirName + "dir").isDir()); QFileInfo fileInfo1(dirName + "dir/subdir/mediumfile2"); QVERIFY(fileInfo1.exists()); QVERIFY(fileInfo1.isFile()); QCOMPARE(fileInfo1.size(), Q_INT64_C(100)); QFileInfo fileInfo2(dirName + "hugefile"); QVERIFY(fileInfo2.exists()); QVERIFY(fileInfo2.isFile()); QCOMPARE(fileInfo2.size(), Q_INT64_C(20000)); QFileInfo fileInfo3(dirName + "mediumfile"); QVERIFY(fileInfo3.exists()); QVERIFY(fileInfo3.isFile()); QCOMPARE(fileInfo3.size(), Q_INT64_C(100)); QFileInfo fileInfo4(dirName + "my/dir/test3"); QVERIFY(fileInfo4.exists()); QVERIFY(fileInfo4.isFile()); QCOMPARE(fileInfo4.size(), Q_INT64_C(28)); #ifndef Q_OS_WIN const QString fileName = dirName + "z/test3_symlink"; const QFileInfo fileInfo5(fileName); QVERIFY(fileInfo5.exists()); QVERIFY(fileInfo5.isFile()); // Do not use fileInfo.readLink() for unix symlinks // It returns the -full- path to the target, while we want the target string "as is". QString symLinkTarget; const QByteArray encodedFileName = QFile::encodeName(fileName); QByteArray s; #if defined(PATH_MAX) s.resize(PATH_MAX + 1); #else int path_max = pathconf(encodedFileName.data(), _PC_PATH_MAX); if (path_max <= 0) { path_max = 4096; } s.resize(path_max); #endif int len = readlink(encodedFileName.data(), s.data(), s.size() - 1); if (len >= 0) { s[len] = '\0'; symLinkTarget = QFile::decodeName(s.constData()); } QCOMPARE(symLinkTarget, QString("test3")); #endif #ifdef Q_OS_WIN QScopedValueRollback<int> ntfsMode(qt_ntfs_permission_lookup); qt_ntfs_permission_lookup++; #endif QVERIFY(QFileInfo(dirName + "executableAll").permissions() & (QFileDevice::ExeOwner | QFileDevice::ExeGroup | QFileDevice::ExeOther)); }