diff --git a/configlib-yaml/src/main/java/de/exlll/configlib/YamlConfigurationStore.java b/configlib-yaml/src/main/java/de/exlll/configlib/YamlConfigurationStore.java index 6a38879..86307aa 100644 --- a/configlib-yaml/src/main/java/de/exlll/configlib/YamlConfigurationStore.java +++ b/configlib-yaml/src/main/java/de/exlll/configlib/YamlConfigurationStore.java @@ -89,9 +89,9 @@ public void save(T configuration, Path configurationFile) { yamlFileWriter.writeYaml(dumpedYaml, extractedCommentNodes); } - private void tryCreateParentDirectories(Path configurationFile) { + void tryCreateParentDirectories(Path configurationFile) { Path parent = configurationFile.getParent(); - if (!Files.exists(parent) && properties.createParentDirectories()) { + if (properties.createParentDirectories() && parent != null && !Files.exists(parent)) { try { Files.createDirectories(parent); } catch (IOException e) { diff --git a/configlib-yaml/src/test/java/de/exlll/configlib/YamlConfigurationStoreTest.java b/configlib-yaml/src/test/java/de/exlll/configlib/YamlConfigurationStoreTest.java index cb911f7..79d7661 100644 --- a/configlib-yaml/src/test/java/de/exlll/configlib/YamlConfigurationStoreTest.java +++ b/configlib-yaml/src/test/java/de/exlll/configlib/YamlConfigurationStoreTest.java @@ -557,4 +557,19 @@ void updateResolvesEnvVarsIfFileDoesOrDoesNotExist(boolean createFile) { assertThat(config.s, is("S2")); assertThat(config.i, is(10)); } + + @ParameterizedTest + @ValueSource(booleans = {true, false}) + void tryCreateParentDirectoriesDoesNotThrowIfParentIsNull(boolean createParentDirectories) { + YamlConfigurationProperties properties = YamlConfigurationProperties.newBuilder() + .createParentDirectories(createParentDirectories) + .build(); + YamlConfigurationStore store = new YamlConfigurationStore<>( + A.class, + properties + ); + + Path path = fs.getPath("config.yml"); + assertDoesNotThrow(() -> store.tryCreateParentDirectories(path)); + } }