@Test public void shouldNotThrowNPEIfTheWorkingDirectoryIsEmpty() 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); Revision revision = latestRevision(svnMaterial1, pipelineDir, new TestSubprocessExecutionContext()); updateMaterials(materials, revision); FileUtils.deleteQuietly(pipelineDir); updateMaterials(materials, revision); }
@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 shouldNotDeleteWorkingDirIfThereAreNoRequiredFolders() throws Exception { SvnMaterial part = repo.createMaterial("multiple-materials/trunk/part1", null); Materials materials = new Materials(part); Revision revision = latestRevision(part, pipelineDir, new TestSubprocessExecutionContext()); updateMaterials(materials, revision); File shouldNotCleanUp = new File(pipelineDir, "shouldNotDelete"); shouldNotCleanUp.createNewFile(); assertThat(shouldNotCleanUp.exists(), is(true)); updateMaterials(materials, revision); assertThat("should not clean up working dir for this pipeline if none of the materials specified a sub folder", shouldNotCleanUp.exists(), is(true)); }
@Test public void shouldClearOutAllDirectoriesIfMaterialIsDeleted() throws Exception { SvnMaterial part1 = repo.createMaterial("multiple-materials/trunk/part1", "part1"); SvnMaterial part2 = repo.createMaterial("multiple-materials/trunk/part2", "part2"); Materials materials = new Materials(part1, part2); Revision revision = latestRevision(part1, pipelineDir, new TestSubprocessExecutionContext()); updateMaterials(materials, revision); assertThat(new File(pipelineDir, "part1").exists(), is(true)); assertThat(new File(pipelineDir, "part2").exists(), is(true)); Materials changedMaterials = new Materials(part1); updateMaterials(changedMaterials, revision); assertThat(new File(pipelineDir, "part1").exists(), is(true)); assertThat(new File(pipelineDir, "part2").exists(), is(false)); }
@Test public void shouldClearOutAllDirectoriesIfMaterialsChange() throws Exception { SvnMaterial part1 = repo.createMaterial("multiple-materials/trunk/part1", "part1"); SvnMaterial part2 = repo.createMaterial("multiple-materials/trunk/part2", "part2"); Materials materials = new Materials(part1, part2); Revision revision = latestRevision(part1, pipelineDir, new TestSubprocessExecutionContext()); updateMaterials(materials, revision); assertThat(new File(pipelineDir, "part1").exists(), is(true)); assertThat(new File(pipelineDir, "part2").exists(), is(true)); SvnMaterial newFolder = repo.createMaterial("multiple-materials/trunk/part2", "newFolder"); Materials changedMaterials = new Materials(part1, newFolder); updateMaterials(changedMaterials, revision); assertThat(new File(pipelineDir, "part1").exists(), is(true)); assertThat(new File(pipelineDir, "newFolder").exists(), is(true)); }
@Test public void shouldNotDeleteWorkingDirIfMaterialsAreCheckedOutToSubfoldersWithTheSameRootBug2320() throws Exception { SvnMaterial svnMaterial1 = repo.createMaterial("multiple-materials/trunk/part1", "root/part1"); SvnMaterial svnMaterial2 = repo.createMaterial("multiple-materials/trunk/part2", "root/part2"); Materials materials = new Materials(svnMaterial1, svnMaterial2); Revision revision = latestRevision(svnMaterial1, pipelineDir, new TestSubprocessExecutionContext()); updateMaterials(materials, revision); assertThat(new File(pipelineDir, "root/part1").exists(), is(true)); assertThat(new File(pipelineDir, "root/part2").exists(), is(true)); File testFile = new File(pipelineDir, "root/part1/test-file"); testFile.createNewFile(); assertThat(testFile.exists(), is(true)); //simulates what a build will do new File(pipelineDir, ArtifactLogUtil.CRUISE_OUTPUT_FOLDER).mkdir(); assertThat(pipelineDir.listFiles().length, is(2)); updateMaterials(materials, revision); assertThat(new File(pipelineDir, "root/part1").exists(), is(true)); assertThat(new File(pipelineDir, "root/part2").exists(), is(true)); assertThat("Should not delete the part1 directory", testFile.exists(), is(true)); }
@Test public void shouldNotDeleteDirectoriesWhenThereIsACruiseOutputDirectory() 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); Revision revision = latestRevision(svnMaterial1, pipelineDir, new TestSubprocessExecutionContext()); updateMaterials(materials, revision); assertThat(new File(pipelineDir, "part1").exists(), is(true)); assertThat(new File(pipelineDir, "part2").exists(), is(true)); File testFile = new File(pipelineDir, "part1/test-file"); testFile.createNewFile(); assertThat(testFile.exists(), is(true)); //simulates what a build will do new File(pipelineDir, ArtifactLogUtil.CRUISE_OUTPUT_FOLDER).mkdir(); assertThat(pipelineDir.listFiles().length, is(3)); updateMaterials(materials, revision); assertThat(new File(pipelineDir, "part1").exists(), is(true)); assertThat(new File(pipelineDir, "part2").exists(), is(true)); assertThat("Should not delete the part1 directory", testFile.exists(), is(true)); }