diff options
Diffstat (limited to 'core/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java')
-rw-r--r-- | core/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/core/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java b/core/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java index f4aae5232c..89c65ad2c8 100644 --- a/core/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java +++ b/core/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java @@ -20,6 +20,7 @@ package org.elasticsearch.plugins; import org.apache.lucene.util.LuceneTestCase; +import org.elasticsearch.Version; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.index.IndexModule; @@ -30,6 +31,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; import java.util.List; +import java.util.Locale; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.hasToString; @@ -121,4 +123,32 @@ public class PluginsServiceTests extends ESTestCase { assertThat(e, hasToString(containsString(expected))); } + public void testStartupWithRemovingMarker() throws IOException { + final Path home = createTempDir(); + final Settings settings = + Settings.builder() + .put(Environment.PATH_HOME_SETTING.getKey(), home) + .build(); + final Path fake = home.resolve("plugins").resolve("fake"); + Files.createDirectories(fake); + Files.createFile(fake.resolve("plugin.jar")); + final Path removing = fake.resolve(".removing-fake"); + Files.createFile(fake.resolve(".removing-fake")); + PluginTestUtil.writeProperties( + fake, + "description", "fake", + "name", "fake", + "version", "1.0.0", + "elasticsearch.version", Version.CURRENT.toString(), + "java.version", System.getProperty("java.specification.version"), + "classname", "Fake", + "has.native.controller", "false"); + final IllegalStateException e = expectThrows(IllegalStateException.class, () -> newPluginsService(settings)); + final String expected = String.format( + Locale.ROOT, + "found file [%s] from a failed attempt to remove the plugin [fake]; execute [elasticsearch-plugin remove fake]", + removing); + assertThat(e, hasToString(containsString(expected))); + } + } |