提交 b25e8e54 编写于 作者: J Jesse Glick

Introduced Run.StatusSummarizer extension point so that Run need not refer...

Introduced Run.StatusSummarizer extension point so that Run need not refer directly to AbstractTestResultAction.
上级 c8d7019c
......@@ -32,6 +32,7 @@ import com.thoughtworks.xstream.XStream;
import hudson.AbortException;
import hudson.BulkChange;
import hudson.EnvVars;
import hudson.ExtensionList;
import hudson.ExtensionPoint;
import hudson.FeedAdapter;
import hudson.Functions;
......@@ -53,7 +54,6 @@ import hudson.security.Permission;
import hudson.security.PermissionGroup;
import hudson.security.PermissionScope;
import hudson.tasks.BuildWrapper;
import hudson.tasks.test.AbstractTestResultAction;
import hudson.util.FlushProofOutputStream;
import hudson.util.FormApply;
import hudson.util.LogTaskListener;
......@@ -1985,9 +1985,24 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
}
}
/**
* Used to implement {@link #getBuildStatusSummary}.
* @since 1.575
*/
public static abstract class StatusSummarizer implements ExtensionPoint {
/**
* Possibly summarizes the reasons for a build’s status.
* @param run a completed build
* @param trend the result of {@link ResultTrend#getResultTrend(hudson.model.Run)} on {@code run} (precomputed for efficiency)
* @return a summary, or null to fall back to other summarizers or built-in behavior
*/
public abstract @CheckForNull Summary summarize(@Nonnull Run<?,?> run, @Nonnull ResultTrend trend);
}
/**
* Gets an object which represents the single line summary of the status of this build
* (especially in comparison with the previous build.)
* @see StatusSummarizer
*/
public @Nonnull Summary getBuildStatusSummary() {
if (isBuilding()) {
......@@ -1996,6 +2011,16 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
ResultTrend trend = ResultTrend.getResultTrend(this);
Jenkins j = Jenkins.getInstance();
if (j != null) {
for (StatusSummarizer summarizer : j.getExtensionList(StatusSummarizer.class)) {
Summary summary = summarizer.summarize(this, trend);
if (summary != null) {
return summary;
}
}
}
switch (trend) {
case ABORTED : return new Summary(false, Messages.Run_Summary_Aborted());
......@@ -2011,11 +2036,10 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
return new Summary(false, Messages.Run_Summary_BrokenSince(failedBuild.getDisplayName()));
case NOW_UNSTABLE:
return determineDetailedUnstableSummary(Boolean.FALSE);
case UNSTABLE :
return determineDetailedUnstableSummary(Boolean.TRUE);
case STILL_UNSTABLE :
return determineDetailedUnstableSummary(null);
return new Summary(false, Messages.Run_Summary_Unstable());
case UNSTABLE :
return new Summary(true, Messages.Run_Summary_Unstable());
case SUCCESS :
return new Summary(false, Messages.Run_Summary_Stable());
......@@ -2028,41 +2052,6 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
return new Summary(false, Messages.Run_Summary_Unknown());
}
/**
* @param worseOverride override the 'worse' parameter to this value.
* May be null in which case 'worse' is calculated based on the number of failed tests.
*/
private @Nonnull Summary determineDetailedUnstableSummary(Boolean worseOverride) {
if(((Run)this) instanceof AbstractBuild) {
AbstractTestResultAction trN = ((AbstractBuild)(Run)this).getAction(AbstractTestResultAction.class);
Run prev = getPreviousBuild();
AbstractTestResultAction trP = prev==null ? null : ((AbstractBuild) prev).getAction(AbstractTestResultAction.class);
if(trP==null) {
if(trN!=null && trN.getFailCount()>0)
return new Summary(worseOverride != null ? worseOverride : true,
Messages.Run_Summary_TestFailures(trN.getFailCount()));
} else {
if(trN!=null && trN.getFailCount()!= 0) {
if(trP.getFailCount()==0)
return new Summary(worseOverride != null ? worseOverride : true,
Messages.Run_Summary_TestsStartedToFail(trN.getFailCount()));
if(trP.getFailCount() < trN.getFailCount())
return new Summary(worseOverride != null ? worseOverride : true,
Messages.Run_Summary_MoreTestsFailing(trN.getFailCount()-trP.getFailCount(), trN.getFailCount()));
if(trP.getFailCount() > trN.getFailCount())
return new Summary(worseOverride != null ? worseOverride : false,
Messages.Run_Summary_LessTestsFailing(trP.getFailCount()-trN.getFailCount(), trN.getFailCount()));
return new Summary(worseOverride != null ? worseOverride : false,
Messages.Run_Summary_TestsStillFailing(trN.getFailCount()));
}
}
}
return new Summary(worseOverride != null ? worseOverride : false,
Messages.Run_Summary_Unstable());
}
/**
* Serves the artifacts.
* @throws AccessDeniedException Access denied
......
......@@ -23,6 +23,7 @@
*/
package hudson.tasks.test;
import hudson.Extension;
import hudson.Functions;
import hudson.model.*;
import hudson.util.*;
......@@ -374,4 +375,50 @@ public abstract class AbstractTestResultAction<T extends AbstractTestResultActio
return this;
}
@Extension public static final class Summarizer extends Run.StatusSummarizer {
@Override public Run.Summary summarize(Run<?,?> run, ResultTrend trend) {
AbstractTestResultAction<?> trN = run.getAction(AbstractTestResultAction.class);
if (trN == null) {
return null;
}
Boolean worseOverride;
switch (trend) {
case NOW_UNSTABLE:
worseOverride = false;
break;
case UNSTABLE:
worseOverride = true;
break;
case STILL_UNSTABLE:
worseOverride = null;
break;
default:
return null;
}
Run prev = run.getPreviousBuild();
AbstractTestResultAction<?> trP = prev == null ? null : prev.getAction(AbstractTestResultAction.class);
if (trP == null) {
if (trN.getFailCount() > 0) {
return new Run.Summary(worseOverride != null ? worseOverride : true, Messages.Run_Summary_TestFailures(trN.getFailCount()));
}
} else {
if (trN.getFailCount() != 0) {
if (trP.getFailCount() == 0) {
return new Run.Summary(worseOverride != null ? worseOverride : true, Messages.Run_Summary_TestsStartedToFail(trN.getFailCount()));
}
if (trP.getFailCount() < trN.getFailCount()) {
return new Run.Summary(worseOverride != null ? worseOverride : true, Messages.Run_Summary_MoreTestsFailing(trN.getFailCount() - trP.getFailCount(), trN.getFailCount()));
}
if (trP.getFailCount() > trN.getFailCount()) {
return new Run.Summary(worseOverride != null ? worseOverride : false, Messages.Run_Summary_LessTestsFailing(trP.getFailCount() - trN.getFailCount(), trN.getFailCount()));
}
return new Run.Summary(worseOverride != null ? worseOverride : false, Messages.Run_Summary_TestsStillFailing(trN.getFailCount()));
}
}
return null;
}
}
}
......@@ -234,11 +234,6 @@ Run.Summary.BackToNormal=back to normal
Run.Summary.BrokenForALongTime=broken for a long time
Run.Summary.BrokenSinceThisBuild=broken since this build
Run.Summary.BrokenSince=broken since build {0}
Run.Summary.TestFailures={0} {0,choice,0#test failures|1#test failure|1<test failures}
Run.Summary.TestsStartedToFail={0} {0,choice,0#tests|1#test|1<tests} started to fail
Run.Summary.TestsStillFailing={0} {0,choice,0#tests are|1#test is|1<tests are} still failing
Run.Summary.MoreTestsFailing={0} more {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.LessTestsFailing={0} less {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.Unknown=?
Slave.InvalidConfig.Executors=Invalid slave configuration for {0}. Invalid # of executors.
......
......@@ -23,7 +23,6 @@
AbstractBuild.BuildingRemotely=Fjernbygger p\u00e5 {0}
AbstractProject.ScmAborted=Kildekodestyring (SCM) check ud afbrudt
Queue.WaitingForNextAvailableExecutor=Venter p\u00e5 n\u00e6ste ledige afvikler
Run.Summary.TestsStartedToFail={0} test begyndte at fejle
AbstractProject.ExtendedReadPermission.Description=\
Denne tilladelse giver skrivebeskyttet adgang til projektkonfigurationerne. V\u00e6r opm\u00e6rksom p\u00e5 \
at f\u00f8lsomme informationer i dine byg, s\u00e5som adgangskoder, vil v\u00e6re synlige \
......@@ -84,7 +83,6 @@ UpdateCenter.PluginCategory.cli=Kommandolinieinterface
UpdateCenter.PluginCategory.builder=Byggev\u00e6rkt\u00f8jer
Slave.UnixSlave=Dette er en Unix slave
FileParameterDefinition.DisplayName=Filparametre
Run.Summary.TestsStillFailing={0} test fejler stadig
CLI.delete-job.shortDescription=Sletter et job
Run.Summary.Unstable=Ustabil
CLI.reload-configuration.shortDescription=Genindl\u00e6s alle data fra filsystemet. \
......@@ -121,7 +119,6 @@ Hudson.Permissions.Title=Overordnet
AbstractProject.UpstreamBuildInProgress=Upstreamprojektet {0} bygger allerede.
Permalink.LastBuild=Seneste Byg
MyViewsProperty.ViewExistsCheck.NotExist=En visning ved navn {0} findes ikke
Run.Summary.TestFailures={0} test fejler
AbstractItem.NoSuchJobExists=Intet job ved navn ''{0}'' eksisterer. M\u00e5ske mener du ''{1}''?
Slave.InvalidConfig.NoName=Ugyldig slavekonfiguration. Navnet er tomt.
Run.Summary.BackToNormal=tilbage p\u00e5 sporet
......@@ -155,7 +152,6 @@ Node.BecauseNodeIsReserved={0} er reserveret til jobs bundet(tied) til den
Job.minutes=min
Cause.RemoteCause.ShortDescriptionWithNote=Startet af fjernv\u00e6rt {0} med note: {1}
PasswordParameterDefinition.DisplayName=Adgangskodeparameter
Run.Summary.MoreTestsFailing={0} flere test fejlet (total {1})
UpdateCenter.PluginCategory.cluster=Klyngestyring og distribuerede byg
AbstractBuild.KeptBecause=beholdt pga. {0}
Hudson.NotADirectory={0} er ikke et direktorie
......@@ -186,7 +182,6 @@ s\u00e5vel som at k\u00f8re yderst f\u00f8lsomme operationer der effektivt svare
Hudson.NotJDKDir={0} ligner ikke et JDK direktorie
AbstractProject.WorkspaceOffline=Arbejdsomr\u00e5det er offline.
Queue.HudsonIsAboutToShutDown=Jenkins skal til at lukke ned
Run.Summary.LessTestsFailing={0} f\u00e6rre test fejler (total {1})
UpdateCenter.PluginCategory.slaves=Slavestartere og kontroll\u00f8rer
Api.MultipleMatch=XPath "{0}" matcher {1} noder. \
Lav en XPath der kun matcher en, eller brug en "omslags" foresp\u00f8rgselsparameter til at samle dem alle under et rodelement.
......
......@@ -216,11 +216,6 @@ Run.Summary.BackToNormal=Wieder normal
Run.Summary.BrokenForALongTime=Seit langem defekt.
Run.Summary.BrokenSinceThisBuild=Defekt seit diesem Build.
Run.Summary.BrokenSince=Defekt seit Build {0}
Run.Summary.TestFailures={0} {0,choice,0#fehlgeschlagene Tests|1#fehlgeschlagener Test|1<fehlgeschlagene Tests}
Run.Summary.TestsStartedToFail={0} {0,choice,0#Tests|1#Test|1<Tests} neu fehlgeschlagen
Run.Summary.TestsStillFailing={0} {0,choice,0#Tests schlagen|1#Test schl\u00e4gt|1<Tests schlagen} immer noch fehl
Run.Summary.MoreTestsFailing={0} {0,choice,0#Tests schlagen|1#Test schl\u00e4gt|1<Tests schlagen} zus\u00e4tzlich fehl (insgesamt: {1})
Run.Summary.LessTestsFailing={0} {0,choice,0#Tests schlagen|1#Test schl\u00e4gt|1<Tests schlagen} nicht mehr fehl (verbleibend: {1})
Run.Summary.Unknown=Ergebnis unbekannt
Slave.InvalidConfig.Executors=Ung\u00fcltige Slave-Einstellungen f\u00fcr {0}. Ung\u00fcltige Anzahl von Build-Prozessoren.
......
......@@ -162,11 +162,6 @@ Run.Summary.BackToNormal=volvi\u00f3 a normal
Run.Summary.BrokenForALongTime=fallido durante un largo periodo
Run.Summary.BrokenSinceThisBuild=fallido desde esta ejecuci\u00f3n
Run.Summary.BrokenSince=fallido desde la ejecuci\u00f3n {0}
Run.Summary.TestFailures={0} {0,choice,0#test fallidos|1#test fallido|1<test fallidos}
Run.Summary.TestsStartedToFail={0} {0,choice,0#tests|1#test|1<tests} han comenzado a fallar
Run.Summary.TestsStillFailing={0} {0,choice,0#tests est\u00e1n|1#test est\u00e1|1<tests est\u00e1n} fallando todav\u00eda
Run.Summary.MoreTestsFailing={0} mas de {0,choice,0#tests est\u00e1n|1#test est\u00e1|1<tests est\u00e1n} fallando (total {1})
Run.Summary.LessTestsFailing={0} menos de {0,choice,0#tests est\u00e1n|1#test est\u00e1|1<tests est\u00e1n} fallando (total {1})
Run.Summary.Unknown=?
Slave.InvalidConfig.Executors=Configuraci\u00f3n de nodo incorrecta en {0}. El n\u00famero de ejecutores es inv\u00e1lido.
......
......@@ -211,11 +211,6 @@ Run.Summary.BackToNormal=back to normal
Run.Summary.BrokenForALongTime=broken for a long time
Run.Summary.BrokenSinceThisBuild=broken since this build
Run.Summary.BrokenSince=broken since build {0}
Run.Summary.TestFailures={0} {0,choice,0#test failures|1#test failure|1<test failures}
Run.Summary.TestsStartedToFail={0} {0,choice,0#tests|1#test|1<tests} started to fail
Run.Summary.TestsStillFailing={0} {0,choice,0#tests are|1#test is|1<tests are} still failing
Run.Summary.MoreTestsFailing={0} more {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.LessTestsFailing={0} less {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.Unknown=?
Slave.InvalidConfig.Executors=Invalid slave configuration for {0}. Invalid # of executors.
......
......@@ -208,11 +208,6 @@ Run.Summary.BackToNormal=\u6b63\u5e38\u306b\u5fa9\u5e30
Run.Summary.BrokenForALongTime=\u9577\u671f\u9593\u6545\u969c\u4e2d
Run.Summary.BrokenSinceThisBuild=\u3053\u306e\u30d3\u30eb\u30c9\u304b\u3089\u6545\u969c
Run.Summary.BrokenSince=\u30d3\u30eb\u30c9{0}\u304b\u3089\u6545\u969c
Run.Summary.TestFailures={0}\u500b\u306e{0,choice,0#\u30c6\u30b9\u30c8\u5931\u6557|1#\u30c6\u30b9\u30c8\u5931\u6557|1<\u30c6\u30b9\u30c8\u5931\u6557}
Run.Summary.TestsStartedToFail={0}\u500b\u306e{0,choice,0#\u30c6\u30b9\u30c8|1#\u30c6\u30b9\u30c8|1<\u30c6\u30b9\u30c8}\u304c\u5931\u6557
Run.Summary.TestsStillFailing={0}\u500b\u306e{0,choice,0#\u30c6\u30b9\u30c8|1#\u30c6\u30b9\u30c8|1<\u30c6\u30b9\u30c8}\u304c\u307e\u3060\u5931\u6557
Run.Summary.MoreTestsFailing={0}\u500b\u306e{0,choice,0#\u30c6\u30b9\u30c8|1#\u30c6\u30b9\u30c8|1<\u30c6\u30b9\u30c8}\u304c\u66f4\u306b\u5931\u6557 (\u5408\u8a08 {1})
Run.Summary.LessTestsFailing={0}\u500b\u306e{0,choice,0#\u30c6\u30b9\u30c8|1#\u30c6\u30b9\u30c8|1<\u30c6\u30b9\u30c8}\u304c\u56de\u5fa9 (\u5408\u8a08 {1})
Run.Summary.Unknown=?
Slave.InvalidConfig.Executors=\u30b9\u30ec\u30fc\u30d6 {0} \u306e\u8a2d\u5b9a\u306b\u8aa4\u308a\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u6642\u5b9f\u884c\u6570\u304c\u4e0d\u6b63\u3067\u3059\u3002
......
......@@ -107,7 +107,6 @@ Permalink.LastFailedBuild=\u00daltimo build que falhou
# Waiting for next available executor
Queue.WaitingForNextAvailableExecutor=Esperando pelo pr\u00f3ximo executor dispon\u00edvel
# {0} {0,choice,0#tests|1#test|1<tests} started to fail
Run.Summary.TestsStartedToFail={0} {0,choice,0#tests|1#test|1<tests} come\u00e7ou a falhar
# \
# This permission grants read-only access to project configurations. Please be \
# aware that sensitive information in your builds, such as passwords, will be \
......@@ -191,7 +190,6 @@ UpdateCenter.PluginCategory.builder=Ferramentas de build
# File Parameter
FileParameterDefinition.DisplayName=Par\u00e2metros de arquivo
# {0} {0,choice,0#tests are|1#test is|1<tests are} still failing
Run.Summary.TestsStillFailing={0} {0,choice,0#testes |1#o teste |1<testes } ainda n\u00e3o
# Deletes a job
CLI.delete-job.shortDescription=Remover uma job
# unstable
......@@ -249,7 +247,6 @@ AbstractProject.UpstreamBuildInProgress=Projeto {0} j\u00e1 esta em builds
# A view with name {0} does not exist
MyViewsProperty.ViewExistsCheck.NotExist= A view {0} n\u00e3o existe
# {0} {0,choice,0#test failures|1#test failure|1<test failures}
Run.Summary.TestFailures=Falha no teste
# No such job ''{0}'' exists. Perhaps you meant ''{1}''?
AbstractItem.NoSuchJobExists=n\u00e3o existe o trabalho ''{0}''
# back to normal
......@@ -296,7 +293,6 @@ Cause.RemoteCause.ShortDescriptionWithNote=Host remoto {0} iniciado com a nota:
# Password Parameter
PasswordParameterDefinition.DisplayName=Par\u00e2metro da senha
# {0} more {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.MoreTestsFailing={0} testes falharam (total {1})
# Cluster Management and Distributed Build
UpdateCenter.PluginCategory.cluster=Gerenciamento de cluster e builds distribu\u00eddos
# Started by remote host {0}
......@@ -327,7 +323,6 @@ Hudson.AdministerPermission.Description=Permiss\u00e3o para habilitar a configur
# Jenkins is about to shut down
Queue.HudsonIsAboutToShutDown=Jenkins est\u00e1 prestes a encerrar
# {0} less {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.LessTestsFailing=(total {1}) falharam
# Slave Launchers and Controllers
UpdateCenter.PluginCategory.slaves=Controladores e lan\u00e7adores slave
# broken since build {0}
......
......@@ -173,11 +173,6 @@ Run.Summary.BackToNormal=back to normal
Run.Summary.BrokenForALongTime=broken for a long time
Run.Summary.BrokenSinceThisBuild=broken since this build
Run.Summary.BrokenSince=broken since build {0}
Run.Summary.TestFailures={0} {0,choice,0#test failures|1#test failure|1<test failures}
Run.Summary.TestsStartedToFail={0} {0,choice,0#tests|1#test|1<tests} started to fail
Run.Summary.TestsStillFailing={0} {0,choice,0#tests are|1#test is|1<tests are} still failing
Run.Summary.MoreTestsFailing={0} more {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.LessTestsFailing={0} less {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.Unknown=?
Slave.InvalidConfig.Executors=Invalid slave configuration for {0}. Invalid # of executors.
......
......@@ -217,11 +217,6 @@ Run.Summary.BackToNormal=\u6062\u5fa9\u6b63\u5e38
Run.Summary.BrokenForALongTime=\u721b\u6389\u597d\u4e00\u9663\u5b50\u4e86
Run.Summary.BrokenSinceThisBuild=\u5f9e\u9019\u6b21\u5efa\u7f6e\u958b\u59cb\u721b\u4e86
Run.Summary.BrokenSince=\u5f9e {0} \u6b21\u5efa\u7f6e\u958b\u59cb\u721b\u4e86
Run.Summary.TestFailures={0} \u500b\u6e2c\u8a66\u5931\u6557
Run.Summary.TestsStartedToFail={0} \u500b\u6e2c\u8a66\u958b\u59cb\u5931\u6557
Run.Summary.TestsStillFailing={0} \u500b\u6e2c\u8a66\u9084\u662f\u5931\u6557
Run.Summary.MoreTestsFailing=\u591a\u4e86 {0} \u500b\u6e2c\u8a66\u5931\u6557 (\u7e3d\u8a08 {1})
Run.Summary.LessTestsFailing=\u5c11\u4e86 {0} \u500b\u6e2c\u8a66\u5931\u6557 (\u7e3d\u8a08 {1})
Run.Summary.Unknown=?
Slave.InvalidConfig.Executors=Slave {0} \u8a2d\u5b9a\u932f\u8aa4\u3002\u57f7\u884c\u7a0b\u5f0f\u6578\u7121\u6548\u3002
......
......@@ -32,3 +32,8 @@ AbstractTestResultAction.test={0}: {1} {1,choice,0#tests|1#test|1<tests}
AggregatedTestResultPublisher.DisplayName=Aggregate downstream test results
AggregatedTestResultPublisher.Title=Aggregated Test Result
Run.Summary.TestFailures={0} {0,choice,0#test failures|1#test failure|1<test failures}
Run.Summary.TestsStartedToFail={0} {0,choice,0#tests|1#test|1<tests} started to fail
Run.Summary.MoreTestsFailing={0} more {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.LessTestsFailing={0} less {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.TestsStillFailing={0} {0,choice,0#tests are|1#test is|1<tests are} still failing
......@@ -29,3 +29,8 @@ AbstractTestResultAction.getDisplayName=Testresultat
AggregatedTestResultPublisher.DisplayName=Samle downstream testresultater
AbstractTestResultAction.skip={0} sprunget over
AbstractTestResultAction.zeroTestDescription={0}: 0 test i alt.
Run.Summary.TestFailures={0} test fejler
Run.Summary.TestsStartedToFail={0} test begyndte at fejle
Run.Summary.MoreTestsFailing={0} flere test fejlet (total {1})
Run.Summary.LessTestsFailing={0} f\u00e6rre test fejler (total {1})
Run.Summary.TestsStillFailing={0} test fejler stadig
......@@ -28,4 +28,8 @@ AbstractTestResultAction.skip={0}: {1} {1,choice,0#ausgelassen|1#ausgelassen|1<a
AbstractTestResultAction.test={0}: {1} {1,choice,0#Tests|1#Test|1<Tests}
AggregatedTestResultPublisher.DisplayName=Nachgelagerte Testergebnisse zusammenfassen
AggregatedTestResultPublisher.Title=Zusammengefasste Testergebnisse
\ No newline at end of file
AggregatedTestResultPublisher.Title=Zusammengefasste TestergebnisseRun.Summary.TestFailures={0} {0,choice,0#fehlgeschlagene Tests|1#fehlgeschlagener Test|1<fehlgeschlagene Tests}
Run.Summary.TestsStartedToFail={0} {0,choice,0#Tests|1#Test|1<Tests} neu fehlgeschlagen
Run.Summary.MoreTestsFailing={0} {0,choice,0#Tests schlagen|1#Test schl\u00e4gt|1<Tests schlagen} zus\u00e4tzlich fehl (insgesamt: {1})
Run.Summary.LessTestsFailing={0} {0,choice,0#Tests schlagen|1#Test schl\u00e4gt|1<Tests schlagen} nicht mehr fehl (verbleibend: {1})
Run.Summary.TestsStillFailing={0} {0,choice,0#Tests schlagen|1#Test schl\u00e4gt|1<Tests schlagen} immer noch fehl
......@@ -31,3 +31,8 @@ AbstractTestResultAction.test={0}: {1} {1,choice,0#Tests|1#Test|1<Tests}
AggregatedTestResultPublisher.DisplayName=Agregar los resultados de los tests de los proyectos padre
AggregatedTestResultPublisher.Title=Agregar resultados de tests.
Run.Summary.TestFailures={0} {0,choice,0#test fallidos|1#test fallido|1<test fallidos}
Run.Summary.TestsStartedToFail={0} {0,choice,0#tests|1#test|1<tests} han comenzado a fallar
Run.Summary.MoreTestsFailing={0} mas de {0,choice,0#tests est\u00e1n|1#test est\u00e1|1<tests est\u00e1n} fallando (total {1})
Run.Summary.LessTestsFailing={0} menos de {0,choice,0#tests est\u00e1n|1#test est\u00e1|1<tests est\u00e1n} fallando (total {1})
Run.Summary.TestsStillFailing={0} {0,choice,0#tests est\u00e1n|1#test est\u00e1|1<tests est\u00e1n} fallando todav\u00eda
Run.Summary.TestFailures={0} {0,choice,0#test failures|1#test failure|1<test failures}
Run.Summary.TestsStartedToFail={0} {0,choice,0#tests|1#test|1<tests} started to fail
Run.Summary.MoreTestsFailing={0} more {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.LessTestsFailing={0} less {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.TestsStillFailing={0} {0,choice,0#tests are|1#test is|1<tests are} still failing
......@@ -30,3 +30,8 @@ AbstractTestResultAction.test={0}: {1} {1,choice,0#\u30C6\u30B9\u30C8|1#\u30C6\u
AggregatedTestResultPublisher.DisplayName=\u4E0B\u6D41\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30C6\u30B9\u30C8\u7D50\u679C\u3092\u96C6\u7D04
AggregatedTestResultPublisher.Title=\u96C6\u7D04\u3055\u308C\u305F\u30C6\u30B9\u30C8\u7D50\u679C
Run.Summary.TestFailures={0}\u500b\u306e{0,choice,0#\u30c6\u30b9\u30c8\u5931\u6557|1#\u30c6\u30b9\u30c8\u5931\u6557|1<\u30c6\u30b9\u30c8\u5931\u6557}
Run.Summary.TestsStartedToFail={0}\u500b\u306e{0,choice,0#\u30c6\u30b9\u30c8|1#\u30c6\u30b9\u30c8|1<\u30c6\u30b9\u30c8}\u304c\u5931\u6557
Run.Summary.MoreTestsFailing={0}\u500b\u306e{0,choice,0#\u30c6\u30b9\u30c8|1#\u30c6\u30b9\u30c8|1<\u30c6\u30b9\u30c8}\u304c\u66f4\u306b\u5931\u6557 (\u5408\u8a08 {1})
Run.Summary.LessTestsFailing={0}\u500b\u306e{0,choice,0#\u30c6\u30b9\u30c8|1#\u30c6\u30b9\u30c8|1<\u30c6\u30b9\u30c8}\u304c\u56de\u5fa9 (\u5408\u8a08 {1})
Run.Summary.TestsStillFailing={0}\u500b\u306e{0,choice,0#\u30c6\u30b9\u30c8|1#\u30c6\u30b9\u30c8|1<\u30c6\u30b9\u30c8}\u304c\u307e\u3060\u5931\u6557
......@@ -40,3 +40,8 @@ AbstractTestResultAction.fail={0}: {1} {1,choice,0#falhas|1#falha|1<falhas}
AbstractTestResultAction.skip={0}: {1} {1,choice,0#ignorados|1#ignorado|1<ignorados}
# {0}: 0 tests in total.
AbstractTestResultAction.zeroTestDescription={0}: 0 testes no total.
Run.Summary.TestFailures=Falha no teste
Run.Summary.TestsStartedToFail={0} {0,choice,0#tests|1#test|1<tests} come\u00e7ou a falhar
Run.Summary.MoreTestsFailing={0} testes falharam (total {1})
Run.Summary.LessTestsFailing=(total {1}) falharam
Run.Summary.TestsStillFailing={0} {0,choice,0#testes |1#o teste |1<testes } ainda n\u00e3o
Run.Summary.TestFailures={0} {0,choice,0#test failures|1#test failure|1<test failures}
Run.Summary.TestsStartedToFail={0} {0,choice,0#tests|1#test|1<tests} started to fail
Run.Summary.MoreTestsFailing={0} more {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.LessTestsFailing={0} less {0,choice,0#tests are|1#test is|1<tests are} failing (total {1})
Run.Summary.TestsStillFailing={0} {0,choice,0#tests are|1#test is|1<tests are} still failing
......@@ -30,3 +30,8 @@ AbstractTestResultAction.test={0}: {1} \u500b\u6e2c\u8a66
AggregatedTestResultPublisher.DisplayName=\u5f59\u7e3d\u4e0b\u6e38\u6e2c\u8a66\u7d50\u679c
AggregatedTestResultPublisher.Title=\u6e2c\u8a66\u7d50\u679c\u5f59\u7e3d
Run.Summary.TestFailures={0} \u500b\u6e2c\u8a66\u5931\u6557
Run.Summary.TestsStartedToFail={0} \u500b\u6e2c\u8a66\u958b\u59cb\u5931\u6557
Run.Summary.MoreTestsFailing=\u591a\u4e86 {0} \u500b\u6e2c\u8a66\u5931\u6557 (\u7e3d\u8a08 {1})
Run.Summary.LessTestsFailing=\u5c11\u4e86 {0} \u500b\u6e2c\u8a66\u5931\u6557 (\u7e3d\u8a08 {1})
Run.Summary.TestsStillFailing={0} \u500b\u6e2c\u8a66\u9084\u662f\u5931\u6557
......@@ -9,7 +9,9 @@ import hudson.model.Run.Summary;
import hudson.tasks.test.AbstractTestResultAction;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
/**
* Tests {@link Run#getBuildStatusSummary()}.
......@@ -19,6 +21,8 @@ import org.junit.Test;
@SuppressWarnings("rawtypes")
public class BuildStatusSummaryTest {
@Rule public JenkinsRule r = new JenkinsRule(); // TODO only necessary to load AbstractTestResultAction.Summarizer
private Run build;
private Run prevBuild;
......@@ -169,14 +173,14 @@ public class BuildStatusSummaryTest {
Summary summary = this.build.getBuildStatusSummary();
assertTrue(summary.isWorse);
assertEquals(Messages.Run_Summary_TestFailures(1), summary.message);
assertEquals(hudson.tasks.test.Messages.Run_Summary_TestFailures(1), summary.message);
// same thing should happen if previous build has tests, but no failing ones:
buildHasTestResult((AbstractBuild) this.prevBuild, 0);
summary = this.build.getBuildStatusSummary();
assertTrue(summary.isWorse);
assertEquals(Messages.Run_Summary_TestsStartedToFail(1), summary.message);
assertEquals(hudson.tasks.test.Messages.Run_Summary_TestsStartedToFail(1), summary.message);
}
@Test
......@@ -214,7 +218,7 @@ public class BuildStatusSummaryTest {
Summary summary = this.build.getBuildStatusSummary();
assertFalse(summary.isWorse);
assertEquals(Messages.Run_Summary_TestsStillFailing(1), summary.message);
assertEquals(hudson.tasks.test.Messages.Run_Summary_TestsStillFailing(1), summary.message);
}
@Test
......@@ -230,7 +234,7 @@ public class BuildStatusSummaryTest {
Summary summary = this.build.getBuildStatusSummary();
assertTrue(summary.isWorse);
assertEquals(Messages.Run_Summary_MoreTestsFailing(1, 2), summary.message);
assertEquals(hudson.tasks.test.Messages.Run_Summary_MoreTestsFailing(1, 2), summary.message);
}
@Test
......@@ -246,7 +250,7 @@ public class BuildStatusSummaryTest {
Summary summary = this.build.getBuildStatusSummary();
assertFalse(summary.isWorse);
assertEquals(Messages.Run_Summary_LessTestsFailing(1, 1), summary.message);
assertEquals(hudson.tasks.test.Messages.Run_Summary_LessTestsFailing(1, 1), summary.message);
}
@Test
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册