diff --git a/core/src/main/java/hudson/PluginWrapper.java b/core/src/main/java/hudson/PluginWrapper.java index a04ad5188f..0e417f3d67 100644 --- a/core/src/main/java/hudson/PluginWrapper.java +++ b/core/src/main/java/hudson/PluginWrapper.java @@ -972,7 +972,7 @@ public class PluginWrapper implements Comparable, ModelObject { if (dependency == null) { PluginWrapper failedDependency = NOTICE.getPlugin(d.shortName); if (failedDependency != null) { - dependencyErrors.put(Messages.PluginWrapper_failed_to_load_dependency(failedDependency.getLongName(), failedDependency.getVersion()), true); + dependencyErrors.put(Messages.PluginWrapper_failed_to_load_dependency_2(failedDependency.getLongName(), failedDependency.getShortName(), failedDependency.getVersion()), true); break; } else { dependencyErrors.put(Messages.PluginWrapper_missing(d.shortName, d.version), false); @@ -980,13 +980,13 @@ public class PluginWrapper implements Comparable, ModelObject { } else { if (dependency.isActive()) { if (isDependencyObsolete(d, dependency)) { - versionDependencyError(Messages.PluginWrapper_obsolete(dependency.getLongName(), dependency.getVersion(), d.version), dependency.getVersion(), d.version); + versionDependencyError(Messages.PluginWrapper_obsolete_2(dependency.getLongName(), dependency.getShortName(), dependency.getVersion(), d.version), dependency.getVersion(), d.version); } } else { if (isDependencyObsolete(d, dependency)) { - versionDependencyError(Messages.PluginWrapper_disabledAndObsolete(dependency.getLongName(), dependency.getVersion(), d.version), dependency.getVersion(), d.version); + versionDependencyError(Messages.PluginWrapper_obsolete_2(dependency.getLongName(), dependency.getShortName(), dependency.getVersion(), d.version), dependency.getVersion(), d.version); } else { - dependencyErrors.put(Messages.PluginWrapper_disabled(dependency.getLongName()), false); + dependencyErrors.put(Messages.PluginWrapper_disabled_2(dependency.getLongName(), dependency.getShortName()), false); } } @@ -997,7 +997,7 @@ public class PluginWrapper implements Comparable, ModelObject { PluginWrapper dependency = parent.getPlugin(d.shortName); if (dependency != null && dependency.isActive()) { if (isDependencyObsolete(d, dependency)) { - versionDependencyError(Messages.PluginWrapper_obsolete(dependency.getLongName(), dependency.getVersion(), d.version), dependency.getVersion(), d.version); + versionDependencyError(Messages.PluginWrapper_obsolete_2(dependency.getLongName(), dependency.getShortName(), dependency.getVersion(), d.version), dependency.getVersion(), d.version); } else { dependencies.add(d); } @@ -1006,7 +1006,7 @@ public class PluginWrapper implements Comparable, ModelObject { if (!dependencyErrors.isEmpty()) { NOTICE.addPlugin(this); StringBuilder messageBuilder = new StringBuilder(); - messageBuilder.append(Messages.PluginWrapper_failed_to_load_plugin(getLongName(), getVersion())).append(System.lineSeparator()); + messageBuilder.append(Messages.PluginWrapper_failed_to_load_plugin_2(getLongName(), getShortName(), getVersion())).append(System.lineSeparator()); for (Iterator iterator = dependencyErrors.keySet().iterator(); iterator.hasNext(); ) { String dependencyError = iterator.next(); messageBuilder.append(" - ").append(dependencyError); @@ -1029,7 +1029,7 @@ public class PluginWrapper implements Comparable, ModelObject { */ private void versionDependencyError(String message, String actual, String minimum) { if (isSnapshot(actual) || isSnapshot(minimum)) { - LOGGER.log(WARNING, "Suppressing dependency error in {0} v{1}: {2}", new Object[] {getLongName(), getVersion(), message}); + LOGGER.log(WARNING, "Suppressing dependency error in {0} v{1}: {2}", new Object[] {getShortName(), getVersion(), message}); } else { dependencyErrors.put(message, false); } diff --git a/core/src/main/resources/hudson/Messages.properties b/core/src/main/resources/hudson/Messages.properties index 67d9aaf1bd..2f0ca5b9f8 100644 --- a/core/src/main/resources/hudson/Messages.properties +++ b/core/src/main/resources/hudson/Messages.properties @@ -124,11 +124,10 @@ ProxyConfiguration.Success=Success Functions.NoExceptionDetails=No Exception details PluginWrapper.missing=Plugin is missing: {0} ({1}) -PluginWrapper.failed_to_load_plugin=Failed to load: {0} ({1}) -PluginWrapper.failed_to_load_dependency=Failed to load: {0} ({1}) -PluginWrapper.disabledAndObsolete=Update required: {0} ({1}) to {2} or higher -PluginWrapper.disabled=Required plugin is disabled: {0} -PluginWrapper.obsolete=Update required: {0} ({1}) to be updated to {2} or higher +PluginWrapper.failed_to_load_plugin_2=Failed to load: {0} ({1} {2}) +PluginWrapper.failed_to_load_dependency_2=Failed to load: {0} ({1} {2}) +PluginWrapper.disabled_2=Required plugin is disabled: {0} ({1}) +PluginWrapper.obsolete_2=Update required: {0} ({1} {2}) to be updated to {3} or higher PluginWrapper.obsoleteCore=Jenkins ({1}) or higher required PluginWrapper.obsoleteJava=Java ({1}) or higher required PluginWrapper.PluginWrapperAdministrativeMonitor.DisplayName=Plugins Failed To Load diff --git a/core/src/test/java/hudson/PluginWrapperTest.java b/core/src/test/java/hudson/PluginWrapperTest.java index 4054736999..0a0e51a588 100644 --- a/core/src/test/java/hudson/PluginWrapperTest.java +++ b/core/src/test/java/hudson/PluginWrapperTest.java @@ -26,6 +26,7 @@ import java.util.jar.Manifest; import jenkins.model.Jenkins; import jenkins.util.AntClassLoader; import jenkins.util.URLClassLoader2; +import org.apache.commons.lang.StringUtils; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -45,7 +46,9 @@ public class PluginWrapperTest { @AfterAll public static void after() { - Locale.setDefault(loc); + if (loc != null) { + Locale.setDefault(loc); + } } @Test @@ -71,7 +74,7 @@ public class PluginWrapperTest { PluginWrapper pw = pluginWrapper("fake").requiredCoreVersion("3.0").buildLoaded(); final IOException ex = assertThrows(IOException.class, pw::resolvePluginDependencies); - assertContains(ex, "Failed to load: fake (42)", "Jenkins (3.0) or higher required"); + assertContains(ex, "Failed to load: Fake (fake 42)", "Jenkins (3.0) or higher required"); } @Test @@ -79,7 +82,7 @@ public class PluginWrapperTest { PluginWrapper pw = pluginWrapper("dependee").deps("dependency:42").buildLoaded(); final IOException ex = assertThrows(IOException.class, pw::resolvePluginDependencies); - assertContains(ex, "Failed to load: dependee (42)", "Plugin is missing: dependency (42)"); + assertContains(ex, "Failed to load: Dependee (dependee 42)", "Plugin is missing: dependency (42)"); } @Test @@ -88,7 +91,7 @@ public class PluginWrapperTest { PluginWrapper pw = pluginWrapper("dependee").deps("dependency:5").buildLoaded(); final IOException ex = assertThrows(IOException.class, pw::resolvePluginDependencies); - assertContains(ex, "Failed to load: dependee (42)", "Update required: dependency (3) to be updated to 5 or higher"); + assertContains(ex, "Failed to load: Dependee (dependee 42)", "Update required: Dependency (dependency 3) to be updated to 5 or higher"); } @Test @@ -97,7 +100,7 @@ public class PluginWrapperTest { PluginWrapper pw = pluginWrapper("dependee").deps("dependency:3").buildLoaded(); final IOException ex = assertThrows(IOException.class, pw::resolvePluginDependencies); - assertContains(ex, "Failed to load: dependee (42)", "Failed to load: dependency (5)"); + assertContains(ex, "Failed to load: Dependee (dependee 42)", "Failed to load: Dependency (dependency 5)"); } @Issue("JENKINS-66563") @@ -196,9 +199,10 @@ public class PluginWrapperTest { private PluginWrapper build() { Manifest manifest = new Manifest(); Attributes attributes = manifest.getMainAttributes(); - attributes.put(new Attributes.Name("Short-Name"), name); - attributes.put(new Attributes.Name("Jenkins-Version"), requiredCoreVersion); - attributes.put(new Attributes.Name("Plugin-Version"), version); + attributes.putValue("Short-Name", name); + attributes.putValue("Long-Name", StringUtils.capitalize(name)); + attributes.putValue("Jenkins-Version", requiredCoreVersion); + attributes.putValue("Plugin-Version", version); return new PluginWrapper( pm, new File("/tmp/" + name + ".jpi"),