3
3
import java .io .File ;
4
4
import java .io .IOException ;
5
5
import java .nio .file .Files ;
6
+ import java .util .Arrays ;
6
7
import java .util .concurrent .atomic .AtomicReference ;
7
8
8
9
import org .junit .Assert ;
10
+ import org .junit .Rule ;
9
11
import org .junit .Test ;
12
+ import org .junit .rules .TemporaryFolder ;
10
13
import org .mockito .MockedStatic ;
11
14
import org .mockito .Mockito ;
12
15
16
19
17
20
public class FileWatcherTest {
18
21
22
+ @ Rule
23
+ public TemporaryFolder temporaryFolder = new TemporaryFolder ();
24
+
19
25
@ Test
20
26
public void fileWatcherTriggeredForModification () throws Exception {
21
27
AtomicReference <File > changed = new AtomicReference <>();
22
28
23
- File dir = Files . createTempDirectory ("watched" ). toFile ( );
29
+ File dir = temporaryFolder . newFolder ("watched" );
24
30
FileWatcher watcher = new FileWatcher (file -> {
25
31
changed .set (file );
26
32
}, dir );
27
33
28
34
watcher .start ();
29
35
30
- File newFile = new File (dir , "newFile.txt" );
31
- newFile .createNewFile ();
36
+ try {
37
+ File newFile = new File (dir , "newFile.txt" );
38
+ newFile .createNewFile ();
32
39
33
- Thread .sleep (50 ); // The watcher is supposed to be triggered immediately
34
- Assert .assertEquals (newFile , changed .get ());
40
+ Thread .sleep (50 ); // The watcher is supposed to be triggered
41
+ // immediately
42
+ Assert .assertEquals (newFile , changed .get ());
43
+ } finally {
44
+ watcher .stop ();
45
+ }
35
46
}
36
47
37
48
@ Test
38
49
public void externalDependencyWatcher_setViaParameter_TriggeredForModification ()
39
50
throws Exception {
40
- File projectFolder = Files .createTempDirectory ("projectFolder" )
41
- .toFile ();
42
- projectFolder .deleteOnExit ();
51
+ File projectFolder = temporaryFolder .newFolder ("projectFolder" );
43
52
44
53
String metaInf = "/src/main/resources/META-INF/" ;
45
- String rootPorjectResourceFrontend = projectFolder .getAbsolutePath ()
54
+ String rootProjectResourceFrontend = projectFolder .getAbsolutePath ()
46
55
+ metaInf + "resources/frontend" ;
47
56
String subProjectLegacyFrontend = projectFolder .getAbsolutePath ()
48
57
+ "/fakeproject" + metaInf + "frontend" ;
49
58
50
- new File (rootPorjectResourceFrontend ).mkdirs ();
59
+ new File (rootProjectResourceFrontend ).mkdirs ();
51
60
new File (subProjectLegacyFrontend ).mkdirs ();
52
61
53
- File jarFrontendResources = Files
54
- .createTempDirectory ("jarFrontendResources" ).toFile ();
55
- jarFrontendResources .deleteOnExit ();
62
+ File jarFrontendResources = temporaryFolder
63
+ .newFolder ("jarFrontendResources" );
56
64
57
65
VaadinContext vaadinContext = Mockito .mock (VaadinContext .class );
58
66
ApplicationConfiguration config = Mockito
@@ -66,29 +74,29 @@ public void externalDependencyWatcher_setViaParameter_TriggeredForModification()
66
74
.mockStatic (ApplicationConfiguration .class )) {
67
75
appConfig .when (() -> ApplicationConfiguration .get (Mockito .any ()))
68
76
.thenReturn (config );
69
- new ExternalDependencyWatcher (vaadinContext , jarFrontendResources );
77
+ try (var watcher = new ExternalDependencyWatcher (vaadinContext ,
78
+ jarFrontendResources )) {
70
79
71
- assertFileCountFound (jarFrontendResources , 0 );
80
+ assertFileCountFound (jarFrontendResources , 0 );
72
81
73
- createFile (rootPorjectResourceFrontend + "/somestyles.css" );
74
- assertFileCountFound (jarFrontendResources , 1 );
82
+ createFile (rootProjectResourceFrontend + "/somestyles.css" );
83
+ assertFileCountFound (jarFrontendResources , 1 );
75
84
76
- createFile (subProjectLegacyFrontend + "/somejs.js" );
77
- assertFileCountFound (jarFrontendResources , 2 );
85
+ createFile (subProjectLegacyFrontend + "/somejs.js" );
86
+ assertFileCountFound (jarFrontendResources , 2 );
78
87
79
- Assert .assertEquals ("somestyles.css" ,
80
- jarFrontendResources .listFiles ()[0 ].getName ());
81
- Assert .assertEquals ("somejs.js" ,
82
- jarFrontendResources .listFiles ()[1 ].getName ());
88
+ Assert .assertEquals ("somestyles.css" ,
89
+ jarFrontendResources .listFiles ()[0 ].getName ());
90
+ Assert .assertEquals ("somejs.js" ,
91
+ jarFrontendResources .listFiles ()[1 ].getName ());
92
+ }
83
93
}
84
94
}
85
95
86
96
@ Test
87
97
public void externalDependencyWatcher_setAsDefaultForRunnerProjectButNotSubProject_TriggeredForModification ()
88
98
throws Exception {
89
- File projectFolder = Files .createTempDirectory ("projectFolder" )
90
- .toFile ();
91
- projectFolder .deleteOnExit ();
99
+ File projectFolder = temporaryFolder .newFolder ("projectFolder" );
92
100
93
101
String metaInf = "/src/main/resources/META-INF/" ;
94
102
String rootPorjectResourceFrontend = projectFolder .getAbsolutePath ()
@@ -99,9 +107,8 @@ public void externalDependencyWatcher_setAsDefaultForRunnerProjectButNotSubProje
99
107
new File (rootPorjectResourceFrontend ).mkdirs ();
100
108
new File (subProjectLegacyFrontend ).mkdirs ();
101
109
102
- File jarFrontendResources = Files
103
- .createTempDirectory ("jarFrontendResources" ).toFile ();
104
- jarFrontendResources .deleteOnExit ();
110
+ File jarFrontendResources = temporaryFolder
111
+ .newFolder ("jarFrontendResources" );
105
112
106
113
VaadinContext vaadinContext = Mockito .mock (VaadinContext .class );
107
114
ApplicationConfiguration config = Mockito
@@ -115,33 +122,37 @@ public void externalDependencyWatcher_setAsDefaultForRunnerProjectButNotSubProje
115
122
.mockStatic (ApplicationConfiguration .class )) {
116
123
appConfig .when (() -> ApplicationConfiguration .get (Mockito .any ()))
117
124
.thenReturn (config );
118
- new ExternalDependencyWatcher (vaadinContext , jarFrontendResources );
125
+ try (var watcher = new ExternalDependencyWatcher (vaadinContext ,
126
+ jarFrontendResources )) {
119
127
120
- assertFileCountFound (jarFrontendResources , 0 );
128
+ assertFileCountFound (jarFrontendResources , 0 );
121
129
122
- createFile (rootPorjectResourceFrontend + "/somestyles.css" );
123
- assertFileCountFound (jarFrontendResources , 1 );
130
+ createFile (rootPorjectResourceFrontend + "/somestyles.css" );
131
+ assertFileCountFound (jarFrontendResources , 1 );
124
132
125
- createFile (subProjectLegacyFrontend + "/somejs.js" );
126
- assertFileCountFound (jarFrontendResources , 1 );
133
+ createFile (subProjectLegacyFrontend + "/somejs.js" );
134
+ assertFileCountFound (jarFrontendResources , 1 );
127
135
128
- Assert .assertEquals ("somestyles.css" ,
129
- jarFrontendResources .listFiles ()[0 ].getName ());
136
+ Assert .assertEquals ("somestyles.css" ,
137
+ jarFrontendResources .listFiles ()[0 ].getName ());
138
+ }
130
139
}
131
140
}
132
141
133
142
private void assertFileCountFound (File directory , int count )
134
143
throws InterruptedException {
135
- Thread .sleep (100 );
144
+ Thread .sleep (500 );
145
+ File [] files = directory .listFiles ();
136
146
Assert .assertEquals (
137
147
"Wrong amount of copied files found when there should be "
138
- + count + "." ,
139
- count , directory .listFiles ().length );
148
+ + count + ". Current files were: "
149
+ + Arrays .toString (files ),
150
+ count , files .length );
140
151
141
152
}
142
153
143
154
private void createFile (String path ) throws IOException {
144
155
File newFile = new File (path );
145
- newFile .createNewFile ( );
156
+ Files . writeString ( newFile .toPath (), "some text" );
146
157
}
147
158
}
0 commit comments