From 218d0a55169aa030646e4f7a0469e9ce8fe2c93f Mon Sep 17 00:00:00 2001 From: Stephen Connolly Date: Tue, 21 Mar 2017 11:08:50 +0000 Subject: [PATCH] [JENKINS-42934] Actually use Java's file locking API to lock the file on windows --- core/src/test/java/hudson/UtilTest.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/src/test/java/hudson/UtilTest.java b/core/src/test/java/hudson/UtilTest.java index 1a57b68314..2b844337c7 100644 --- a/core/src/test/java/hudson/UtilTest.java +++ b/core/src/test/java/hudson/UtilTest.java @@ -24,7 +24,10 @@ */ package hudson; +import java.nio.channels.FileChannel; +import java.nio.channels.FileLock; import java.nio.file.Files; +import java.nio.file.StandardOpenOption; import java.util.List; import java.util.Map; import java.util.HashMap; @@ -491,9 +494,13 @@ public class UtilTest { // On unix, can't use "chattr +u" because ext fs ignores it. // On Windows, we can't delete files that are open for reading, so we use that. assert Functions.isWindows(); - final InputStream s = Files.newInputStream(f.toPath()); + final FileChannel channel = FileChannel.open(f.toPath(), StandardOpenOption.READ, StandardOpenOption.WRITE); + final FileLock lock = channel.lock(); unlockFileCallables.put(f, new Callable() { - public Void call() throws IOException { s.close(); return null; }; + public Void call() throws IOException { + lock.release(); + channel.close(); + return null; }; }); }