use of org.opengrok.indexer.condition.RepositoryInstalled.Type.MERCURIAL in project OpenGrok by OpenGrok.
the class ProjectsControllerTest method testAdd.
/**
* Verify that added project correctly inherits a property
* from configuration. Ideally, this should test all properties of Project.
*/
@Test
void testAdd() throws Exception {
assertTrue(env.getRepositories().isEmpty());
assertTrue(env.getProjects().isEmpty());
// Add a group matching the project to be added.
String groupName = "mercurialgroup";
Group group = new Group(groupName, "mercurial.*");
env.getGroups().add(group);
assertTrue(env.hasGroups());
assertEquals(1, env.getGroups().stream().filter(g -> g.getName().equals(groupName)).collect(Collectors.toSet()).size());
assertEquals(0, group.getRepositories().size());
assertEquals(0, group.getProjects().size());
// Add a sub-repository.
String repoPath = repository.getSourceRoot() + File.separator + "mercurial";
File mercurialRoot = new File(repoPath);
File subDir = new File(mercurialRoot, "usr");
assertTrue(subDir.mkdir());
String subRepoPath = repoPath + File.separator + "usr" + File.separator + "closed";
File mercurialSubRoot = new File(subRepoPath);
MercurialRepositoryTest.runHgCommand(mercurialRoot, "clone", mercurialRoot.getAbsolutePath(), subRepoPath);
// Add the project.
env.setScanningDepth(3);
addProject("mercurial");
// Check that the project was added properly.
assertTrue(env.getProjects().containsKey("mercurial"));
assertEquals(1, env.getProjects().size());
assertEquals(2, env.getRepositories().size());
assertEquals(1, group.getRepositories().size());
assertEquals(0, group.getProjects().size());
assertEquals(1, group.getRepositories().stream().filter(p -> p.getName().equals("mercurial")).collect(Collectors.toSet()).size());
// Check that HistoryGuru now includes the project in its list.
Set<String> directoryNames = HistoryGuru.getInstance().getRepositories().stream().map(RepositoryInfo::getDirectoryName).collect(Collectors.toSet());
assertTrue(directoryNames.contains(repoPath) || directoryNames.contains(mercurialRoot.getCanonicalPath()), "though it should contain the top root,");
assertTrue(directoryNames.contains(subRepoPath) || directoryNames.contains(mercurialSubRoot.getCanonicalPath()), "though it should contain the sub-root,");
// Add more projects and check that they have been added incrementally.
// At the same time, it checks that multiple projects can be added
// with single message.
addProject("git");
assertEquals(2, env.getProjects().size());
assertEquals(3, env.getRepositories().size());
assertTrue(env.getProjects().containsKey("git"));
assertFalse(HistoryGuru.getInstance().getRepositories().stream().map(RepositoryInfo::getDirectoryName).collect(Collectors.toSet()).contains("git"));
}
use of org.opengrok.indexer.condition.RepositoryInstalled.Type.MERCURIAL in project OpenGrok by OpenGrok.
the class ProjectsControllerTest method testDelete.
/**
* This test needs to perform indexing so that it can be verified that
* delete handling does remove the index data.
*/
@Test
void testDelete() throws Exception {
String[] projectsToDelete = { "git" };
// Add a group matching the project to be added.
String groupName = "gitgroup";
Group group = new Group(groupName, "git.*");
env.getGroups().add(group);
assertTrue(env.hasGroups());
assertEquals(1, env.getGroups().stream().filter(g -> g.getName().equals(groupName)).collect(Collectors.toSet()).size());
assertEquals(0, group.getRepositories().size());
assertEquals(0, group.getProjects().size());
assertEquals(0, env.getProjects().size());
assertEquals(0, env.getRepositories().size());
assertEquals(0, env.getProjectRepositoriesMap().size());
addProject("mercurial");
addProject("git");
assertEquals(2, env.getProjects().size());
assertEquals(2, env.getRepositories().size());
assertEquals(2, env.getProjectRepositoriesMap().size());
// Check the group was populated properly.
assertEquals(1, group.getRepositories().size());
assertEquals(0, group.getProjects().size());
assertEquals(1, group.getRepositories().stream().filter(p -> p.getName().equals("git")).collect(Collectors.toSet()).size());
// Run the indexer so that data directory is populated.
ArrayList<String> subFiles = new ArrayList<>();
subFiles.add("/git");
subFiles.add("/mercurial");
ArrayList<String> repos = new ArrayList<>();
repos.add("/git");
repos.add("/mercurial");
// This is necessary so that repositories in HistoryGuru get populated.
// For per project reindex this is called from setConfiguration() because
// of the -R option is present.
HistoryGuru.getInstance().invalidateRepositories(env.getRepositories(), null, CommandTimeoutType.INDEXER);
env.setHistoryEnabled(true);
Indexer.getInstance().prepareIndexer(env, // don't search for repositories
false, // don't scan and add projects
false, // don't create dictionary
false, // subFiles - needed when refreshing history partially
subFiles, // repositories - needed when refreshing history partially
repos);
Indexer.getInstance().doIndexerExecution(true, null, null);
for (String proj : projectsToDelete) {
deleteProject(proj);
}
assertEquals(1, env.getProjects().size());
assertEquals(1, env.getRepositories().size());
assertEquals(1, env.getProjectRepositoriesMap().size());
// Test data removal.
for (String projectName : projectsToDelete) {
for (String dirName : new String[] { "historycache", IndexDatabase.XREF_DIR, IndexDatabase.INDEX_DIR }) {
File dir = new File(env.getDataRootFile(), dirName + File.separator + projectName);
assertFalse(dir.exists());
}
}
// Check that HistoryGuru no longer maintains the removed projects.
for (String p : projectsToDelete) {
assertFalse(HistoryGuru.getInstance().getRepositories().stream().map(RepositoryInfo::getDirectoryName).collect(Collectors.toSet()).contains(repository.getSourceRoot() + File.separator + p));
}
// Check the group no longer contains the removed project.
assertEquals(0, group.getRepositories().size());
assertEquals(0, group.getProjects().size());
}
use of org.opengrok.indexer.condition.RepositoryInstalled.Type.MERCURIAL in project OpenGrok by OpenGrok.
the class IndexerTest method testSetRepositories.
@Test
@EnabledForRepository(MERCURIAL)
void testSetRepositories() throws Exception {
RuntimeEnvironment env = RuntimeEnvironment.getInstance();
TestRepository testrepo = new TestRepository();
testrepo.create(HistoryGuru.class.getResource("/repositories"));
env.setSourceRoot(testrepo.getSourceRoot());
env.setRepositories(testrepo.getSourceRoot());
assertEquals(7, env.getRepositories().size());
String[] repoNames = { "mercurial", "git" };
env.setRepositories(Arrays.stream(repoNames).map(t -> Paths.get(env.getSourceRootPath(), t).toString()).distinct().toArray(String[]::new));
assertEquals(2, env.getRepositories().size());
}
Aggregations