void parseFistline(Modification modification, String line, ConsoleResult result) throws P4OutputParseException { Pattern pattern = Pattern.compile(FIRST_LINE_PATTERN); Matcher matcher = pattern.matcher(line); if (matcher.find()) { modification.setRevision(matcher.group(1)); modification.setUserName(matcher.group(2)); try { modification.setModifiedTime(new SimpleDateFormat(P4_DATE_PATTERN).parse(matcher.group(3))); } catch (ParseException e) { throw bomb(e); } } else { LOG.warn("Could not parse P4 describe: {}", result.replaceSecretInfo(line)); throw new P4OutputParseException("Could not parse P4 describe: " + result.replaceSecretInfo(line)); } }
@Test public void shouldReplaceTheTemplateWithMultipleMaterialRevision() { PipelineLabel label = PipelineLabel.create("release-${svnMaterial}-${hg}", InsecureEnvironmentVariables.EMPTY_ENV_VARS); MaterialRevisions materialRevisions = ModificationsMother.oneUserOneFile(); HgMaterial material = MaterialsMother.hgMaterial(); material.setName(new CaseInsensitiveString("hg")); Modification modification = new Modification(); modification.setRevision("ae09876hj"); materialRevisions.addRevision(material, modification); label.updateLabel(materialRevisions.getNamedRevisions(), 1); assertThat(label.toString(), is("release-" + ModificationsMother.currentRevision() + "-ae09876hj")); }
@Test public void shouldReplaceTheTemplateWithGitMaterialRevision() { PipelineLabel label = PipelineLabel.create("release-${svnMaterial}-${git}", InsecureEnvironmentVariables.EMPTY_ENV_VARS); MaterialRevisions materialRevisions = ModificationsMother.oneUserOneFile(); ScmMaterial material = MaterialsMother.gitMaterial(""); material.setName(new CaseInsensitiveString("git")); Modification modification = new Modification(); modification.setRevision("8c8a273e12a45e57fed5ce978d830eb482f6f666"); materialRevisions.addRevision(material, modification); label.updateLabel(materialRevisions.getNamedRevisions(), 1); assertThat(label.toString(), is("release-" + ModificationsMother.currentRevision() + "-8c8a273e12a45e57fed5ce978d830eb482f6f666")); }
@Test public void shouldTruncateMaterialRevision() { PipelineLabel label = PipelineLabel.create("release-${svnMaterial}-${git[:6]}", InsecureEnvironmentVariables.EMPTY_ENV_VARS); MaterialRevisions materialRevisions = ModificationsMother.oneUserOneFile(); ScmMaterial material = MaterialsMother.gitMaterial(""); material.setName(new CaseInsensitiveString("git")); Modification modification = new Modification(); modification.setRevision("8c8a273e12a45e57fed5ce978d830eb482f6f666"); materialRevisions.addRevision(material, modification); label.updateLabel(materialRevisions.getNamedRevisions(), 1); assertThat(label.toString(), is("release-" + ModificationsMother.currentRevision() + "-8c8a27")); }