From 27ae9095639bb228a1b7ff86a3ebe4264abf05be Mon Sep 17 00:00:00 2001
From: mschaefers <mschaefers@scoop-gmbh.de>
Date: Thu, 29 Nov 2012 12:33:09 -0500
Subject: [PATCH] feature: when using LdapUserService one can configure Gitblit to fetch all users from ldap that can possibly login. This allows to see newly generated LDAP users instantly in Gitblit. By now an LDAP user had to log in once to appear in GitBlit.
---
tests/com/gitblit/tests/LuceneExecutorTest.java | 85 +++++++++++++++++++++++++++++-------------
1 files changed, 58 insertions(+), 27 deletions(-)
diff --git a/tests/com/gitblit/tests/LuceneExecutorTest.java b/tests/com/gitblit/tests/LuceneExecutorTest.java
index ddc9bf8..6b45b9f 100644
--- a/tests/com/gitblit/tests/LuceneExecutorTest.java
+++ b/tests/com/gitblit/tests/LuceneExecutorTest.java
@@ -16,16 +16,24 @@
package com.gitblit.tests;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.eclipse.jgit.lib.Repository;
import org.junit.Test;
import com.gitblit.LuceneExecutor;
+import com.gitblit.models.RefModel;
+import com.gitblit.models.RepositoryModel;
import com.gitblit.models.SearchResult;
-import com.gitblit.utils.StringUtils;
+import com.gitblit.tests.mock.MemorySettings;
+import com.gitblit.utils.FileUtils;
+import com.gitblit.utils.JGitUtils;
/**
* Tests Lucene indexing and querying.
@@ -36,12 +44,22 @@
public class LuceneExecutorTest {
private LuceneExecutor newLuceneExecutor() {
- return new LuceneExecutor(null, GitBlitSuite.REPOSITORIES);
+ Map<String, Object> map = new HashMap<String, Object>();
+ MemorySettings settings = new MemorySettings(map);
+ return new LuceneExecutor(settings, GitBlitSuite.REPOSITORIES);
}
- private String getName(Repository repository) {
- return StringUtils.getRelativePath(GitBlitSuite.REPOSITORIES.getAbsolutePath(),
- repository.getDirectory().getAbsolutePath());
+ private RepositoryModel newRepositoryModel(Repository repository) {
+ RepositoryModel model = new RepositoryModel();
+ model.name = FileUtils.getRelativePath(GitBlitSuite.REPOSITORIES, repository.getDirectory());
+ model.hasCommits = JGitUtils.hasCommits(repository);
+
+ // index all local branches
+ model.indexedBranches = new ArrayList<String>();
+ for (RefModel ref : JGitUtils.getLocalBranches(repository, true, -1)) {
+ model.indexedBranches.add(ref.getName());
+ }
+ return model;
}
@Test
@@ -50,25 +68,25 @@
// reindex helloworld
Repository repository = GitBlitSuite.getHelloworldRepository();
- String name = getName(repository);
- lucene.reindex(name, repository);
+ RepositoryModel model = newRepositoryModel(repository);
+ lucene.reindex(model, repository);
repository.close();
- SearchResult result = lucene.search("type:blob AND path:bit.bit", 1, name).get(0);
+ SearchResult result = lucene.search("type:blob AND path:bit.bit", 1, 1, model.name).get(0);
assertEquals("Mike Donaghy", result.author);
- result = lucene.search("type:blob AND path:clipper.prg", 1, name).get(0);
+ result = lucene.search("type:blob AND path:clipper.prg", 1, 1, model.name).get(0);
assertEquals("tinogomes", result.author);
// reindex theoretical physics
repository = GitBlitSuite.getTheoreticalPhysicsRepository();
- name = getName(repository);
- lucene.reindex(name, repository);
+ model = newRepositoryModel(repository);
+ lucene.reindex(model, repository);
repository.close();
// reindex JGit
repository = GitBlitSuite.getJGitRepository();
- name = getName(repository);
- lucene.reindex(name, repository);
+ model = newRepositoryModel(repository);
+ lucene.reindex(model, repository);
repository.close();
lucene.close();
@@ -80,51 +98,51 @@
// 2 occurrences on the master branch
Repository repository = GitBlitSuite.getHelloworldRepository();
- String name = getName(repository);
+ RepositoryModel model = newRepositoryModel(repository);
repository.close();
- List<SearchResult> results = lucene.search("ada", 10, name);
+ List<SearchResult> results = lucene.search("ada", 1, 10, model.name);
assertEquals(2, results.size());
for (SearchResult res : results) {
assertEquals("refs/heads/master", res.branch);
}
// author test
- results = lucene.search("author: tinogomes AND type:commit", 10, name);
+ results = lucene.search("author: tinogomes AND type:commit", 1, 10, model.name);
assertEquals(2, results.size());
// blob test
- results = lucene.search("type: blob AND \"import std.stdio\"", 10, name);
+ results = lucene.search("type: blob AND \"import std.stdio\"", 1, 10, model.name);
assertEquals(1, results.size());
assertEquals("d.D", results.get(0).path);
// 1 occurrence on the gh-pages branch
repository = GitBlitSuite.getTheoreticalPhysicsRepository();
- name = getName(repository);
+ model = newRepositoryModel(repository);
repository.close();
- results = lucene.search("\"add the .nojekyll file\"", 10, name);
+ results = lucene.search("\"add the .nojekyll file\"", 1, 10, model.name);
assertEquals(1, results.size());
assertEquals("Ondrej Certik", results.get(0).author);
assertEquals("2648c0c98f2101180715b4d432fc58d0e21a51d7", results.get(0).commitId);
assertEquals("refs/heads/gh-pages", results.get(0).branch);
- results = lucene.search("type:blob AND \"src/intro.rst\"", 10, name);
+ results = lucene.search("type:blob AND \"src/intro.rst\"", 1, 10, model.name);
assertEquals(4, results.size());
// hash id tests
- results = lucene.search("commit:57c4f26f157ece24b02f4f10f5f68db1d2ce7ff5", 10, name);
+ results = lucene.search("commit:57c4f26f157ece24b02f4f10f5f68db1d2ce7ff5", 1, 10, model.name);
assertEquals(1, results.size());
- results = lucene.search("commit:57c4f26f157*", 10, name);
+ results = lucene.search("commit:57c4f26f157*", 1, 10, model.name);
assertEquals(1, results.size());
// annotated tag test
repository = GitBlitSuite.getJGitRepository();
- name = getName(repository);
+ model = newRepositoryModel(repository);
repository.close();
- results = lucene.search("I663208919f297836a9c16bf458e4a43ffaca4c12", 10, name);
+ results = lucene.search("I663208919f297836a9c16bf458e4a43ffaca4c12", 1, 10, model.name);
assertEquals(1, results.size());
assertEquals("[v1.3.0.201202151440-r]", results.get(0).tags.toString());
@@ -136,15 +154,28 @@
LuceneExecutor lucene = newLuceneExecutor();
List<String> list = new ArrayList<String>();
Repository repository = GitBlitSuite.getHelloworldRepository();
- list.add(getName(repository));
+ list.add(newRepositoryModel(repository).name);
repository.close();
repository = GitBlitSuite.getJGitRepository();
- list.add(getName(repository));
+ list.add(newRepositoryModel(repository).name);
repository.close();
- List<SearchResult> results = lucene.search("test", 10, list);
+ List<SearchResult> results = lucene.search("test", 1, 10, list);
lucene.close();
assertEquals(10, results.size());
}
+
+ @Test
+ public void testDeleteBlobFromIndex() throws Exception {
+ // start with a fresh reindex of entire repository
+ LuceneExecutor lucene = newLuceneExecutor();
+ Repository repository = GitBlitSuite.getHelloworldRepository();
+ RepositoryModel model = newRepositoryModel(repository);
+ lucene.reindex(model, repository);
+
+ // now delete a blob
+ assertTrue(lucene.deleteBlob(model.name, "refs/heads/master", "java.java"));
+ assertFalse(lucene.deleteBlob(model.name, "refs/heads/master", "java.java"));
+ }
}
\ No newline at end of file
--
Gitblit v1.9.1