public Revision getRevision() { if (material == null) { return new NullRevision(); } return modifications.latestRevision(material); }
public void insertLatestOrNewModifications(Material material, MaterialInstance materialInstance, File folder, Modifications list) { List<Modification> newChanges = list.isEmpty() ? materialChecker.findLatestModification(folder, material, subprocessExecutionContext) : materialService.modificationsSince(material, folder, list.latestRevision(material), subprocessExecutionContext); if (newChanges.isEmpty()) { LOGGER.debug("[Material Update] Did not find any new modifications for material '{}' with flyweight '{}' using working directory '{}'", material, material.getFingerprint(), folder.getAbsolutePath()); } else { LOGGER.info("[Material Update] Found '{}' modifications for material '{}' with flyweight '{}' using working directory '{}'", newChanges.size(), material, material.getFingerprint(), folder.getAbsolutePath()); materialRepository.saveModifications(materialInstance, newChanges); } }
private Revision latestRevision(HgMaterial material, File workingDir, TestSubprocessExecutionContext execCtx) { List<Modification> modifications = material.latestModification(workingDir, execCtx); return new Modifications(modifications).latestRevision(material); } }
private Revision latestRevision(HgMaterial material, File workingDir, TestSubprocessExecutionContext execCtx) { List<Modification> modifications = material.latestModification(workingDir, execCtx); return new Modifications(modifications).latestRevision(material); }
private Revision latestRevision(SvnMaterial material, File workingDir, TestSubprocessExecutionContext execCtx) { List<Modification> modifications = material.latestModification(workingDir, execCtx); return new Modifications(modifications).latestRevision(material); }
private Revision latestRevision(SvnMaterial material, File workingDir, TestSubprocessExecutionContext execCtx) { List<Modification> modifications = material.latestModification(workingDir, execCtx); return new Modifications(modifications).latestRevision(material); }
private Revision latestRevision(SvnMaterial material, File workingDir, TestSubprocessExecutionContext execCtx) { List<Modification> modifications = material.latestModification(workingDir, execCtx); return new Modifications(modifications).latestRevision(material); }
@Test public void shouldGetLatestModificationsForPluggableSCMMaterial() { String revisionString = "123"; Date timestamp = new Date(); HashMap<String, String> data = new HashMap<>(); data.put("1", "one"); data.put("2", "two"); Modification modification = new Modification(null, null, null, timestamp, revisionString, JsonHelper.toJsonString(data)); Modifications modifications = new Modifications(modification); Revision revision = modifications.latestRevision(new PluggableSCMMaterial()); assertThat(revision instanceof PluggableSCMMaterialRevision, is(true)); PluggableSCMMaterialRevision pluggableSCMMaterialRevision = (PluggableSCMMaterialRevision) revision; assertThat(pluggableSCMMaterialRevision.getRevision(), is(revisionString)); assertThat(pluggableSCMMaterialRevision.getTimestamp(), is(timestamp)); assertThat(pluggableSCMMaterialRevision.getData().size(), is(data.size())); assertThat(pluggableSCMMaterialRevision.getData().get("1"), is(data.get("1"))); assertThat(pluggableSCMMaterialRevision.getData().get("2"), is(data.get("2"))); }
@Test public void shouldGetLatestModificationsForPackageMaterial() { Date timestamp = new Date(); String revisionString = "123"; HashMap<String, String> data = new HashMap<>(); data.put("1", "one"); data.put("2", "two"); Modification modification = new Modification(null, null, null, timestamp, revisionString, JsonHelper.toJsonString(data)); Modifications modifications = new Modifications(modification); Revision revision = modifications.latestRevision(new PackageMaterial()); assertThat(revision instanceof PackageMaterialRevision, is(true)); PackageMaterialRevision packageMaterialRevision = (PackageMaterialRevision) revision; assertThat(packageMaterialRevision.getRevision(), is(revisionString)); assertThat(packageMaterialRevision.getTimestamp(), is(timestamp)); assertThat(packageMaterialRevision.getData().size(), is(data.size())); assertThat(packageMaterialRevision.getData().get("1"), is(data.get("1"))); assertThat(packageMaterialRevision.getData().get("2"), is(data.get("2"))); }
@Test public void shouldParseMaterialRevisionWithPipelineLabel() { ArrayList<Modification> mods = new ArrayList<>(); Modification mod = new Modification(new Date(), "pipelineName/123/stageName/2", "pipeline-label-123", null); mods.add(mod); DependencyMaterialRevision revision = (DependencyMaterialRevision) new Modifications(mods).latestRevision(dependencyMaterial); assertThat(revision.getRevision(), is("pipelineName/123/stageName/2")); assertThat(revision.getPipelineLabel(), is("pipeline-label-123")); assertThat(revision.getPipelineCounter(), is(123)); assertThat(revision.getPipelineName(), is("pipelineName")); assertThat(revision.getStageName(), is("stageName")); assertThat(revision.getStageCounter(), is(2)); }
@Test public void shouldHaveModificationsWhenSubmoduleIsAdded() throws Exception { GitSubmoduleRepos submoduleRepos = new GitSubmoduleRepos(temporaryFolder); submoduleRepos.addSubmodule(SUBMODULE, "sub1"); GitMaterial gitMaterial = new GitMaterial(submoduleRepos.mainRepo().getUrl()); File serverWorkingDir = temporaryFolder.newFolder(); List<Modification> beforeAdd = gitMaterial.latestModification(serverWorkingDir, new TestSubprocessExecutionContext()); submoduleRepos.addSubmodule(SUBMODULE, "new-submodule"); List<Modification> afterAdd = gitMaterial.modificationsSince(serverWorkingDir, new Modifications(beforeAdd).latestRevision(gitMaterial), new TestSubprocessExecutionContext()); assertThat(afterAdd.size(), is(1)); assertThat(afterAdd.get(0).getComment(), is("Added submodule new-submodule")); }
@Test public void shouldHaveModificationsWhenSubmoduleIsRemoved() throws Exception { GitSubmoduleRepos submoduleRepos = new GitSubmoduleRepos(temporaryFolder); submoduleRepos.addSubmodule(SUBMODULE, "sub1"); GitMaterial gitMaterial = new GitMaterial(submoduleRepos.mainRepo().getUrl()); File serverWorkingDir = temporaryFolder.newFolder(); List<Modification> beforeAdd = gitMaterial.latestModification(serverWorkingDir, new TestSubprocessExecutionContext()); submoduleRepos.removeSubmodule("sub1"); List<Modification> after = gitMaterial.modificationsSince(serverWorkingDir, new Modifications(beforeAdd).latestRevision(gitMaterial), new TestSubprocessExecutionContext()); assertThat(after.size(), is(1)); assertThat(after.get(0).getComment(), is("Removed submodule sub1")); }
@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)); }
@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)); }