From 6578ce5a2cf97111bfd26b70e4782e8c2565d27d Mon Sep 17 00:00:00 2001 From: Kengo TODA Date: Fri, 17 Apr 2015 07:33:24 +0800 Subject: [PATCH 1/5] update current year --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 31292e4..bbc1982 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Changelog Copyright and license --------------------- -Copyright 2012 Kengo TODA (eller86) +Copyright 2015 Kengo TODA (eller86) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: From a58f9440d5d1adcadfcc7ccd6941b403e5b08843 Mon Sep 17 00:00:00 2001 From: Kengo TODA Date: Fri, 17 Apr 2015 07:34:11 +0800 Subject: [PATCH 2/5] pass compilation, but still have four test failures --- pom.xml | 12 +++++++++++- .../regression/RegressionPredicate.java | 11 ++++++++--- .../regression/RegressionReportNotifier.java | 18 ++++++++++++++---- .../regression/TestResultToCaseResult.java | 13 +++++++++++++ 4 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 src/main/java/jp/skypencil/jenkins/regression/TestResultToCaseResult.java diff --git a/pom.xml b/pom.xml index 78979fb..2d961bf 100755 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ org.jenkins-ci.plugins plugin - 1.436 + 1.596 regression-report-plugin Regression Report Plugin @@ -73,6 +73,16 @@ + + org.jenkins-ci.plugins + junit + 1.3 + + + org.jenkins-ci.plugins + mailer + 1.10 + junit junit diff --git a/src/main/java/jp/skypencil/jenkins/regression/RegressionPredicate.java b/src/main/java/jp/skypencil/jenkins/regression/RegressionPredicate.java index fce2716..4d09efa 100755 --- a/src/main/java/jp/skypencil/jenkins/regression/RegressionPredicate.java +++ b/src/main/java/jp/skypencil/jenkins/regression/RegressionPredicate.java @@ -1,12 +1,17 @@ package jp.skypencil.jenkins.regression; import hudson.tasks.junit.CaseResult; +import hudson.tasks.test.TestResult; import com.google.common.base.Predicate; -class RegressionPredicate implements Predicate { +class RegressionPredicate implements Predicate { @Override - public boolean apply(CaseResult input) { - return input.getStatus().isRegression(); + public boolean apply(TestResult input) { + if (input instanceof CaseResult) { + CaseResult caseResult = (CaseResult) input; + return caseResult.getStatus().isRegression(); + } + return false; } } diff --git a/src/main/java/jp/skypencil/jenkins/regression/RegressionReportNotifier.java b/src/main/java/jp/skypencil/jenkins/regression/RegressionReportNotifier.java index 2347f8f..a816744 100644 --- a/src/main/java/jp/skypencil/jenkins/regression/RegressionReportNotifier.java +++ b/src/main/java/jp/skypencil/jenkins/regression/RegressionReportNotifier.java @@ -16,6 +16,7 @@ import hudson.tasks.Mailer; import hudson.tasks.junit.CaseResult; import hudson.tasks.test.AbstractTestResultAction; +import hudson.tasks.test.TestResult; import java.io.PrintStream; import java.util.Date; @@ -33,6 +34,7 @@ import javax.mail.internet.MimeMessage; import jenkins.model.Jenkins; +import jenkins.model.JenkinsLocationConfiguration; import org.kohsuke.stapler.DataBoundConstructor; @@ -103,8 +105,7 @@ public boolean perform(AbstractBuild build, Launcher launcher, } logger.println("regression reporter starts now..."); - List failedTest = testResultAction.getFailedTests(); - List regressionedTests = Lists.newArrayList(Iterables.filter(failedTest, new RegressionPredicate())); + List regressionedTests = listRegressions(testResultAction); writeToConsole(regressionedTests, listener); try { @@ -117,6 +118,15 @@ public boolean perform(AbstractBuild build, Launcher launcher, return true; } + private List listRegressions( + AbstractTestResultAction testResultAction) { + List failedTest = testResultAction.getFailedTests(); + Iterable filtered = Iterables.filter(failedTest, new RegressionPredicate()); + List regressionedTests = + Lists.newArrayList(Iterables.transform(filtered, new TestResultToCaseResult())); + return regressionedTests; + } + private void writeToConsole(List regressions, BuildListener listener) { if (regressions.isEmpty()) { @@ -147,8 +157,8 @@ private void mailReport(List regressions, String recipients, if (Jenkins.getInstance() != null) { rootUrl = Jenkins.getInstance().getRootUrl(); session = Mailer.descriptor().createSession(); - adminAddress = new InternetAddress(Mailer.descriptor() - .getAdminAddress()); + adminAddress = new InternetAddress( + JenkinsLocationConfiguration.get().getAdminAddress()); } builder.append(Util.encode(rootUrl)); builder.append(Util.encode(build.getUrl())); diff --git a/src/main/java/jp/skypencil/jenkins/regression/TestResultToCaseResult.java b/src/main/java/jp/skypencil/jenkins/regression/TestResultToCaseResult.java new file mode 100644 index 0000000..1d50688 --- /dev/null +++ b/src/main/java/jp/skypencil/jenkins/regression/TestResultToCaseResult.java @@ -0,0 +1,13 @@ +package jp.skypencil.jenkins.regression; + +import hudson.tasks.junit.CaseResult; +import hudson.tasks.test.TestResult; + +import com.google.common.base.Function; + +class TestResultToCaseResult implements Function { + @Override + public CaseResult apply(TestResult input) { + return (CaseResult) input; + } +} From aa172c1e4db8dfee1f4077e7e0f02449bc3f03f8 Mon Sep 17 00:00:00 2001 From: Kengo TODA Date: Sat, 18 Apr 2015 06:10:55 +0800 Subject: [PATCH 3/5] update test cases to pass --- .../jenkins/regression/ChangeLogSetMock.java | 2 +- .../RegressionReportConfigTest.java | 24 +++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/test/java/jp/skypencil/jenkins/regression/ChangeLogSetMock.java b/src/test/java/jp/skypencil/jenkins/regression/ChangeLogSetMock.java index cf73762..b45a64a 100644 --- a/src/test/java/jp/skypencil/jenkins/regression/ChangeLogSetMock.java +++ b/src/test/java/jp/skypencil/jenkins/regression/ChangeLogSetMock.java @@ -14,7 +14,7 @@ public class ChangeLogSetMock extends ChangeLogSet { protected ChangeLogSetMock(AbstractBuild build) { - super(build); + super(build, null); } private final Set set = Sets.newHashSet(); diff --git a/src/test/java/jp/skypencil/jenkins/regression/RegressionReportConfigTest.java b/src/test/java/jp/skypencil/jenkins/regression/RegressionReportConfigTest.java index 641e235..ea9eeef 100644 --- a/src/test/java/jp/skypencil/jenkins/regression/RegressionReportConfigTest.java +++ b/src/test/java/jp/skypencil/jenkins/regression/RegressionReportConfigTest.java @@ -6,18 +6,24 @@ import hudson.model.FreeStyleProject; import java.io.IOException; +import java.util.List; import org.junit.Ignore; +import org.junit.Rule; import org.junit.Test; -import org.jvnet.hudson.test.HudsonTestCase; +import org.jvnet.hudson.test.JenkinsRule; import org.xml.sax.SAXException; +import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlButton; +import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlInput; import com.gargoylesoftware.htmlunit.html.HtmlPage; -public class RegressionReportConfigTest extends HudsonTestCase { +public class RegressionReportConfigTest { + @Rule + public JenkinsRule jenkins = new JenkinsRule(); private static final String NAME_CHECKBOX = "jp-skypencil-jenkins-regression-RegressionReportNotifier"; private static final String JOB_NAME = "Test"; @@ -38,17 +44,16 @@ public void testEnabledIsFalse() throws FormException, IOException, private void testEnabled(boolean isEnabled) throws FormException, IOException, SAXException { - FreeStyleProject project = createFreeStyleProject(JOB_NAME); + FreeStyleProject project = jenkins.createFreeStyleProject(JOB_NAME); try { - HtmlPage configPage = new WebClient().goTo("job/" + JOB_NAME + HtmlPage configPage = new WebClient().getPage("job/" + JOB_NAME + "/configure"); HtmlForm form = configPage.getFormByName("config"); form.getInputByName(NAME_CHECKBOX).setChecked(isEnabled); - form.submit((HtmlButton) last(form - .getHtmlElementsByTagName("button"))); + form.submit(last(form.getHtmlElementsByTagName("button"))); - configPage = new WebClient().goTo("job/" + JOB_NAME + "/configure"); + configPage = new WebClient().getPage("job/" + JOB_NAME + "/configure"); form = configPage.getFormByName("config"); HtmlInput checkbox = form.getInputByName(NAME_CHECKBOX); assertThat(checkbox.isChecked(), is(isEnabled)); @@ -60,4 +65,9 @@ private void testEnabled(boolean isEnabled) throws FormException, } } } + + private HtmlButton last(List htmlElementsByTagName) { + HtmlElement lastElement = htmlElementsByTagName.get(htmlElementsByTagName.size() - 1); + return (HtmlButton) lastElement; + } } From 79296f1200bc740e2ccbc649a0973c528fabfa61 Mon Sep 17 00:00:00 2001 From: Kengo TODA Date: Sat, 18 Apr 2015 06:18:29 +0800 Subject: [PATCH 4/5] add and to pass build on Buildhive. --- pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pom.xml b/pom.xml index 2d961bf..7a35ee2 100755 --- a/pom.xml +++ b/pom.xml @@ -108,4 +108,16 @@ test + + + repo.jenkins-ci.org + http://repo.jenkins-ci.org/public/ + + + + + repo.jenkins-ci.org + http://repo.jenkins-ci.org/public/ + + From 7fbd71150fecfab647f6aa5f23439484d08787a6 Mon Sep 17 00:00:00 2001 From: Kengo TODA Date: Sat, 18 Apr 2015 07:03:34 +0800 Subject: [PATCH 5/5] add changelog --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index bbc1982..bae28f7 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,9 @@ Changelog ### 1.2 - fix #5 NoSuchMethodError +### 1.3 +- upgrade Jenkins to the latest LTS (1.596) + Copyright and license --------------------- Copyright 2015 Kengo TODA (eller86)