diff options
author | HÃ¥kon Hallingstad <hakon@verizonmedia.com> | 2019-09-12 14:45:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-12 14:45:16 +0200 |
commit | 880aa954e780ca7223d5e17b19c085c689ba9f7a (patch) | |
tree | ac5c9287bb2cbd3477269deaa8e543259c2e3e4f /node-admin | |
parent | e82b707dcb9c43aeb2439e734d09293d3cd87ed2 (diff) | |
parent | 0c12791d35e00e47608fbbfafc1d3e483258b6af (diff) |
Merge pull request #10613 from vespa-engine/hakonhall/treat-absent-file-as-an-empty-file-with-line-editing
Treat absent file as an empty file with line editing
Diffstat (limited to 'node-admin')
-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"; |