diff --git a/README.md b/README.md index 3d25d3533..492ba37cd 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ The project is very much Work In Progress and will be published on maven central BOAT is still under development and subject to change. ## 0.15.2 * *Maven Plugin* + * Fixed handling of absolute file paths for linting OpenAPI specs * Changed boat-bay dateLibrary for upload spec . ## 0.15.1 * *Maven Plugin* diff --git a/boat-quay/boat-quay-lint/src/main/java/com/backbase/oss/boat/quay/BoatLinter.java b/boat-quay/boat-quay-lint/src/main/java/com/backbase/oss/boat/quay/BoatLinter.java index b11c42f16..757b245a3 100644 --- a/boat-quay/boat-quay-lint/src/main/java/com/backbase/oss/boat/quay/BoatLinter.java +++ b/boat-quay/boat-quay-lint/src/main/java/com/backbase/oss/boat/quay/BoatLinter.java @@ -62,6 +62,11 @@ public BoatLintReport lint(File inputFile) throws IOException, OpenAPILoaderExce @NotNull private Path getFilePath(File inputFile) { File workingDirectory = new File("."); + + if (inputFile.isAbsolute()) { + workingDirectory = workingDirectory.getAbsoluteFile(); + } + Path relativize; try { relativize = workingDirectory.toPath().relativize(inputFile.toPath()); diff --git a/boat-quay/boat-quay-lint/src/test/java/com/backbase/oss/boat/quay/BoatLinterTests.java b/boat-quay/boat-quay-lint/src/test/java/com/backbase/oss/boat/quay/BoatLinterTests.java index e27b1fdbf..9639fefa2 100644 --- a/boat-quay/boat-quay-lint/src/test/java/com/backbase/oss/boat/quay/BoatLinterTests.java +++ b/boat-quay/boat-quay-lint/src/test/java/com/backbase/oss/boat/quay/BoatLinterTests.java @@ -1,5 +1,9 @@ package com.backbase.oss.boat.quay; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + import com.backbase.oss.boat.loader.OpenAPILoaderException; import com.backbase.oss.boat.quay.model.BoatLintReport; import com.backbase.oss.boat.quay.model.BoatLintRule; @@ -11,7 +15,6 @@ import java.util.List; import java.util.Optional; import org.apache.commons.io.IOUtils; -import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -55,6 +58,19 @@ void testRulesWithFile() throws IOException, OpenAPILoaderException { assertTrue(boatLintReport.hasViolations()); } + @Test + void testRulesWithFile_absolutePath() throws IOException, OpenAPILoaderException { + // Can't ret relative file from class path resources. Copy into new file + String openApiContents = IOUtils.resourceToString("/openapi/presentation-client-api/openapi.yaml", Charset.defaultCharset()); + + File inputFile = new File("target/openapi.yaml").getAbsoluteFile(); + Files.write(inputFile.toPath(), openApiContents.getBytes()); + + BoatLintReport boatLintReport = boatLinter.lint(inputFile); + + assertTrue(boatLintReport.hasViolations()); + } + @Test void ruleManager() { List availableRules = boatLinter.getAvailableRules();