@Before public void setUp() throws Exception { util = new Util(); load( "gerrit", "gerrit_common_test.pl", new AbstractModule() { @Override protected void configure() { Config cfg = new Config(); cfg.setInt("rules", null, "reductionLimit", 1300); cfg.setInt("rules", null, "compileReductionLimit", (int) 1e6); bind(PrologEnvironment.Args.class) .toInstance(new PrologEnvironment.Args(null, null, null, null, null, null, cfg)); } }); local = new ProjectConfig(localKey); local.load(InMemoryRepositoryManager.newRepository(localKey)); Q.setRefPatterns(Arrays.asList("refs/heads/develop")); local.getLabelSections().put(V.getName(), V); local.getLabelSections().put(Q.getName(), Q); util.add(local); allow(local, LABEL + V.getName(), -1, +1, SystemGroupBackend.REGISTERED_USERS, "refs/heads/*"); allow( local, LABEL + Q.getName(), -1, +1, SystemGroupBackend.REGISTERED_USERS, "refs/heads/master"); }
private void assertValueRange(LabelType label, Integer... range) { assertEquals(Arrays.asList(range), label.getValuesAsList()); assertEquals(range[0], Integer.valueOf(label.getMax().getValue())); assertEquals(range[range.length - 1], Integer.valueOf(label.getMin().getValue())); for (LabelValue v : label.getValues()) { assertFalse(Strings.isNullOrEmpty(v.getText())); } }
@Test public void testCreateSchema_LabelTypes() throws Exception { List<String> labels = Lists.newArrayList(); for (LabelType label : getLabelTypes().getLabelTypes()) { labels.add(label.getName()); } assertEquals(ImmutableList.of("Code-Review"), labels); }
@Test public void testCreateSchema_Label_CodeReview() throws Exception { LabelType codeReview = getLabelTypes().byLabel("Code-Review"); assertNotNull(codeReview); assertEquals("Code-Review", codeReview.getName()); assertEquals(0, codeReview.getDefaultValue()); assertEquals("MaxWithBlock", codeReview.getFunctionName()); assertTrue(codeReview.isCopyMinScore()); assertValueRange(codeReview, 2, 1, 0, -1, -2); }
public String createCherryPickCommitMessage(RevCommit n, ChangeControl ctl, PatchSet.Id psId) { Change c = ctl.getChange(); final List<FooterLine> footers = n.getFooterLines(); final StringBuilder msgbuf = new StringBuilder(); msgbuf.append(n.getFullMessage()); if (msgbuf.length() == 0) { // WTF, an empty commit message? msgbuf.append("<no commit message provided>"); } if (msgbuf.charAt(msgbuf.length() - 1) != '\n') { // Missing a trailing LF? Correct it (perhaps the editor was broken). msgbuf.append('\n'); } if (footers.isEmpty()) { // Doesn't end in a "Signed-off-by: ..." style line? Add another line // break to start a new paragraph for the reviewed-by tag lines. // msgbuf.append('\n'); } if (!contains(footers, FooterConstants.CHANGE_ID, c.getKey().get())) { msgbuf.append(FooterConstants.CHANGE_ID.getName()); msgbuf.append(": "); msgbuf.append(c.getKey().get()); msgbuf.append('\n'); } final String siteUrl = urlProvider.get(); if (siteUrl != null) { final String url = siteUrl + c.getId().get(); if (!contains(footers, FooterConstants.REVIEWED_ON, url)) { msgbuf.append(FooterConstants.REVIEWED_ON.getName()); msgbuf.append(": "); msgbuf.append(url); msgbuf.append('\n'); } } PatchSetApproval submitAudit = null; for (final PatchSetApproval a : safeGetApprovals(ctl, psId)) { if (a.getValue() <= 0) { // Negative votes aren't counted. continue; } if (a.isSubmit()) { // Submit is treated specially, below (becomes committer) // if (submitAudit == null || a.getGranted().compareTo(submitAudit.getGranted()) > 0) { submitAudit = a; } continue; } final Account acc = identifiedUserFactory.create(a.getAccountId()).getAccount(); final StringBuilder identbuf = new StringBuilder(); if (acc.getFullName() != null && acc.getFullName().length() > 0) { if (identbuf.length() > 0) { identbuf.append(' '); } identbuf.append(acc.getFullName()); } if (acc.getPreferredEmail() != null && acc.getPreferredEmail().length() > 0) { if (isSignedOffBy(footers, acc.getPreferredEmail())) { continue; } if (identbuf.length() > 0) { identbuf.append(' '); } identbuf.append('<'); identbuf.append(acc.getPreferredEmail()); identbuf.append('>'); } if (identbuf.length() == 0) { // Nothing reasonable to describe them by? Ignore them. continue; } final String tag; if (isCodeReview(a.getLabelId())) { tag = "Reviewed-by"; } else if (isVerified(a.getLabelId())) { tag = "Tested-by"; } else { final LabelType lt = project.getLabelTypes().byLabel(a.getLabelId()); if (lt == null) { continue; } tag = lt.getName(); } if (!contains(footers, new FooterKey(tag), identbuf.toString())) { msgbuf.append(tag); msgbuf.append(": "); msgbuf.append(identbuf); msgbuf.append('\n'); } } return msgbuf.toString(); }