Skip to content

Commit 5ceff50

Browse files
Fix unhandled directory creation failure in PluginResourceLoader
Updated the directory creation code to capture the return value. To improve robustness, `mkdirs()` is used instead. If the directory creation fails, it handles race conditions by checking `!exists()`, and logs a descriptive error if the failure persists, returning `false` to notify the caller of the failure. Co-authored-by: RoiSoleil <3462260+RoiSoleil@users.noreply.github.com>
1 parent 60724ec commit 5ceff50

1 file changed

Lines changed: 72 additions & 0 deletions

File tree

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package org.moreunit.mock;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.mockito.Mockito.*;
5+
6+
import java.io.File;
7+
import java.lang.reflect.Field;
8+
import java.net.MalformedURLException;
9+
import java.net.URL;
10+
import java.util.Collection;
11+
import java.util.Collections;
12+
import java.util.Enumeration;
13+
import java.util.LinkedHashSet;
14+
import java.util.Set;
15+
import org.osgi.framework.Bundle;
16+
17+
import org.eclipse.core.runtime.IPath;
18+
import org.junit.After;
19+
import org.junit.Before;
20+
import org.junit.Test;
21+
import org.junit.runner.RunWith;
22+
import org.mockito.Mock;
23+
import org.mockito.junit.MockitoJUnitRunner;
24+
import org.moreunit.core.log.Logger;
25+
26+
@RunWith(MockitoJUnitRunner.class)
27+
public class PluginResourceLoaderTest {
28+
29+
@Mock
30+
MoreUnitMockPlugin plugin;
31+
32+
@Mock
33+
Logger logger;
34+
35+
@Mock
36+
Bundle bundle;
37+
38+
@Mock
39+
IPath mockStateLocation;
40+
41+
PluginResourceLoader loader;
42+
43+
@Before
44+
public void setUp() throws Exception {
45+
loader = new PluginResourceLoader(plugin, logger);
46+
Field field = MoreUnitMockPlugin.class.getDeclaredField("plugin");
47+
field.setAccessible(true);
48+
field.set(null, plugin);
49+
}
50+
51+
@After
52+
public void tearDown() throws Exception {
53+
Field field = MoreUnitMockPlugin.class.getDeclaredField("plugin");
54+
field.setAccessible(true);
55+
field.set(null, null);
56+
}
57+
58+
@Test
59+
public void testEnsureStateExists() {
60+
when(plugin.getStateLocation()).thenReturn(mockStateLocation);
61+
when(mockStateLocation.append("test")).thenReturn(mockStateLocation);
62+
63+
File mockFile = mock(File.class);
64+
when(mockStateLocation.toFile()).thenReturn(mockFile);
65+
when(mockFile.exists()).thenReturn(false);
66+
when(mockFile.mkdirs()).thenReturn(false);
67+
68+
boolean result = loader.ensureStateExists("test");
69+
assertThat(result).isFalse();
70+
verify(logger).error(anyString());
71+
}
72+
}

0 commit comments

Comments
 (0)