diff options
Diffstat (limited to 'node-admin/src')
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java | 9 | ||||
-rw-r--r-- | node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java | 13 |
2 files changed, 21 insertions, 1 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java index bbc3427433b..dff95efe80d 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.task.util.file; import com.yahoo.vespa.hosted.node.admin.component.TaskContext; +import java.io.IOException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -38,7 +39,13 @@ public class Editor { */ public Editor(Path path, LineEditor editor) { this(path.toString(), - () -> uncheck(() -> Files.readAllLines(path, ENCODING)), + () -> { + try { + return Files.readAllLines(path, ENCODING); + } catch (IOException e) { + return List.of(); + } + }, (newLines) -> uncheck(() -> Files.write(path, newLines, ENCODING)), editor); } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java index c325a858d7c..3d492c41d0f 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java @@ -9,12 +9,14 @@ import org.mockito.ArgumentCaptor; import java.nio.file.FileSystem; import java.util.Collections; +import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockingDetails; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -107,6 +109,17 @@ public class EditorTest { assertEquals("line\n", path.readUtf8File()); } + @Test + public void testMissingFile() { + LineEditor lineEditor = mock(LineEditor.class); + when(lineEditor.onComplete()).thenReturn(List.of("line")); + + TaskContext context = mock(TaskContext.class); + var editor = new Editor(path.toPath(), lineEditor); + editor.converge(context); + + assertEquals("line\n", path.readUtf8File()); + } private static String joinLines(String... lines) { return String.join("\n", lines) + "\n"; |