Commit graph

41 commits

Author SHA1 Message Date
Matthieu Gallien
05b6db55c3 remove the enforcement of identical etag for a server side item MOVE
orignally added by https://github.com/owncloud/client/pull/6632

most probably a too strong assumption on the behavior of the Nextcloud
server

better check real item metadata like fileid, size or modification time

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2024-10-17 09:45:57 +02:00
Matthieu Gallien
18bb41b410 add automated tests for complex move scenario
we rename the top folder and we rename a not direct child that is also
moved to another folder below the original renamed top folder

so
a/b/c
a/b/d/file

will be
e/b/c/f/file

with
a -> e
d-> f

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2024-09-12 09:50:27 +02:00
Camila Ayres
0160cec256
Fix renaming tests for files under group folders.
Signed-off-by: Camila Ayres <hello@camilasan.com>
2024-07-05 12:58:38 +02:00
Camila Ayres
4afc033ee0
Add test to detect file renames in external storage.
Signed-off-by: Camila Ayres <hello@camilasan.com>
2024-07-05 12:56:52 +02:00
Matthieu Gallien
54ffce52cd
automated test: allow rename of the child items of a mount point
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2024-06-25 14:23:43 +02:00
Matthieu Gallien
d6a143808d
automated test: block rename of the top folder of a mount point
encode current behavior in a new automated test

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2024-06-25 14:23:43 +02:00
Matthieu Gallien
098f4ef164 better automated tests log
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2024-05-15 15:06:11 +02:00
Matthieu Gallien
670b2ce42f fix automated tests missing toString() convert from QVariant
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2024-04-26 09:05:12 +02:00
Matthieu Gallien
b35a26091b add new test to simulate the data loss scenario
this new test trigger the assert that a file is either in the old place
or the new place when we execute a MOVE instruction for a local file

in the test one file is discovered as in need of a local MOVE but will
be missing from the old and new places when running the propagation due
to a bug

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2024-03-05 14:43:42 +01:00
Matthieu Gallien
976dbd6df6 when moving a file, checks that it exists at origin or destination
current automated tests are never breaking the rule that a file that
should be moved on client side (after a move was done server side)
exists either at teh original path or the destination path.

in practice it may happen (and I manually tested it) thet the sync
engine decides to move a single file in two distinct places

that decision will violate this rule and a debug build would then run
into the assert

Close #6462

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2024-03-05 14:43:42 +01:00
Dimitri Papadopoulos
9d830e94f9 Fix typos found by codespell
Signed-off-by: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com>
2023-06-21 08:47:13 +02:00
Matthieu Gallien
b5adbf3ab0 fix instances of: c++11 range-loop might detach Qt container warnings
analyzed via clazy

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2022-11-18 16:02:21 +01:00
Matthieu Gallien
8fa727e299
test for proper renaming of folder parent of a deep hierarchy
currently broken test as we miss to rename recursively

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2022-11-17 14:47:01 +01:00
Matthieu Gallien
783cefe3f1 new autotest to ensure that we delete folders despite blacklist errors
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2022-11-07 18:33:13 +01:00
alex-z
3443de4388 Rollback local move when server move has failed.
Signed-off-by: alex-z <blackslayer4@gmail.com>
2022-02-23 16:53:26 +02:00
Felix Weilbach
2ee3ca02a4 Add unit test for move custom remote root
Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
2021-06-25 10:14:29 +00:00
Hannah von Reth
4d615c31da
Rename csync_instructions_e -> SyncInsturctions 2020-12-15 10:59:10 +01:00
Hannah von Reth
86789a1280
Test: Disable parallelism to ensure serial execution 2020-12-15 10:59:10 +01:00
Hannah von Reth
734e49765d
Test: Fix testMovedWithError for vfs mode 2020-12-15 10:59:09 +01:00
Hannah von Reth
85aefa4232
Sync: Fix handling of virtual files in error state
Issue: #7799
2020-12-15 10:59:09 +01:00
Hannah von Reth
7644be576f
Test: Add test for vfs failed move crash 2020-12-15 10:59:09 +01:00
Olivier Goffart
a6a0e361c1
fixup test 2020-12-15 10:59:07 +01:00
Olivier Goffart
9f2c67dca9
Tests: add a couple of move tests
This was an attempt to reproduce #7722, but this actually does not
reproduce it
2020-12-15 10:59:07 +01:00
Olivier Goffart
390af4d41b
Tests: introduce ItemCompletedSpy to avoid a bit of code duplication 2020-12-15 10:59:00 +01:00
Christian Kamm
c9d1037622
Propagation: Fix delete-before-rename bug #7441
By introducing a PropagateRootDirectory job that explicitly
separates the directory deletion jobs from all the other jobs.

Note that this means that if there are errors in subJobs the
dirDeletionJobs won't get executed.
2020-12-15 10:58:58 +01:00
Christian Kamm
47f10fbf96
Fix and test _file and _renameTarget
There was a bunch of inconsistency around whether _file was set to
_renameTarget or not. This is now never done, passing on more
information.
2020-12-15 10:58:44 +01:00
Christian Kamm
93afc2a04b
Discovery win: Fix detection of case-only renames
Previously they were detected as DELETE+NEW because if "a" is renamed to
"A" then QFile::exists("a") will still return true on Windows.
2020-12-15 10:58:42 +01:00
Christian Kamm
238ac53666
Ensure local discovery on selective sync changes
As far as I'm aware local discovery can be skipped on folders that are
selective-sync blacklisted, so a local discovery is required when an
entry is removed from the blacklist.

Also rename
avoidReadFromDbOnNextSync() -> schedulePathForRemoteDiscovery()
since the old name might also imply it's not read from db in the local
discovery - which is not the case. Use Folder::
schedulePathForLocalDiscovery() for that.
2020-12-15 10:58:41 +01:00
Christian Kamm
aed1f28980
Tests: Add db checks to rename/move tests
For moves it's relevant that the old db entry is removed and the new one
is created at the right location.
2020-12-15 10:58:41 +01:00
Olivier Goffart
6f4bf585f0
Move: Fix move detection in directory move on the other side 2020-12-15 10:58:35 +01:00
Olivier Goffart
88d02a887f
Move: add comments and tests 2020-12-15 10:58:35 +01:00
Olivier Goffart
1fb4c22adf
Move: add more test and fix move within moves 2020-12-15 10:58:35 +01:00
Olivier Goffart
ade4c11de3
Rename: fix renamed folder moved into renamed folder issue
Issue #6694
2020-12-15 10:58:35 +01:00
Olivier Goffart
a670431a48
SyncEngine: Fix renames making hierarchy inversion
Issue #6694
2020-12-15 10:58:03 +01:00
Olivier Goffart
bdd1e72dda
New discovery algoritmh: more on Renames 2020-12-15 10:57:58 +01:00
asapelkin
17f39bd09d little loops optimization
Signed-off-by: asapelkin <asapelkin0x01@ya.ru>
2019-10-07 01:29:55 +03:00
Olivier Goffart
d202942a2c
Reconcile: When detecting a local move, keep the local mtime
https://github.com/owncloud/client/issues/6629#issuecomment-402450691
2018-09-09 21:38:10 +02:00
Christian Kamm
77fcff5bdf
Conflicts: Change tags to be more user friendly #6365
From "_conflict-user-yyyymmdd-hhmmss"
to   " (conflicted copy user yyyy-mm-dd hhmmss)"
2018-06-11 14:40:40 +02:00
Olivier Goffart
4369853ddb TestSystem: Add QIODevice in the serverOverride function, and add a DelayedReply
Preparing to add test that needs the QIODevice.
Also make the DelayedReply so we can generalize the existing delay on FakeChunkMoveReply
to any reply.
2017-12-14 11:56:12 +01:00
Christian Kamm
ceac18c554 Reconcile: Rename maps are consistent with update phase #6212
For duplicate file ids the update phase and reconcile phase determined
the rename mappings independently. If they disagreed (due to different
order of processing), complicated misbehavior would result.

This patch fixes it by letting reconcile try to use the mapping that the
update phase has computed first.
2017-12-06 16:42:11 +01:00
Christian Kamm
9c7ee6ef85 Reconcile: Rename handling fixes: duplicate file ids
When users share the same tree several times (say A/ and A/B/ are both
shared) the remote tree can have several entries that have the same
file id. This needs to be respected in rename detection.

Also adds several tests and fixes for issues noticed during testing.

See #6096
2017-10-24 10:54:23 +02:00