From 659352e73b6285a6a50facca2d22d3e3d508153f Mon Sep 17 00:00:00 2001 From: Liam Coatman Date: Thu, 30 Apr 2020 18:02:58 +0100 Subject: [PATCH] Modify datasets.mv to do nothing if source and destination are the same --- faculty/datasets/__init__.py | 3 +++ tests/datasets/test_init.py | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/faculty/datasets/__init__.py b/faculty/datasets/__init__.py index 26ba5e3d..3d1609cb 100644 --- a/faculty/datasets/__init__.py +++ b/faculty/datasets/__init__.py @@ -334,6 +334,9 @@ def mv(source_path, destination_path, project_id=None, object_client=None): project_id = project_id or get_context().project_id object_client = object_client or ObjectClient(get_session()) + if source_path == destination_path: + return + cp( source_path, destination_path, diff --git a/tests/datasets/test_init.py b/tests/datasets/test_init.py index 181895c0..2d781060 100644 --- a/tests/datasets/test_init.py +++ b/tests/datasets/test_init.py @@ -439,6 +439,16 @@ def test_mv(mocker, mock_client): ) +def test_mv_identical_source_and_destination(mocker, mock_client): + cp_mock = mocker.patch("faculty.datasets.cp") + rm_mock = mocker.patch("faculty.datasets.rm") + + datasets.mv("source-path", "source-path", project_id=PROJECT_ID) + + cp_mock.assert_not_called() + rm_mock.assert_not_called() + + def test_etag(mocker, mock_client): object_mock = mocker.Mock() object_mock.etag = "test-etag"