Skip to content

Commit cb57930

Browse files
authored
Merge pull request #629 from jglick/CustomLogs.closeAll
Close all files in `CustomLogsTest`
2 parents 8f8fbd2 + 4eabc9e commit cb57930

File tree

2 files changed

+20
-25
lines changed

2 files changed

+20
-25
lines changed

src/main/java/com/cloudbees/jenkins/support/impl/CustomLogs.java

+13
Original file line numberDiff line numberDiff line change
@@ -223,4 +223,17 @@ public static void flush() {
223223
}
224224
}
225225
}
226+
227+
/**
228+
* Closes all open file handles, allowing locks to be released in Windows tests.
229+
*/
230+
static void closeAll() {
231+
for (var h : Logger.getLogger("").getHandlers()) {
232+
if (h instanceof CustomHandler ch) {
233+
for (var lf : ch.logFiles.values()) {
234+
lf.handler.close();
235+
}
236+
}
237+
}
238+
}
226239
}

src/test/java/com/cloudbees/jenkins/support/impl/CustomLogsTest.java

+7-25
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,14 @@
99

1010
import com.cloudbees.jenkins.support.SupportTestUtils;
1111
import com.cloudbees.jenkins.support.api.Component;
12-
import com.cloudbees.jenkins.support.api.Container;
13-
import edu.umd.cs.findbugs.annotations.NonNull;
1412
import hudson.ExtensionList;
1513
import hudson.logging.LogRecorder;
16-
import hudson.security.Permission;
1714
import java.io.IOException;
18-
import java.util.Collections;
1915
import java.util.Objects;
20-
import java.util.Set;
2116
import java.util.logging.Level;
2217
import java.util.logging.Logger;
23-
import jenkins.model.Jenkins;
2418
import org.hamcrest.Matchers;
19+
import org.junit.After;
2520
import org.junit.Rule;
2621
import org.junit.Test;
2722
import org.jvnet.hudson.test.JenkinsRule;
@@ -31,6 +26,11 @@ public class CustomLogsTest {
3126
@Rule
3227
public JenkinsRule j = new JenkinsRule();
3328

29+
@After
30+
public void closeAll() {
31+
CustomLogs.closeAll();
32+
}
33+
3434
@Test
3535
public void testCustomLogsContentEmpty() {
3636
String customLogs = SupportTestUtils.invokeComponentToString(
@@ -46,25 +46,7 @@ public void testCustomLogsContent() throws IOException {
4646
j.getInstance().getLog().getRecorders().add(testLogRecorder);
4747
testTarget.enable();
4848
testLogRecorder.save();
49-
SupportTestUtils.invokeComponentToString(new Component() {
50-
51-
@NonNull
52-
@Override
53-
public Set<Permission> getRequiredPermissions() {
54-
return Collections.singleton(Jenkins.ADMINISTER);
55-
}
56-
57-
@NonNull
58-
@Override
59-
public String getDisplayName() {
60-
return "";
61-
}
62-
63-
@Override
64-
public void addContents(@NonNull Container container) {
65-
Logger.getLogger(CustomLogsTest.class.getName()).fine("Testing custom log recorders");
66-
}
67-
});
49+
Logger.getLogger(CustomLogsTest.class.getName()).fine("Testing custom log recorders");
6850
String customLogs = SupportTestUtils.invokeComponentToString(
6951
Objects.requireNonNull(ExtensionList.lookup(Component.class).get(CustomLogs.class)));
7052
assertFalse("Should write CustomLogsTest FINE logs", customLogs.isEmpty());

0 commit comments

Comments
 (0)