Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Stocker2012-12-14 16:32:14 +0000
committerGerrit Code Review @ Eclipse.org2012-12-16 14:12:24 +0000
commit560daa441e43571c670d5f393e4c17dc55761241 (patch)
tree45835d478822d43576b2865865141535931d8aa7 /org.eclipse.egit.core.test
parent1afed28c44cfaa632bf4b9f0361f1ee4d4d0bdbb (diff)
downloadegit-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.java6
-rw-r--r--org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/indexDiff/IndexDiffCacheTest.java56
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();

Back to the top