/plugins/svn4idea/testSource/org/jetbrains/idea/svn/IgnoredFilesTest.java

https://github.com/maasvdberg/intellij-community · Java · 186 lines · 151 code · 30 blank · 5 comment · 2 complexity · ea6636cb1b83b0241a3d85cfcc09ff3a MD5 · raw file

  1. package org.jetbrains.idea.svn;
  2. import com.intellij.ide.startup.impl.StartupManagerImpl;
  3. import com.intellij.openapi.components.ProjectComponent;
  4. import com.intellij.openapi.startup.StartupManager;
  5. import com.intellij.openapi.util.io.FileUtil;
  6. import com.intellij.openapi.vcs.FileStatus;
  7. import com.intellij.openapi.vcs.ProjectLevelVcsManager;
  8. import com.intellij.openapi.vcs.changes.ChangeListManager;
  9. import com.intellij.openapi.vcs.changes.IgnoredBeanFactory;
  10. import com.intellij.openapi.vcs.changes.IgnoredFileBean;
  11. import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager;
  12. import com.intellij.openapi.vcs.impl.ProjectLevelVcsManagerImpl;
  13. import com.intellij.openapi.vfs.LocalFileSystem;
  14. import com.intellij.openapi.vfs.VirtualFile;
  15. import com.intellij.testFramework.AbstractVcsTestCase;
  16. import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory;
  17. import com.intellij.testFramework.fixtures.TempDirTestFixture;
  18. import com.intellij.util.ui.UIUtil;
  19. import org.junit.After;
  20. import org.junit.Assert;
  21. import org.junit.Before;
  22. import org.junit.Test;
  23. import java.io.File;
  24. /**
  25. * @author irengrig
  26. */
  27. public class IgnoredFilesTest extends AbstractVcsTestCase {
  28. private SvnVcs myVcs;
  29. private ProjectLevelVcsManagerImpl myVcsManager;
  30. private ChangeListManager myChangeListManager;
  31. private LocalFileSystem myLocalFileSystem;
  32. private TempDirTestFixture myTempDirFixture;
  33. private File myClientRoot;
  34. private VcsDirtyScopeManager myVcsDirtyScopeManager;
  35. @Before
  36. public void setUp() throws Exception {
  37. UIUtil.invokeAndWaitIfNeeded(new Runnable() {
  38. @Override
  39. public void run() {
  40. try {
  41. final IdeaTestFixtureFactory fixtureFactory = IdeaTestFixtureFactory.getFixtureFactory();
  42. myTempDirFixture = fixtureFactory.createTempDirTestFixture();
  43. myTempDirFixture.setUp();
  44. myClientRoot = new File(myTempDirFixture.getTempDirPath(), "clientroot");
  45. myClientRoot.mkdir();
  46. initProject(myClientRoot);
  47. ((StartupManagerImpl)StartupManager.getInstance(myProject)).runPostStartupActivities();
  48. myChangeListManager = ChangeListManager.getInstance(myProject);
  49. myVcs = SvnVcs.getInstance(myProject);
  50. myVcsManager = (ProjectLevelVcsManagerImpl)ProjectLevelVcsManager.getInstance(myProject);
  51. myVcsManager.registerVcs(myVcs);
  52. myVcsManager.setDirectoryMapping(myWorkingCopyDir.getPath(), myVcs.getName());
  53. ((ProjectComponent)myChangeListManager).projectOpened();
  54. myVcsDirtyScopeManager = VcsDirtyScopeManager.getInstance(myProject);
  55. ((ProjectComponent)myVcsDirtyScopeManager).projectOpened();
  56. myLocalFileSystem = LocalFileSystem.getInstance();
  57. }
  58. catch (Exception e) {
  59. throw new RuntimeException(e);
  60. }
  61. }
  62. });
  63. }
  64. @After
  65. public void tearDown() throws Exception {
  66. UIUtil.invokeAndWaitIfNeeded(new Runnable() {
  67. @Override
  68. public void run() {
  69. try {
  70. myVcsManager.unregisterVcs(myVcs);
  71. myVcsManager = null;
  72. myVcs = null;
  73. ((ProjectComponent)myChangeListManager).projectClosed();
  74. ((ProjectComponent)myVcsDirtyScopeManager).projectClosed();
  75. tearDownProject();
  76. if (myTempDirFixture != null) {
  77. myTempDirFixture.tearDown();
  78. myTempDirFixture = null;
  79. }
  80. FileUtil.delete(myClientRoot);
  81. }
  82. catch (Exception e) {
  83. throw new RuntimeException(e);
  84. }
  85. }
  86. });
  87. }
  88. // they all blink now
  89. @Test
  90. public void testFileIsIgnored() throws Exception {
  91. final String filePath1 = myClientRoot.getPath() + "/a";
  92. final File file = new File(filePath1);
  93. file.createNewFile();
  94. final IgnoredFileBean ignoredFileBean = IgnoredBeanFactory.ignoreFile(filePath1, myProject);
  95. myChangeListManager.addFilesToIgnore(ignoredFileBean);
  96. dirty();
  97. final VirtualFile vf = myLocalFileSystem.refreshAndFindFileByIoFile(file);
  98. Assert.assertNotNull(vf);
  99. Assert.assertTrue(myChangeListManager.isIgnoredFile(vf));
  100. }
  101. private void dirty() {
  102. VcsDirtyScopeManager.getInstance(myProject).markEverythingDirty();
  103. myChangeListManager.scheduleUpdate(true);
  104. myChangeListManager.ensureUpToDate(false);
  105. }
  106. @Test
  107. public void testDirIsIgnored() throws Exception {
  108. //final String dirPath1 = myClientRoot.getPath() + "/a";
  109. final File dir = new File(myClientRoot, "a");
  110. dir.mkdir();
  111. final File innerDir = new File(dir, "innerDir");
  112. innerDir.mkdir();
  113. final File file1 = new File(innerDir, "file1");
  114. final File file2 = new File(innerDir, "file2");
  115. file1.createNewFile();
  116. file2.createNewFile();
  117. final VirtualFile innerVf = myLocalFileSystem.refreshAndFindFileByIoFile(innerDir);
  118. final VirtualFile vf1 = myLocalFileSystem.refreshAndFindFileByIoFile(file1);
  119. final VirtualFile vf2 = myLocalFileSystem.refreshAndFindFileByIoFile(file2);
  120. final IgnoredFileBean ignoredFileBean = IgnoredBeanFactory.ignoreUnderDirectory(FileUtil.toSystemIndependentName(dir.getPath()), myProject);
  121. myChangeListManager.addFilesToIgnore(ignoredFileBean);
  122. dirty();
  123. assertFoundAndIgnored(innerVf);
  124. assertFoundAndIgnored(vf1);
  125. assertFoundAndIgnored(vf2);
  126. }
  127. @Test
  128. public void testPatternIsIgnored() throws Exception {
  129. final String dirPath1 = myClientRoot.getPath() + "/a";
  130. final File dir = new File(myClientRoot, "a");
  131. dir.mkdir();
  132. final File innerDir = new File(dir, "innerDir");
  133. innerDir.mkdir();
  134. final File file1 = new File(innerDir, "file1");
  135. final File file2 = new File(innerDir, "file2");
  136. file1.createNewFile();
  137. file2.createNewFile();
  138. final VirtualFile innerVf = myLocalFileSystem.refreshAndFindFileByIoFile(innerDir);
  139. final VirtualFile vf1 = myLocalFileSystem.refreshAndFindFileByIoFile(file1);
  140. final VirtualFile vf2 = myLocalFileSystem.refreshAndFindFileByIoFile(file2);
  141. final IgnoredFileBean ignoredFileBean = IgnoredBeanFactory.withMask("file*");
  142. myChangeListManager.addFilesToIgnore(ignoredFileBean);
  143. dirty();
  144. Assert.assertNotNull(innerVf);
  145. Assert.assertFalse(myChangeListManager.isIgnoredFile(innerVf));
  146. Assert.assertEquals(FileStatus.UNKNOWN, myChangeListManager.getStatus(innerVf));
  147. Assert.assertTrue(myChangeListManager.isUnversioned(innerVf));
  148. assertFoundAndIgnored(vf1);
  149. assertFoundAndIgnored(vf2);
  150. }
  151. void assertFoundAndIgnored(final VirtualFile vf) {
  152. Assert.assertNotNull(vf);
  153. Assert.assertTrue(myChangeListManager.isIgnoredFile(vf));
  154. Assert.assertEquals(FileStatus.IGNORED, myChangeListManager.getStatus(vf));
  155. }
  156. }