From 1fd373f2ad686dec90c0ef134869c382a4cd7437 Mon Sep 17 00:00:00 2001 From: irengrig Date: Tue, 4 Dec 2012 16:08:35 +0400 Subject: [PATCH] IDEA-96544 Subversion: when confirmation for delete= "do nothing silently", you can not delete versioned folder [^kirill.l] + tests --- .../idea/svn/SvnFileSystemListener.java | 6 ++++++ .../org/jetbrains/idea/svn/SvnAddTest.java | 4 +++- .../org/jetbrains/idea/svn/SvnDeleteTest.java | 16 ++++++++++++++++ .../org/jetbrains/idea/svn16/SvnAddTest.java | 4 +++- .../org/jetbrains/idea/svn16/SvnDeleteTest.java | 16 ++++++++++++++++ 5 files changed, 44 insertions(+), 2 deletions(-) diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnFileSystemListener.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnFileSystemListener.java index e5047f10349e..5ac1a2f2ac6c 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnFileSystemListener.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnFileSystemListener.java @@ -456,6 +456,9 @@ public class SvnFileSystemListener extends CommandAdapter implements LocalFileOp return true; } if (vcs == null) return false; + final VcsShowConfirmationOption.Value value = vcs.getDeleteConfirmation().getValue(); + if (VcsShowConfirmationOption.Value.DO_NOTHING_SILENTLY.equals(value)) return false; + final File ioFile = getIOFile(file); if (! SvnUtil.isSvnVersioned(vcs.getProject(), ioFile.getParentFile())) { return false; @@ -556,6 +559,9 @@ public class SvnFileSystemListener extends CommandAdapter implements LocalFileOp if (vcs == null) { return false; } + final VcsShowConfirmationOption.Value value = vcs.getAddConfirmation().getValue(); + if (VcsShowConfirmationOption.Value.DO_NOTHING_SILENTLY.equals(value)) return false; + if (isUndo(vcs) && SvnUtil.isAdminDirectory(dir, name)) { return false; } diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnAddTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnAddTest.java index 72a05a20620e..7e87cb18f553 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnAddTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnAddTest.java @@ -68,7 +68,9 @@ public class SvnAddTest extends Svn17TestCase { disableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); final VirtualFile dir = createDirInCommand(myWorkingCopyDir, "dir"); final VirtualFile file = createFileInCommand(dir, "a.txt", "content"); - + + verify(runSvn("status"), "? dir"); + final List files = new ArrayList(); files.add(file); files.add(dir); diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnDeleteTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnDeleteTest.java index 3d29f12d0ed1..5b9231f5a704 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnDeleteTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnDeleteTest.java @@ -64,4 +64,20 @@ public class SvnDeleteTest extends Svn17TestCase { final Collection changes = lists.get(0).getChanges(); Assert.assertEquals(2, changes.size()); } + + @Test + public void testDeletePackageWhenVcsRemoveDisabled() throws Exception { + enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); + disableSilentOperation(VcsConfiguration.StandardConfirmation.REMOVE); + VirtualFile dir = createDirInCommand(myWorkingCopyDir, "child"); + createFileInCommand(dir, "a.txt", "content"); + + verify(runSvn("status"), "A child", "A child" + File.separatorChar + "a.txt"); + checkin(); + + final File wasFile = new File(dir.getPath()); + deleteFileInCommand(dir); + verify(runSvn("status"), "! child", "! child" + File.separatorChar + "a.txt"); + Assert.assertTrue(! wasFile.exists()); + } } diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn16/SvnAddTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn16/SvnAddTest.java index 3e3e2ee12bd9..6ca93d4593d0 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn16/SvnAddTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn16/SvnAddTest.java @@ -69,7 +69,9 @@ public class SvnAddTest extends Svn16TestCase { disableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); final VirtualFile dir = createDirInCommand(myWorkingCopyDir, "dir"); final VirtualFile file = createFileInCommand(dir, "a.txt", "content"); - + + verify(runSvn("status"), "? dir"); + final List files = new ArrayList(); files.add(file); files.add(dir); diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn16/SvnDeleteTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn16/SvnDeleteTest.java index 249300bcdca6..635ad8ae1adb 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn16/SvnDeleteTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn16/SvnDeleteTest.java @@ -64,4 +64,20 @@ public class SvnDeleteTest extends Svn16TestCase { final Collection changes = lists.get(0).getChanges(); Assert.assertEquals(2, changes.size()); } + + @Test + public void testDeletePackageWhenVcsRemoveDisabled() throws Exception { + enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); + disableSilentOperation(VcsConfiguration.StandardConfirmation.REMOVE); + VirtualFile dir = createDirInCommand(myWorkingCopyDir, "child"); + createFileInCommand(dir, "a.txt", "content"); + + verify(runSvn("status"), "A child", "A child" + File.separatorChar + "a.txt"); + checkin(); + + final File wasFile = new File(dir.getPath()); + deleteFileInCommand(dir); + verify(runSvn("status"), "! child"); + Assert.assertTrue(! wasFile.exists()); + } }