From a062f97b58d2dc2ff9171d30ba43c9fe86d4e083 Mon Sep 17 00:00:00 2001 From: Nathan Voxland Date: Mon, 10 Oct 2022 15:28:36 -0500 Subject: [PATCH 1/2] Fixed URIResource.resolveSibling --- .../java/liquibase/resource/URIResource.java | 2 +- .../resource/URIResourceAccessorTest.groovy | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/liquibase-core/src/main/java/liquibase/resource/URIResource.java b/liquibase-core/src/main/java/liquibase/resource/URIResource.java index 14275103673..2984e379923 100644 --- a/liquibase-core/src/main/java/liquibase/resource/URIResource.java +++ b/liquibase-core/src/main/java/liquibase/resource/URIResource.java @@ -25,7 +25,7 @@ public Resource resolve(String other) { @Override public Resource resolveSibling(String other) { - return new URIResource(resolveSiblingPath(other), URI.create(getUri().toString().replaceFirst("/.*?$", "") + "/" + other)); + return new URIResource(resolveSiblingPath(other), URI.create(getUri().toString().replaceFirst("/[^/]*$", "") + "/" + other)); } @Override diff --git a/liquibase-core/src/test/groovy/liquibase/resource/URIResourceAccessorTest.groovy b/liquibase-core/src/test/groovy/liquibase/resource/URIResourceAccessorTest.groovy index d507cf8c9b8..34dd51e5e3c 100644 --- a/liquibase-core/src/test/groovy/liquibase/resource/URIResourceAccessorTest.groovy +++ b/liquibase-core/src/test/groovy/liquibase/resource/URIResourceAccessorTest.groovy @@ -1,10 +1,23 @@ package liquibase.resource import spock.lang.Specification +import spock.lang.Unroll class URIResourceAccessorTest extends Specification { -// "file:/c:/" | "file:/c:/" -// "http://example.local/nowhere.txt" | "http://example.local/nowhere.txt" + @Unroll + def resolveSibling() { + when: + def newResource = new URIResource(path, URI.create(uri)).resolveSibling(input) + then: + newResource.uri.toString() == expectedUri + newResource.path == expectedPath + + where: + path | uri | input | expectedUri | expectedPath + "my/file.xml" | "file:/local/my/file.xml" | "other.csv" | "file:/local/my/other.csv" | "my/other.csv" + "liquibase/harness/data/changelogs/loadData.xml" | "jar:file:/C:/Users/example/liquibase-test-harness-1.0.6.jar!/liquibase/harness/data/changelogs/loadData.xml" | "load.csv" | "jar:file:/C:/Users/example/liquibase-test-harness-1.0.6.jar!/liquibase/harness/data/changelogs/load.csv" | "liquibase/harness/data/changelogs/load.csv" + "my/file.xml" | "http:/local/my/file.xml" | "other.csv" | "http:/local/my/other.csv" | "my/other.csv" + } } From 40530c00d73f5707fe38a24436a553b518f1e6e1 Mon Sep 17 00:00:00 2001 From: Nathan Voxland Date: Tue, 11 Oct 2022 09:24:54 -0500 Subject: [PATCH 2/2] Fixed describeLocations for ZipResourceAccessor --- .../main/java/liquibase/resource/ZipResourceAccessor.java | 6 +++++- .../liquibase/resource/ZipResourceAccessorTest.groovy | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/liquibase-core/src/main/java/liquibase/resource/ZipResourceAccessor.java b/liquibase-core/src/main/java/liquibase/resource/ZipResourceAccessor.java index 568a227203b..81da1cbd1d1 100644 --- a/liquibase-core/src/main/java/liquibase/resource/ZipResourceAccessor.java +++ b/liquibase-core/src/main/java/liquibase/resource/ZipResourceAccessor.java @@ -4,10 +4,10 @@ import java.io.File; import java.io.FileNotFoundException; -import java.io.IOException; import java.net.URI; import java.nio.file.*; import java.util.Collections; +import java.util.List; public class ZipResourceAccessor extends AbstractPathResourceAccessor { @@ -64,4 +64,8 @@ protected Resource createResource(Path file, String pathToAdd) { return new PathResource(pathToAdd, file); } + @Override + public List describeLocations() { + return Collections.singletonList(fileSystem.toString()); + } } diff --git a/liquibase-core/src/test/groovy/liquibase/resource/ZipResourceAccessorTest.groovy b/liquibase-core/src/test/groovy/liquibase/resource/ZipResourceAccessorTest.groovy index 8dce82d68fe..4c267232ff3 100644 --- a/liquibase-core/src/test/groovy/liquibase/resource/ZipResourceAccessorTest.groovy +++ b/liquibase-core/src/test/groovy/liquibase/resource/ZipResourceAccessorTest.groovy @@ -69,4 +69,10 @@ class ZipResourceAccessorTest extends Specification { ] } + def describeLocations() { + expect: + simpleTestAccessor.describeLocations().size() == 1 + simpleTestAccessor.describeLocations()[0].replace("\\", "/").endsWith("target/test-classes/simple-files.jar") + } + }