@Test public void shouldFindModificationsForBothMaterials() throws Exception { Materials materials = new Materials(repo.createMaterial("dest1"), repo.createMaterial("dest2")); String fileName = "newFile.txt"; repo.addFileAndPush(fileName, "add a new file " + fileName); MaterialRevisions materialRevisions = materials.latestModification(pipelineDir, new TestSubprocessExecutionContext()); assertThat(materialRevisions.getRevisions().size(), is(2)); assertThat(materialRevisions, containsModifiedFile(fileName)); } }
@Test public void shouldFindModificationsForBothMaterials() throws Exception { Materials materials = new Materials(repo.createMaterial("dest1"), repo.createMaterial("dest2")); repo.commitAndPushFile("SomeDocumentation.txt"); MaterialRevisions materialRevisions = materials.latestModification(pipelineDir, new TestSubprocessExecutionContext()); assertThat(materialRevisions.getRevisions().size(), is(2)); assertThat(materialRevisions, containsModifiedBy("SomeDocumentation.txt", "user")); }
@Test public void shouldUpdateSubmodules() throws Exception { GitSubmoduleRepos submoduleRepos = new GitSubmoduleRepos(temporaryFolder); submoduleRepos.addSubmodule(SUBMODULE, "sub1"); GitMaterial gitMaterial = new GitMaterial(submoduleRepos.mainRepo().getUrl()); File serverWorkingDir = temporaryFolder.newFolder(); Materials materials = new Materials(); materials.add(gitMaterial); MaterialRevisions materialRevisions = materials.latestModification(serverWorkingDir, new TestSubprocessExecutionContext()); File agentWorkingDir = temporaryFolder.newFolder(); MaterialRevision materialRevision = materialRevisions.getMaterialRevision(0); materialRevision.updateTo(agentWorkingDir, inMemoryConsumer(), new TestSubprocessExecutionContext()); File localFile = submoduleRepos.files(GitSubmoduleRepos.NAME).get(0); assertThat(new File(agentWorkingDir, localFile.getName()), exists()); File file = submoduleRepos.files(SUBMODULE).get(0); File workingSubmoduleFolder = new File(agentWorkingDir, "sub1"); assertThat(new File(workingSubmoduleFolder, file.getName()), exists()); }
@Test public void shouldFindModificationForEachMaterial() throws Exception { SvnMaterial material1 = repo.createMaterial("multiple-materials/trunk/part1", "part1"); SvnMaterial material2 = repo.createMaterial("multiple-materials/trunk/part2", "part2"); Materials materials = new Materials(material1, material2); repo.checkInOneFile("filename.txt", material1); repo.checkInOneFile("filename2.txt", material2); MaterialRevisions materialRevisions = materials.latestModification(pipelineDir, new TestSubprocessExecutionContext()); assertThat(materialRevisions.getRevisions().size(), is(2)); assertThat(materialRevisions, containsModifiedFile("/trunk/part1/filename.txt")); assertThat(materialRevisions, containsModifiedFile("/trunk/part2/filename2.txt")); }
@Test public void shouldFoundModificationsForEachMaterial() throws Exception { P4Material p4Material1 = p4Fixture.material(VIEW_SRC, "src"); P4Material p4Material2 = p4Fixture.material(VIEW_LIB, "lib"); Materials materials = new Materials(p4Material1, p4Material2); p4TestRepo.checkInOneFile(p4Material1, "filename.txt"); p4TestRepo.checkInOneFile(p4Material2, "filename2.txt"); MaterialRevisions materialRevisions = materials.latestModification(clientFolder, new TestSubprocessExecutionContext()); assertThat(materialRevisions.getRevisions().size(), is(2)); assertThat(materialRevisions, containsModifiedFile("src/filename.txt")); assertThat(materialRevisions, containsModifiedFile("lib/filename2.txt")); }
@Test public void shouldGetLatestRevision() { SvnMaterial svn = svnMaterial(svnRepo.projectRepositoryUrl(), null); SvnMaterial svnExt = svnMaterial(svnRepo.externalRepositoryUrl(), "end2end"); final Materials materials = new Materials(svn, svnExt); final MaterialRevisions materialRevisions = materials.latestModification(svnRepo.workingFolder(), new TestSubprocessExecutionContext()); assertThat(materialRevisions.numberOfRevisions(), is(2)); MaterialRevision main = materialRevisions.getRevisions().get(0); assertThat(main.getMaterial(), is(svn)); assertThat(main.getModifications().size(), is(1)); assertThat(main.getRevision().getRevision(), is("5")); MaterialRevision external = materialRevisions.getRevisions().get(1); assertThat(external.getMaterial(), is(svnExt)); assertThat(external.getRevision().getRevision(), is("4")); assertThat(external.getModifications().size(), is(1)); } }
@Test public void shouldGetLatestModifications() throws Exception { HgMaterial hgMaterial = hgRepo.material(); SvnMaterial svnMaterial = svnRepo.createMaterial("multiple-materials/trunk/part1", "part1"); Materials materials = new Materials(hgMaterial, svnMaterial); MaterialRevisions revisions = materials.latestModification(pipelineDir, new TestSubprocessExecutionContext()); assertThat(revisions.getMaterialRevision(0).numberOfModifications(), is(1)); assertThat(revisions.getMaterialRevision(0).getRevision(), is(new Modifications(hgRepo.latestModifications()).latestRevision(hgMaterial))); assertThat(revisions.getMaterialRevision(1).numberOfModifications(), is(1)); assertThat(revisions.getMaterialRevision(1).getRevision(), is(latestRevision(svnMaterial, pipelineDir, new TestSubprocessExecutionContext()))); assertThat(revisions.toString(), revisions.totalNumberOfModifications(), is(2)); }
@Test public void shouldDetectLatestModifications() throws Exception { SvnMaterial svnMaterial1 = repo.createMaterial("multiple-materials/trunk/part1", "part1"); SvnMaterial svnMaterial2 = repo.createMaterial("multiple-materials/trunk/part2", "part2"); Materials materials = new Materials(svnMaterial1, svnMaterial2); MaterialRevisions materialRevisions = materials.latestModification(pipelineDir, new TestSubprocessExecutionContext()); MaterialRevision revision1 = materialRevisions.getMaterialRevision(0); assertThat(revision1.getRevision(), is(latestRevision(svnMaterial1, pipelineDir, new TestSubprocessExecutionContext()))); MaterialRevision revision2 = materialRevisions.getMaterialRevision(1); assertThat(revision2.getRevision(), is(latestRevision(svnMaterial2, pipelineDir, new TestSubprocessExecutionContext()))); }
@Test public void shouldGetLatestModificationsFromRepoWithSubmodules() throws Exception { GitSubmoduleRepos submoduleRepos = new GitSubmoduleRepos(temporaryFolder); submoduleRepos.addSubmodule(SUBMODULE, "sub1"); GitMaterial gitMaterial = new GitMaterial(submoduleRepos.mainRepo().getUrl()); File workingDirectory = temporaryFolder.newFolder(); Materials materials = new Materials(); materials.add(gitMaterial); MaterialRevisions materialRevisions = materials.latestModification(workingDirectory, new TestSubprocessExecutionContext()); assertThat(materialRevisions.numberOfRevisions(), is(1)); MaterialRevision materialRevision = materialRevisions.getMaterialRevision(0); assertThat(materialRevision.getRevision().getRevision(), is(submoduleRepos.currentRevision(GitSubmoduleRepos.NAME))); }
@Test public void shouldGetLatestModificationswithThreeRepositories() throws Exception { HgMaterial hgMaterial = hgRepo.material(); SvnMaterial svnMaterial = svnRepo.createMaterial("multiple-materials/trunk/part1", "part1"); GitMaterial gitMaterial = gitRepo.createMaterial(); Materials materials = new Materials(hgMaterial, svnMaterial, gitMaterial); MaterialRevisions revisions = materials.latestModification(pipelineDir, new TestSubprocessExecutionContext()); assertThat(revisions.getMaterialRevision(0).numberOfModifications(), is(1)); assertThat(revisions.getMaterialRevision(0).getRevision(), is(new Modifications(hgRepo.latestModifications()).latestRevision(hgMaterial))); assertThat(revisions.getMaterialRevision(1).numberOfModifications(), is(1)); assertThat(revisions.getMaterialRevision(1).getRevision(), is(latestRevision(svnMaterial, pipelineDir, new TestSubprocessExecutionContext()))); assertThat(revisions.getMaterialRevision(2).numberOfModifications(), is(1)); assertThat(revisions.getMaterialRevision(2).getRevision(), is(new Modifications(gitRepo.latestModifications()).latestRevision(gitMaterial))); assertThat(revisions.toString(), revisions.totalNumberOfModifications(), is(3)); }