mirror of
https://github.com/rclone/rclone.git
synced 2024-12-23 15:38:57 +01:00
make moveto/copyto no-ops when source and destination are the same (fixes #1261)
This commit is contained in:
parent
71028e0f06
commit
decd960867
@ -1502,6 +1502,11 @@ func Rmdirs(f Fs, dir string) error {
|
|||||||
|
|
||||||
// moveOrCopyFile moves or copies a single file possibly to a new name
|
// moveOrCopyFile moves or copies a single file possibly to a new name
|
||||||
func moveOrCopyFile(fdst Fs, fsrc Fs, dstFileName string, srcFileName string, cp bool) (err error) {
|
func moveOrCopyFile(fdst Fs, fsrc Fs, dstFileName string, srcFileName string, cp bool) (err error) {
|
||||||
|
if fdst.Name() == fsrc.Name() && dstFileName == srcFileName {
|
||||||
|
Debugf(fdst, "don't need to copy/move %s, it is already at target location", dstFileName)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Choose operations
|
// Choose operations
|
||||||
Op := Move
|
Op := Move
|
||||||
if cp {
|
if cp {
|
||||||
|
@ -798,6 +798,11 @@ func TestMoveFile(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
fstest.CheckItems(t, r.flocal)
|
fstest.CheckItems(t, r.flocal)
|
||||||
fstest.CheckItems(t, r.fremote, file2)
|
fstest.CheckItems(t, r.fremote, file2)
|
||||||
|
|
||||||
|
err = fs.MoveFile(r.fremote, r.flocal, file2.Path, file2.Path)
|
||||||
|
require.NoError(t, err)
|
||||||
|
fstest.CheckItems(t, r.flocal)
|
||||||
|
fstest.CheckItems(t, r.fremote, file2)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCopyFile(t *testing.T) {
|
func TestCopyFile(t *testing.T) {
|
||||||
@ -819,6 +824,11 @@ func TestCopyFile(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
fstest.CheckItems(t, r.flocal, file1)
|
fstest.CheckItems(t, r.flocal, file1)
|
||||||
fstest.CheckItems(t, r.fremote, file2)
|
fstest.CheckItems(t, r.fremote, file2)
|
||||||
|
|
||||||
|
err = fs.CopyFile(r.fremote, r.flocal, file2.Path, file2.Path)
|
||||||
|
require.NoError(t, err)
|
||||||
|
fstest.CheckItems(t, r.flocal, file1)
|
||||||
|
fstest.CheckItems(t, r.fremote, file2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// testFsInfo is for unit testing fs.Info
|
// testFsInfo is for unit testing fs.Info
|
||||||
|
Loading…
Reference in New Issue
Block a user