diff options
author | Robin Stocker | 2012-12-14 16:32:14 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2012-12-16 14:12:24 +0000 |
commit | 560daa441e43571c670d5f393e4c17dc55761241 (patch) | |
tree | 45835d478822d43576b2865865141535931d8aa7 /org.eclipse.egit.core.test | |
parent | 1afed28c44cfaa632bf4b9f0361f1ee4d4d0bdbb (diff) | |
download | egit-560daa441e43571c670d5f393e4c17dc55761241.tar.gz egit-560daa441e43571c670d5f393e4c17dc55761241.tar.xz egit-560daa441e43571c670d5f393e4c17dc55761241.zip |
Fix incorrect decorations when ignored resources are created
The problem was that ignored paths were not correctly merged in the
incremental index diff update. They can not be merged with the mergeList
method because they can also include folder paths.
Bug: 396613
Change-Id: I5b9019df86a005ee0d4f64d656b3aaacf7160398
Diffstat (limited to 'org.eclipse.egit.core.test')
-rw-r--r-- | org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/TestProject.java | 6 | ||||
-rw-r--r-- | org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/indexDiff/IndexDiffCacheTest.java | 56 |
2 files changed, 62 insertions, 0 deletions
diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/TestProject.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/TestProject.java index fd8fa5e805..f6808ea6df 100644 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/TestProject.java +++ b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/TestProject.java @@ -1,6 +1,7 @@ /******************************************************************************* * Copyright (C) 2007, Robin Rosenberg <robin.rosenberg@dewire.com> * Copyright (C) 2006, Shawn O. Pearce <spearce@spearce.org> + * Copyright (C) 2012, Robin Stocker <robin@nibor.org> * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -175,6 +176,11 @@ public class TestProject { public IFolder createFolder(String name) throws Exception { IFolder folder = project.getFolder(name); folder.create(true, true, null); + return folder; + } + + public IFolder createFolderWithKeep(String name) throws Exception { + IFolder folder = createFolder(name); IFile keep = project.getFile(name + "/keep"); keep.create(new ByteArrayInputStream(new byte[] {0}), true, null); diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/indexDiff/IndexDiffCacheTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/indexDiff/IndexDiffCacheTest.java index 3922654fd2..f998c6915a 100644 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/indexDiff/IndexDiffCacheTest.java +++ b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/indexDiff/IndexDiffCacheTest.java @@ -108,6 +108,62 @@ public class IndexDiffCacheTest extends GitTestCase { assertThat(data2.getUntrackedFolders(), hasItem("Project-1/folder/b/")); } + @Test + public void testAddIgnoredFolder() throws Exception { + testRepository.connect(project.project); + project.createFile(".gitignore", "ignore\n".getBytes("UTF-8")); + project.createFolder("ignore"); + project.createFile("ignore/file.txt", new byte[] {}); + project.createFolder("sub"); + testRepository.addToIndex(project.project); + testRepository.createInitialCommit("testAddFileInIgnoredFolder\n\nfirst commit\n"); + prepareCacheEntry(); + + IndexDiffData data1 = waitForListenerCalled(); + assertThat(data1.getIgnoredNotInIndex(), hasItem("Project-1/ignore")); + + project.createFolder("sub/ignore"); + + IndexDiffData data2 = waitForListenerCalled(); + assertThat(data2.getIgnoredNotInIndex(), hasItem("Project-1/ignore")); + assertThat(data2.getIgnoredNotInIndex(), hasItem("Project-1/sub/ignore")); + + // Must not change anything (ignored path starts with this string, but + // it's not a prefix path of it) + project.createFile("sub/ignorenot", new byte[] {}); + + IndexDiffData data3 = waitForListenerCalled(); + assertThat(data3.getUntracked(), hasItem("Project-1/sub/ignorenot")); + assertThat(data3.getIgnoredNotInIndex(), hasItem("Project-1/ignore")); + assertThat(data3.getIgnoredNotInIndex(), hasItem("Project-1/sub/ignore")); + } + + @Test + public void testRemoveIgnoredFile() throws Exception { + testRepository.connect(project.project); + project.createFile(".gitignore", "ignore\n".getBytes("UTF-8")); + project.createFolder("sub"); + IFile file = project.createFile("sub/ignore", new byte[] {}); + testRepository.addToIndex(project.project); + testRepository.createInitialCommit("testRemoveIgnoredFile\n\nfirst commit\n"); + prepareCacheEntry(); + + IndexDiffData data1 = waitForListenerCalled(); + assertThat(data1.getIgnoredNotInIndex(), hasItem("Project-1/sub/ignore")); + + // Must not change anything (ignored path starts with this string, but + // it's not a prefix path of it) + project.createFile("sub/ignorenot", new byte[] {}); + + IndexDiffData data2 = waitForListenerCalled(); + assertThat(data2.getIgnoredNotInIndex(), hasItem("Project-1/sub/ignore")); + + file.delete(false, null); + + IndexDiffData data3 = waitForListenerCalled(); + assertThat(data3.getIgnoredNotInIndex(), not(hasItem("Project-1/sub/ignore"))); + } + private void prepareCacheEntry() { IndexDiffCache indexDiffCache = Activator.getDefault() .getIndexDiffCache(); |