Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChristian Kamm <mail@ckamm.de>2019-01-23 17:12:02 +0300
committerckamm <mail@ckamm.de>2019-02-11 15:35:14 +0300
commit010abe4c823af3dae7078854d1096f25b8b7225c (patch)
tree48852485d65dd29243f6e2a5fec69706b4294b76 /test
parent8ea639e58f2d2599f3f966f9f65a4f29c025ca43 (diff)
Pin state updates
- unspecified and inherited are different - move enum to header in common/ - access through Vfs instead of directly in Journal
Diffstat (limited to 'test')
-rw-r--r--test/syncenginetestutils.h30
-rw-r--r--test/testsyncvirtualfiles.cpp45
2 files changed, 54 insertions, 21 deletions
diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h
index b4f9e89d5..549d0092f 100644
--- a/test/syncenginetestutils.h
+++ b/test/syncenginetestutils.h
@@ -12,6 +12,7 @@
#include "filesystem.h"
#include "syncengine.h"
#include "common/syncjournaldb.h"
+#include "common/vfs.h"
#include "csync_exclude.h"
#include <cstring>
@@ -1139,12 +1140,41 @@ public:
// Ignore temporary files from the download. (This is in the default exclude list, but we don't load it)
_syncEngine->excludedFiles().addManualExclude("]*.~*");
+ // Ensure we have a valid VfsOff instance "running"
+ switchToVfs(_syncEngine->syncOptions()._vfs);
+
// A new folder will update the local file state database on first sync.
// To have a state matching what users will encounter, we have to a sync
// using an identical local/remote file tree first.
syncOnce();
}
+ void switchToVfs(QSharedPointer<OCC::Vfs> vfs)
+ {
+ auto opts = _syncEngine->syncOptions();
+
+ opts._vfs->stop();
+ QObject::disconnect(_syncEngine.get(), 0, opts._vfs.data(), 0);
+
+ opts._vfs = vfs;
+ _syncEngine->setSyncOptions(opts);
+
+ OCC::VfsSetupParams vfsParams;
+ vfsParams.filesystemPath = localPath();
+ vfsParams.remotePath = "";
+ vfsParams.account = _account;
+ vfsParams.journal = _journalDb.get();
+ vfsParams.providerName = "OC-TEST";
+ vfsParams.providerVersion = "0.1";
+ vfsParams.enableShellIntegration = false;
+ QObject::connect(_syncEngine.get(), &QObject::destroyed, vfs.data(), [vfs]() {
+ vfs->stop();
+ vfs->unregisterFolder();
+ });
+
+ vfs->start(vfsParams);
+ }
+
OCC::AccountPtr account() const { return _account; }
OCC::SyncEngine &syncEngine() const { return *_syncEngine; }
OCC::SyncJournalDb &syncJournal() const { return *_journalDb; }
diff --git a/test/testsyncvirtualfiles.cpp b/test/testsyncvirtualfiles.cpp
index 7a3b154cf..bb17f3e5b 100644
--- a/test/testsyncvirtualfiles.cpp
+++ b/test/testsyncvirtualfiles.cpp
@@ -59,12 +59,15 @@ void markForDehydration(FakeFolder &folder, const QByteArray &path)
journal.avoidReadFromDbOnNextSync(record._path);
}
-SyncOptions vfsSyncOptions(FakeFolder &fakeFolder)
+QSharedPointer<Vfs> setupVfs(FakeFolder &folder)
{
- SyncOptions options;
- options._vfs.reset(createVfsFromPlugin(Vfs::WithSuffix).release());
- fakeFolder.syncJournal().setPinStateForPath("", PinState::OnlineOnly);
- return options;
+ auto suffixVfs = QSharedPointer<Vfs>(createVfsFromPlugin(Vfs::WithSuffix).release());
+ folder.switchToVfs(suffixVfs);
+
+ // Using this directly doesn't recursively unpin everything
+ folder.syncJournal().setPinStateForPath("", PinState::OnlineOnly);
+
+ return suffixVfs;
}
class TestSyncVirtualFiles : public QObject
@@ -85,7 +88,7 @@ private slots:
QFETCH(bool, doLocalDiscovery);
FakeFolder fakeFolder{ FileInfo() };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &)));
@@ -206,7 +209,7 @@ private slots:
void testVirtualFileConflict()
{
FakeFolder fakeFolder{ FileInfo() };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &)));
@@ -277,7 +280,7 @@ private slots:
void testWithNormalSync()
{
FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &)));
@@ -313,7 +316,7 @@ private slots:
void testVirtualFileDownload()
{
FakeFolder fakeFolder{ FileInfo() };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &)));
@@ -381,7 +384,7 @@ private slots:
void testVirtualFileDownloadResume()
{
FakeFolder fakeFolder{ FileInfo() };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &)));
@@ -422,8 +425,7 @@ private slots:
void testNewFilesNotVirtual()
{
FakeFolder fakeFolder{ FileInfo() };
- SyncOptions syncOptions = vfsSyncOptions(fakeFolder);
- fakeFolder.syncEngine().setSyncOptions(syncOptions);
+ setupVfs(fakeFolder);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
fakeFolder.remoteModifier().mkdir("A");
@@ -443,7 +445,7 @@ private slots:
void testDownloadRecursive()
{
FakeFolder fakeFolder{ FileInfo() };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
// Create a virtual file for remote files
@@ -540,7 +542,7 @@ private slots:
void testRenameToVirtual()
{
FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &)));
@@ -578,7 +580,7 @@ private slots:
void testRenameVirtual()
{
FakeFolder fakeFolder{ FileInfo() };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &)));
@@ -620,7 +622,7 @@ private slots:
void testSyncDehydration()
{
FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
QVERIFY(fakeFolder.syncOnce());
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
@@ -697,7 +699,7 @@ private slots:
void testWipeVirtualSuffixFiles()
{
FakeFolder fakeFolder{ FileInfo{} };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
// Create a suffix-vfs baseline
@@ -733,7 +735,7 @@ private slots:
QVERIFY(fakeFolder.currentLocalState().find("A/a3.owncloud"));
QVERIFY(!fakeFolder.currentLocalState().find("A/B/b1.owncloud"));
- fakeFolder.syncEngine().setSyncOptions(SyncOptions{});
+ fakeFolder.switchToVfs(QSharedPointer<Vfs>(new VfsOff));
QVERIFY(fakeFolder.syncOnce());
QVERIFY(fakeFolder.currentRemoteState().find("A/a3.owncloud")); // regular upload
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
@@ -742,7 +744,7 @@ private slots:
void testNewVirtuals()
{
FakeFolder fakeFolder{ FileInfo() };
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
auto setPin = [&] (const QByteArray &path, PinState state) {
@@ -757,6 +759,7 @@ private slots:
setPin("local", PinState::AlwaysLocal);
setPin("online", PinState::OnlineOnly);
+ setPin("unspec", PinState::Unspecified);
// Test 1: root is OnlineOnly
fakeFolder.remoteModifier().insert("file1");
@@ -782,7 +785,7 @@ private slots:
QVERIFY(fakeFolder.currentLocalState().find("file2"));
QVERIFY(fakeFolder.currentLocalState().find("online/file2.owncloud"));
QVERIFY(fakeFolder.currentLocalState().find("local/file2"));
- QVERIFY(fakeFolder.currentLocalState().find("unspec/file2"));
+ QVERIFY(fakeFolder.currentLocalState().find("unspec/file2.owncloud"));
// file1 is unchanged
QVERIFY(fakeFolder.currentLocalState().find("file1.owncloud"));
@@ -810,7 +813,7 @@ private slots:
cleanup();
// Enable suffix vfs
- fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder));
+ setupVfs(fakeFolder);
// Local changes of suffixed file do nothing
fakeFolder.localModifier().appendByte("A/file1.owncloud");