mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Improve BuildpackReference's handling of URL-like strings on Windows
Closes gh-39792
This commit is contained in:
parent
dd38fb8b65
commit
16b6400bdf
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2021 the original author or authors.
|
* Copyright 2012-2024 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,6 +17,7 @@
|
|||||||
package org.springframework.boot.buildpack.platform.build;
|
package org.springframework.boot.buildpack.platform.build;
|
||||||
|
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
@ -51,11 +52,11 @@ public final class BuildpackReference {
|
|||||||
try {
|
try {
|
||||||
URL url = new URL(this.value);
|
URL url = new URL(this.value);
|
||||||
if (url.getProtocol().equals("file")) {
|
if (url.getProtocol().equals("file")) {
|
||||||
return Paths.get(url.getPath());
|
return Paths.get(url.toURI());
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
catch (MalformedURLException ex) {
|
catch (MalformedURLException | URISyntaxException ex) {
|
||||||
// not a URL, fall through to attempting to find a plain file path
|
// not a URL, fall through to attempting to find a plain file path
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2024 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -61,9 +61,9 @@ class TarGzipBuildpackTests {
|
|||||||
@Test
|
@Test
|
||||||
void resolveWhenFileUrlReturnsBuildpack() throws Exception {
|
void resolveWhenFileUrlReturnsBuildpack() throws Exception {
|
||||||
Path compressedArchive = this.testTarGzip.createArchive();
|
Path compressedArchive = this.testTarGzip.createArchive();
|
||||||
BuildpackReference reference = BuildpackReference.of("file://" + compressedArchive.toString());
|
BuildpackReference reference = BuildpackReference.of(compressedArchive.toUri().toString());
|
||||||
Buildpack buildpack = TarGzipBuildpack.resolve(this.resolverContext, reference);
|
Buildpack buildpack = TarGzipBuildpack.resolve(this.resolverContext, reference);
|
||||||
assertThat(buildpack).isNotNull();
|
assertThat(buildpack).as("Buildpack %s resolved from reference %s", buildpack, reference).isNotNull();
|
||||||
assertThat(buildpack.getCoordinates()).hasToString("example/buildpack1@0.0.1");
|
assertThat(buildpack.getCoordinates()).hasToString("example/buildpack1@0.0.1");
|
||||||
this.testTarGzip.assertHasExpectedLayers(buildpack);
|
this.testTarGzip.assertHasExpectedLayers(buildpack);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user