mirror of
https://github.com/microsoft/playwright-java.git
synced 2025-09-08 21:01:00 +00:00
fix(diver): create ZipFileSystem instance to extrac cli files (#119)
This commit is contained in:
parent
4b33bd6704
commit
b1cc4d6b43
@ -17,10 +17,10 @@
|
|||||||
package com.microsoft.playwright.impl;
|
package com.microsoft.playwright.impl;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.*;
|
||||||
import java.nio.file.Path;
|
import java.util.Collections;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class DriverJar extends Driver {
|
public class DriverJar extends Driver {
|
||||||
@ -29,16 +29,12 @@ public class DriverJar extends Driver {
|
|||||||
DriverJar() throws IOException, URISyntaxException, InterruptedException {
|
DriverJar() throws IOException, URISyntaxException, InterruptedException {
|
||||||
driverTempDir = Files.createTempDirectory("playwright-java-");
|
driverTempDir = Files.createTempDirectory("playwright-java-");
|
||||||
driverTempDir.toFile().deleteOnExit();
|
driverTempDir.toFile().deleteOnExit();
|
||||||
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
|
System.err.println("extracting driver to " + driverTempDir);
|
||||||
Path path = Paths.get(classloader.getResource("driver/" + platformDir()).toURI());
|
extractDriverToTempDir();
|
||||||
Files.list(path).forEach(filePath -> {
|
installBrowsers();
|
||||||
try {
|
}
|
||||||
extractResource(filePath, driverTempDir);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException("Failed to extract driver from " + path, e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
private void installBrowsers() throws IOException, InterruptedException {
|
||||||
Path driver = driverTempDir.resolve("playwright-cli");
|
Path driver = driverTempDir.resolve("playwright-cli");
|
||||||
ProcessBuilder pb = new ProcessBuilder(driver.toString(), "install");
|
ProcessBuilder pb = new ProcessBuilder(driver.toString(), "install");
|
||||||
pb.redirectError(ProcessBuilder.Redirect.INHERIT);
|
pb.redirectError(ProcessBuilder.Redirect.INHERIT);
|
||||||
@ -50,6 +46,22 @@ public class DriverJar extends Driver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void extractDriverToTempDir() throws URISyntaxException, IOException {
|
||||||
|
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
|
||||||
|
URI uri = classloader.getResource("driver/" + platformDir()).toURI();
|
||||||
|
System.out.println(uri);
|
||||||
|
// Create zip filesystem if loading from jar.
|
||||||
|
try (FileSystem fileSystem = "jar".equals(uri.getScheme()) ? FileSystems.newFileSystem(uri, Collections.emptyMap()) : null) {
|
||||||
|
Files.list(Paths.get(uri)).forEach(filePath -> {
|
||||||
|
try {
|
||||||
|
extractResource(filePath, driverTempDir);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException("Failed to extract driver from " + uri, e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static String platformDir() {
|
private static String platformDir() {
|
||||||
String name = System.getProperty("os.name").toLowerCase();
|
String name = System.getProperty("os.name").toLowerCase();
|
||||||
if (name.contains("windows")) {
|
if (name.contains("windows")) {
|
||||||
@ -65,12 +77,10 @@ public class DriverJar extends Driver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static Path extractResource(Path from, Path toDir) throws IOException {
|
private static Path extractResource(Path from, Path toDir) throws IOException {
|
||||||
Path path = toDir.resolve(from.getFileName());
|
Path path = toDir.resolve(from.getFileName().toString());
|
||||||
Files.copy(from, path);
|
Files.copy(from, path);
|
||||||
path.toFile().setExecutable(true);
|
path.toFile().setExecutable(true);
|
||||||
path.toFile().deleteOnExit();
|
path.toFile().deleteOnExit();
|
||||||
// System.out.println("extracting: " + from.toString() + " to " +
|
|
||||||
// path.toString());
|
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,6 +50,9 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<redirectTestOutputToFile>true</redirectTestOutputToFile>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user