diff options
-rw-r--r-- | src/corelib/io/qdir.cpp | 2 | ||||
-rw-r--r-- | tests/auto/corelib/io/qdir/tst_qdir.cpp | 41 |
2 files changed, 42 insertions, 1 deletions
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp index 8380404219..3a9ae2ee6d 100644 --- a/src/corelib/io/qdir.cpp +++ b/src/corelib/io/qdir.cpp @@ -219,7 +219,7 @@ bool QDirSortItemComparator::operator()(const QDirSortItem &n1, const QDirSortIt if ((qt_cmp_si_sort_flags & QDir::DirsLast) && (f1->item.isDir() != f2->item.isDir())) return !f1->item.isDir(); - int r = 0; + qint64 r = 0; int sortBy = (qt_cmp_si_sort_flags & QDir::SortByMask) | (qt_cmp_si_sort_flags & QDir::Type); diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp index caa22db144..e8a7105f6e 100644 --- a/tests/auto/corelib/io/qdir/tst_qdir.cpp +++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp @@ -90,6 +90,8 @@ private slots: void entryList_data(); void entryList(); + void entryListTimedSort(); + void entryListSimple_data(); void entryListSimple(); @@ -831,6 +833,45 @@ void tst_QDir::entryList() QFile::remove(entrylistPath + "brokenlink"); } +void tst_QDir::entryListTimedSort() +{ +#ifndef QT_NO_PROCESS + const QString touchBinary = "/bin/touch"; + if (!QFile::exists(touchBinary)) + QSKIP("/bin/touch not found"); + + const QString entrylistPath = m_dataPath + "/entrylist/"; + QTemporaryFile aFile(entrylistPath + "A-XXXXXX.qws"); + QTemporaryFile bFile(entrylistPath + "B-XXXXXX.qws"); + + QVERIFY(aFile.open()); + QVERIFY(bFile.open()); + { + QProcess p; + p.start(touchBinary, QStringList() << "-t" << "201306021513" << aFile.fileName()); + QVERIFY(p.waitForFinished(1000)); + } + { + QProcess p; + p.start(touchBinary, QStringList() << "-t" << "201504131513" << bFile.fileName()); + QVERIFY(p.waitForFinished(1000)); + } + + QStringList actual = QDir(entrylistPath).entryList(QStringList() << "*.qws", QDir::NoFilter, + QDir::Time); + + QFileInfo aFileInfo(aFile); + QFileInfo bFileInfo(bFile); + QVERIFY(bFileInfo.lastModified().msecsTo(aFileInfo.lastModified()) < 0); + + QCOMPARE(actual.size(), 2); + QCOMPARE(actual.first(), bFileInfo.fileName()); + QCOMPARE(actual.last(), aFileInfo.fileName()); +#else + QSKIP("This test requires QProcess support."); +#endif // QT_NO_PROCESS +} + void tst_QDir::entryListSimple_data() { QTest::addColumn<QString>("dirName"); |