diff --git a/changelog.html b/changelog.html index 6a672a1106..75b82f874d 100644 --- a/changelog.html +++ b/changelog.html @@ -70,6 +70,9 @@ Upcoming changes
  • Startup can be broken by deeply recursive causes in build records. (issue 24161) +
  • + Displaying unabridged test result trend on project index page defeated lazy loading. + (issue 23945)
  • Added support for host:port format in X-Forwarded-Host header. (commit 19d8b80) diff --git a/core/src/main/java/hudson/tasks/test/AbstractTestResultAction.java b/core/src/main/java/hudson/tasks/test/AbstractTestResultAction.java index c813ab954b..ad0ad68a35 100644 --- a/core/src/main/java/hudson/tasks/test/AbstractTestResultAction.java +++ b/core/src/main/java/hudson/tasks/test/AbstractTestResultAction.java @@ -34,6 +34,7 @@ import java.io.IOException; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import jenkins.model.RunAction2; import org.jfree.chart.ChartFactory; @@ -187,13 +188,14 @@ public abstract class AbstractTestResultAction U getPreviousResult(Class type) { + private U getPreviousResult(Class type, boolean eager) { + Set loadedBuilds = eager ? null : owner.getProject()._getRuns().getLoadedBuilds().keySet(); AbstractBuild b = owner; while(true) { - b = b.getPreviousBuild(); + b = eager || loadedBuilds.contains(b.number - /* assuming there are no gaps */1) ? b.getPreviousBuild() : null; if(b==null) return null; U r = b.getAction(type); @@ -276,7 +278,7 @@ public abstract class AbstractTestResultAction dsb = new DataSetBuilder(); - for( AbstractTestResultAction a=this; a!=null; a=a.getPreviousResult(AbstractTestResultAction.class) ) { + for (AbstractTestResultAction a = this; a != null; a = a.getPreviousResult(AbstractTestResultAction.class, false)) { dsb.add( a.getFailCount(), "failed", new NumberOnlyBuildLabel(a.owner)); if(!failureOnly) { dsb.add( a.getSkipCount(), "skipped", new NumberOnlyBuildLabel(a.owner));