# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /home/ondra/netbeans/cdev # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: git/test/unit/src/org/netbeans/modules/git/getTopmostTest.java --- git/test/unit/src/org/netbeans/modules/git/getTopmostTest.java Base (BASE) +++ git/test/unit/src/org/netbeans/modules/git/getTopmostTest.java Locally Modified (Based On LOCAL) @@ -47,7 +47,9 @@ import java.lang.reflect.Field; import java.util.Map; import java.util.Set; +import org.netbeans.junit.MockServices; import org.netbeans.junit.NbTestCase; +import org.netbeans.modules.versioning.spi.VersioningSupport; import org.netbeans.modules.versioning.util.Utils; /** @@ -230,6 +232,9 @@ } public void testExcludeUserDir () throws Exception { + MockServices.setServices(new Class[] { + GitVCS.class}); + Field f = Utils.class.getDeclaredField("unversionedFolders"); f.setAccessible(true); f.set(Utils.class, null); @@ -247,7 +252,7 @@ assertNull(Git.getInstance().getRepositoryRoot(r1)); assertNull(Git.getInstance().getRepositoryRoot(r1f1)); - Git.getInstance().clearAncestorCaches(); + Git.getInstance().versionedFilesChanged(); f.set(Utils.class, null); // version also the userdir System.setProperty("versioning.netbeans.user.versioned", "true"); @@ -260,11 +265,20 @@ File r1fld1 = createFolder(r1, "folder1"); File r1fld1f1 = createFile(r1fld1, "f1"); System.setProperty("netbeans.user", r1fld1.getAbsolutePath()); - Git.getInstance().clearAncestorCaches(); + Git.getInstance().versionedFilesChanged(); assertEquals(r1, Git.getInstance().getRepositoryRoot(r1)); assertEquals(r1, Git.getInstance().getRepositoryRoot(r1f1)); assertNull(Git.getInstance().getRepositoryRoot(r1fld1)); assertNull(Git.getInstance().getRepositoryRoot(r1fld1f1)); + + // logic in VersioningManager used to mark all parents of an excluded tree as unversioned too - that's obviously wrong + // we want to exclude only userdir, not the whole disk + assertNull(VersioningSupport.getOwner(r1fld1f1)); + assertNull(VersioningSupport.getOwner(r1fld1)); + + // only subtree is unversioned, r1 itself is versioned + assertEquals(GitVCS.class, VersioningSupport.getOwner(r1).getClass()); + assertEquals(GitVCS.class, VersioningSupport.getOwner(r1f1).getClass()); } private void clearCachedValues() throws Exception { Index: mercurial/test/unit/src/org/netbeans/modules/mercurial/getTopmostTest.java --- mercurial/test/unit/src/org/netbeans/modules/mercurial/getTopmostTest.java Base (BASE) +++ mercurial/test/unit/src/org/netbeans/modules/mercurial/getTopmostTest.java Locally Modified (Based On LOCAL) @@ -47,7 +47,9 @@ import java.lang.reflect.Field; import java.util.Map; import java.util.Set; +import org.netbeans.junit.MockServices; import org.netbeans.junit.NbTestCase; +import org.netbeans.modules.versioning.spi.VersioningSupport; import org.netbeans.modules.versioning.util.Utils; /** @@ -231,6 +233,9 @@ } public void testExcludeUserDir () throws Exception { + MockServices.setServices(new Class[] { + MercurialVCS.class}); + Field f = Utils.class.getDeclaredField("unversionedFolders"); f.setAccessible(true); f.set(Utils.class, null); @@ -246,7 +251,7 @@ assertNull(Mercurial.getInstance().getRepositoryRoot(r1)); assertNull(Mercurial.getInstance().getRepositoryRoot(r1f1)); - Mercurial.getInstance().clearAncestorCaches(); + Mercurial.getInstance().versionedFilesChanged(); f.set(Utils.class, null); // version also the userdir System.setProperty("versioning.netbeans.user.versioned", "true"); @@ -259,11 +264,19 @@ File r1fld1 = createFolder(r1, "folder1"); File r1fld1f1 = createFile(r1fld1, "f1"); System.setProperty("netbeans.user", r1fld1.getAbsolutePath()); - Mercurial.getInstance().clearAncestorCaches(); + Mercurial.getInstance().versionedFilesChanged(); assertEquals(r1, Mercurial.getInstance().getRepositoryRoot(r1)); assertEquals(r1, Mercurial.getInstance().getRepositoryRoot(r1f1)); assertNull(Mercurial.getInstance().getRepositoryRoot(r1fld1)); assertNull(Mercurial.getInstance().getRepositoryRoot(r1fld1f1)); + + // logic in VersioningManager used to mark all parents of an excluded tree as unversioned too - that's obviously wrong + // we want to exclude only userdir, not the whole disk + assertNull(VersioningSupport.getOwner(r1fld1f1)); + assertNull(VersioningSupport.getOwner(r1fld1)); + // only subtree is unversioned, r1 itself is versioned + assertEquals(MercurialVCS.class, VersioningSupport.getOwner(r1).getClass()); + assertEquals(MercurialVCS.class, VersioningSupport.getOwner(r1f1).getClass()); } private void clearCachedValues() throws Exception {