diff --git a/src/main/java/org/cqfn/astranaut/core/utils/FilesReader.java b/src/main/java/org/cqfn/astranaut/core/utils/FilesReader.java index 0e73639..505f554 100644 --- a/src/main/java/org/cqfn/astranaut/core/utils/FilesReader.java +++ b/src/main/java/org/cqfn/astranaut/core/utils/FilesReader.java @@ -65,6 +65,19 @@ public String readAsString() throws IOException { return builder.toString(); } + /** + * Reads file content as a string. If the file can't be read, returns empty string. + * @return The file content + */ + public String readAsStringNoExcept() { + String string = ""; + try { + string = this.readAsString(); + } catch (final IOException ignored) { + } + return string; + } + /** * Reads file content as string. * @param creator The exception creator diff --git a/src/test/java/org/cqfn/astranaut/core/utils/FilesReaderTest.java b/src/test/java/org/cqfn/astranaut/core/utils/FilesReaderTest.java new file mode 100644 index 0000000..bdb655a --- /dev/null +++ b/src/test/java/org/cqfn/astranaut/core/utils/FilesReaderTest.java @@ -0,0 +1,75 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2024 Ivan Kniazkov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package org.cqfn.astranaut.core.utils; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +/** + * Test for {@link FilesReader} class. + * @since 2.0.0 + */ +class FilesReaderTest { + @Test + void wroteAndReadFile(@TempDir final Path tmpdir) { + final Path path = tmpdir.resolve("data.txt"); + final FilesWriter writer = new FilesWriter(path.toString()); + final boolean flag = writer.writeStringNoExcept("test\r string"); + Assertions.assertTrue(flag); + Assertions.assertTrue(Files.exists(path)); + final FilesReader reader = new FilesReader(path.toString()); + boolean oops = false; + try { + final String result = reader.readAsString(); + Assertions.assertEquals("test string", result); + } catch (final IOException ignored) { + oops = true; + } + Assertions.assertFalse(oops); + } + + @Test + void testCustomException() { + final FilesReader reader = new FilesReader("path.to.file.that.does.not.exist"); + boolean oops = false; + try { + reader.readAsString(CustomException::new); + } catch (final CustomException ignored) { + oops = true; + } + Assertions.assertTrue(oops); + } + + /** + * Custom exception for testing purposes. + * @since 2.0.0 + */ + private static class CustomException extends Exception { + private static final long serialVersionUID = -1; + } +} diff --git a/src/test/java/org/cqfn/astranaut/core/utils/JsonDeserializerTest.java b/src/test/java/org/cqfn/astranaut/core/utils/JsonDeserializerTest.java index 6e16196..ab0305c 100644 --- a/src/test/java/org/cqfn/astranaut/core/utils/JsonDeserializerTest.java +++ b/src/test/java/org/cqfn/astranaut/core/utils/JsonDeserializerTest.java @@ -25,7 +25,6 @@ import java.util.Map; import java.util.TreeMap; -import org.cqfn.astranaut.core.base.CoreException; import org.cqfn.astranaut.core.base.DefaultFactory; import org.cqfn.astranaut.core.base.EmptyTree; import org.cqfn.astranaut.core.base.Node; @@ -160,32 +159,8 @@ void deserializeWithNullFactory() { */ private String getFileContent(final String name) { final String file = JsonDeserializerTest.TESTS_PATH.concat(name); - boolean oops = false; - String source = ""; - try { - source = new FilesReader(file).readAsString( - (FilesReader.CustomExceptionCreator) () - -> new CoreException() { - private static final long serialVersionUID = -6130330765091840343L; - - @Override - public String getInitiator() { - return "JsonDeserializerTest"; - } - - @Override - public String getErrorMessage() { - return String.format( - "Could not read the file that contains source tree: %s", - file - ); - } - } - ); - } catch (final CoreException exception) { - oops = true; - } - Assertions.assertFalse(oops); + final String source = new FilesReader(file).readAsStringNoExcept(); + Assertions.assertFalse(source.isEmpty()); return source; } }