diff --git a/plugin-management-library/src/main/java/io/jenkins/tools/pluginmanager/parsers/YamlPluginOutputConverter.java b/plugin-management-library/src/main/java/io/jenkins/tools/pluginmanager/parsers/YamlPluginOutputConverter.java index 563020b8..143fd743 100644 --- a/plugin-management-library/src/main/java/io/jenkins/tools/pluginmanager/parsers/YamlPluginOutputConverter.java +++ b/plugin-management-library/src/main/java/io/jenkins/tools/pluginmanager/parsers/YamlPluginOutputConverter.java @@ -12,6 +12,8 @@ import java.util.List; import java.util.stream.Collectors; +import static java.util.Comparator.comparing; + public class YamlPluginOutputConverter implements PluginOutputConverter { @Override public String convert(List plugins) { @@ -28,6 +30,7 @@ public String convert(List plugins) { private Plugins mapToOutputFormat(List plugins) { List convertedPlugins = plugins.stream() + .sorted(comparing(Plugin::getName).thenComparing(Plugin::getVersion)) .map(this::toPluginHolder) .collect(Collectors.toList()); diff --git a/plugin-management-library/src/test/java/io/jenkins/tools/pluginmanager/impl/PluginManagerTest.java b/plugin-management-library/src/test/java/io/jenkins/tools/pluginmanager/impl/PluginManagerTest.java index 920f203d..fc4c141b 100644 --- a/plugin-management-library/src/test/java/io/jenkins/tools/pluginmanager/impl/PluginManagerTest.java +++ b/plugin-management-library/src/test/java/io/jenkins/tools/pluginmanager/impl/PluginManagerTest.java @@ -363,30 +363,31 @@ public void listPluginsOutputYamlTest() throws Exception { "plugin2 2.0\n\n"); assertThat(stdOutput).isEqualTo("plugins:\n" + - "- artifactId: \"installed2\"\n" + + "- artifactId: \"bundled1\"\n" + " source:\n" + - " version: \"2.0\"\n" + + " version: \"1.0\"\n" + "- artifactId: \"bundled2\"\n" + " source:\n" + " version: \"2.0\"\n" + - "- artifactId: \"plugin1\"\n" + - " source:\n" + - " version: \"1.0\"\n" + - "- artifactId: \"plugin2\"\n" + + "- artifactId: \"dependency1\"\n" + " source:\n" + - " version: \"2.0\"\n" + - "- artifactId: \"bundled1\"\n" + + " version: \"1.0.0\"\n" + + "- artifactId: \"dependency2\"\n" + " source:\n" + - " version: \"1.0\"\n" + + " version: \"1.0.0\"\n" + "- artifactId: \"installed1\"\n" + " source:\n" + " version: \"1.0\"\n" + - "- artifactId: \"dependency2\"\n" + + "- artifactId: \"installed2\"\n" + " source:\n" + - " version: \"1.0.0\"\n" + - "- artifactId: \"dependency1\"\n" + + " version: \"2.0\"\n" + + "- artifactId: \"plugin1\"\n" + + " source:\n" + + " version: \"1.0\"\n" + + "- artifactId: \"plugin2\"\n" + " source:\n" + - " version: \"1.0.0\"\n\n"); + " version: \"2.0\"\n" + + "\n"); } @Test