Skip to content

Commit 27850e5

Browse files
authored
Test framework: support directory resources (SkriptLang#8377)
* Test framework: support directory resources * use walkFileTree * oops forgot imports
1 parent d16e094 commit 27850e5

1 file changed

Lines changed: 30 additions & 2 deletions

File tree

src/main/java/ch/njol/skript/test/platform/Environment.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
import java.nio.file.Files;
2222
import java.nio.file.Path;
2323
import java.nio.file.StandardCopyOption;
24+
import java.nio.file.FileVisitResult;
25+
import java.nio.file.SimpleFileVisitor;
26+
import java.nio.file.attribute.BasicFileAttributes;
2427
import java.util.ArrayList;
2528
import java.util.Arrays;
2629
import java.util.List;
@@ -180,8 +183,33 @@ public void initialize(Path dataRoot, Path runnerRoot, boolean remake) throws IO
180183
for (Resource resource : resources) {
181184
Path source = dataRoot.resolve(resource.getSource());
182185
Path target = env.resolve(resource.getTarget());
183-
Files.createDirectories(target.getParent());
184-
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
186+
187+
if (Files.isDirectory(source)) {
188+
Files.walkFileTree(source, new SimpleFileVisitor<>() {
189+
190+
@Override
191+
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
192+
throws IOException {
193+
Path relative = source.relativize(dir);
194+
Path dest = target.resolve(relative);
195+
Files.createDirectories(dest);
196+
return FileVisitResult.CONTINUE;
197+
}
198+
199+
@Override
200+
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
201+
throws IOException {
202+
Path relative = source.relativize(file);
203+
Path dest = target.resolve(relative);
204+
Files.createDirectories(dest.getParent());
205+
Files.copy(file, dest, StandardCopyOption.REPLACE_EXISTING);
206+
return FileVisitResult.CONTINUE;
207+
}
208+
});
209+
} else {
210+
Files.createDirectories(target.getParent());
211+
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
212+
}
185213
}
186214

187215
List<Resource> downloads = new ArrayList<>();

0 commit comments

Comments
 (0)