From 8ca5035c429ed99f322dd9679dd0f456c58523d7 Mon Sep 17 00:00:00 2001 From: Hannah von Reth Date: Fri, 12 Feb 2021 14:44:32 +0100 Subject: [PATCH] Add test for csync_vio_local_stat with long path --- test/CMakeLists.txt | 2 +- .../{testlongwinpath.cpp => testlongpath.cpp} | 57 ++++++++++++++++++- 2 files changed, 57 insertions(+), 2 deletions(-) rename test/{testlongwinpath.cpp => testlongpath.cpp} (51%) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 1369b241f..33bf1ac71 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -68,12 +68,12 @@ if (WIN32) ${CMAKE_BINARY_DIR}/src/libsync/vfs/cfapi ) - nextcloud_add_test(LongWinPath) nextcloud_add_test(SyncCfApi) elseif(LINUX) # elseif(LINUX OR APPLE) nextcloud_add_test(SyncXAttr) endif() +nextcloud_add_test(LongPath) nextcloud_add_benchmark(LargeSync) nextcloud_add_test(Account) diff --git a/test/testlongwinpath.cpp b/test/testlongpath.cpp similarity index 51% rename from test/testlongwinpath.cpp rename to test/testlongpath.cpp index 16933813c..7e912ae15 100644 --- a/test/testlongwinpath.cpp +++ b/test/testlongpath.cpp @@ -18,7 +18,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "common/filesystembase.h" +#include "csync/csync.h" +#include "csync/vio/csync_vio_local.h" +#include #include @@ -27,6 +30,7 @@ class TestLongWindowsPath : public QObject Q_OBJECT private Q_SLOTS: +#ifdef Q_OS_WIN void check_long_win_path() { { @@ -81,7 +85,58 @@ private Q_SLOTS: // printf( "YYYYYYYYYYYY %ld\n", strlen(new_long)); QCOMPARE(new_long.length(), 286); } +#endif + + + void testLongPathStat_data() + { + QTest::addColumn("name"); + + QTest::newRow("long") << QStringLiteral("/alonglonglonglong/blonglonglonglong/clonglonglonglong/dlonglonglonglong/" + "elonglonglonglong/flonglonglonglong/glonglonglonglong/hlonglonglonglong/ilonglonglonglong/" + "jlonglonglonglong/klonglonglonglong/llonglonglonglong/mlonglonglonglong/nlonglonglonglong/" + "olonglonglonglong/file.txt"); + QTest::newRow("long emoji") << QString::fromUtf8("/alonglonglonglong/blonglonglonglong/clonglonglonglong/dlonglonglonglong/" + "elonglonglonglong/flonglonglonglong/glonglonglonglong/hlonglonglonglong/ilonglonglonglong/" + "jlonglonglonglong/klonglonglonglong/llonglonglonglong/mlonglonglonglong/nlonglonglonglong/" + "olonglonglonglong/file🐷.txt"); + QTest::newRow("long russian") << QString::fromUtf8("/alonglonglonglong/blonglonglonglong/clonglonglonglong/dlonglonglonglong/" + "elonglonglonglong/flonglonglonglong/glonglonglonglong/hlonglonglonglong/ilonglonglonglong/" + "jlonglonglonglong/klonglonglonglong/llonglonglonglong/mlonglonglonglong/nlonglonglonglong/" + "olonglonglonglong/собственное.txt"); + QTest::newRow("long arabic") << QString::fromUtf8("/alonglonglonglong/blonglonglonglong/clonglonglonglong/dlonglonglonglong/" + "elonglonglonglong/flonglonglonglong/glonglonglonglong/hlonglonglonglong/ilonglonglonglong/" + "jlonglonglonglong/klonglonglonglong/llonglonglonglong/mlonglonglonglong/nlonglonglonglong/" + "olonglonglonglong/السحاب.txt"); + QTest::newRow("long chinese") << QString::fromUtf8("/alonglonglonglong/blonglonglonglong/clonglonglonglong/dlonglonglonglong/" + "elonglonglonglong/flonglonglonglong/glonglonglonglong/hlonglonglonglong/ilonglonglonglong/" + "jlonglonglonglong/klonglonglonglong/llonglonglonglong/mlonglonglonglong/nlonglonglonglong/" + "olonglonglonglong/自己的云.txt"); + } + + void testLongPathStat() + { + QTemporaryDir tmp; + QFETCH(QString, name); + const QFileInfo longPath(tmp.path() + name); + + const auto data = QByteArrayLiteral("hello"); + qDebug() << longPath; + QVERIFY(longPath.dir().mkpath(".")); + + QFile file(longPath.filePath()); + QVERIFY(file.open(QFile::WriteOnly)); + QVERIFY(file.write(data.constData()) == data.size()); + file.close(); + + csync_file_stat_t buf; + QVERIFY(csync_vio_local_stat(longPath.filePath(), &buf) != -1); + QVERIFY(buf.size == data.size()); + QVERIFY(buf.size == longPath.size()); + + QVERIFY(tmp.remove()); + } }; QTEST_GUILESS_MAIN(TestLongWindowsPath) -#include "testlongwinpath.moc" +#include "testlongpath.moc" -- 2.30.2