Skip to content

Commit 6b1d622

Browse files
authored
fix: prevent deletion of app-shell-imports by frontend cleanup task (#24118)
`TaskRemoveOldFrontendGeneratedFiles` deletes files in the frontend generated folder that are not recognized as known generated files. The `app-shell-imports.js` and `app-shell-imports.d.ts` files were missing from the known files list, causing them to be deleted when `vaadinPrepareFrontend` runs without the index generation task, for example when IntelliJ IDEA triggers a Gradle compilation while the dev server is running with hot deploy. Add `APP_SHELL_IMPORTS_NAME` and `APP_SHELL_IMPORTS_D_TS_NAME` to the known files list. Also improve test coverage by verifying all known file types, including Hilla generated files. Related to #24108
1 parent 9f34b7a commit 6b1d622

File tree

2 files changed

+36
-6
lines changed

2 files changed

+36
-6
lines changed

flow-build-tools/src/main/java/com/vaadin/flow/server/frontend/TaskRemoveOldFrontendGeneratedFiles.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ private Predicate<Path> isKnownUnhandledFile() {
148148
frontendGeneratedFolder.resolve(FrontendUtils.ROUTES_TSX)));
149149
knownFiles.add(normalizePath(
150150
frontendGeneratedFolder.resolve(FrontendUtils.ROUTES_TS)));
151+
knownFiles.add(normalizePath(frontendGeneratedFolder
152+
.resolve(FrontendUtils.APP_SHELL_IMPORTS_NAME)));
153+
knownFiles.add(normalizePath(frontendGeneratedFolder
154+
.resolve(FrontendUtils.APP_SHELL_IMPORTS_D_TS_NAME)));
151155
knownFiles.add(normalizePath(
152156
frontendGeneratedFolder.resolve("file-routes.ts")));
153157
knownFiles.add(normalizePath(

flow-build-tools/src/test/java/com/vaadin/flow/server/frontend/TaskRemoveOldFrontendGeneratedFilesTest.java

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.junit.jupiter.api.Test;
3030
import org.junit.jupiter.api.io.TempDir;
3131

32+
import com.vaadin.flow.internal.FrontendUtils;
3233
import com.vaadin.tests.util.MockOptions;
3334

3435
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -150,26 +151,51 @@ void execute_missingGeneratedFileSupport_nothingIsDeleted()
150151

151152
@Test
152153
void execute_knownFiles_notDeleted() throws Exception {
154+
Path hillaGeneratedFilesIndex = generatedFolder.toPath()
155+
.resolve("generated-file-list.txt");
156+
153157
Set<File> knownFiles = Set.of(generatedFolder.toPath()
154-
.resolve(Path.of("flow", "generated-flow-imports.js")).toFile(),
158+
.resolve(Path.of("flow", FrontendUtils.IMPORTS_NAME)).toFile(),
155159
generatedFolder.toPath()
156-
.resolve(Path.of("flow", "generated-flow-imports.d.ts"))
160+
.resolve(Path.of("flow",
161+
FrontendUtils.IMPORTS_D_TS_NAME))
157162
.toFile(),
158163
generatedFolder.toPath()
159164
.resolve(Path.of("flow",
160-
"generated-flow-webcomponent-imports.js"))
165+
FrontendUtils.IMPORTS_WEB_COMPONENT_NAME))
161166
.toFile(),
162-
new File(generatedFolder, "routes.tsx"),
163-
new File(generatedFolder, "routes.ts"),
167+
new File(generatedFolder, FrontendUtils.ROUTES_TSX),
168+
new File(generatedFolder, FrontendUtils.ROUTES_TS),
164169
generatedFolder.toPath().resolve(Path.of("flow", "Flow.tsx"))
165170
.toFile(),
171+
new File(generatedFolder,
172+
TaskGenerateReactFiles.JSX_TRANSFORM_DEV_RUNTIME),
173+
new File(generatedFolder,
174+
TaskGenerateReactFiles.JSX_TRANSFORM_RUNTIME),
175+
new File(generatedFolder,
176+
TaskGenerateReactFiles.JSX_TRANSFORM_INDEX),
177+
new File(generatedFolder,
178+
FrontendUtils.APP_SHELL_IMPORTS_D_TS_NAME),
179+
new File(generatedFolder, FrontendUtils.APP_SHELL_IMPORTS_NAME),
166180
new File(generatedFolder, "file-routes.ts"),
181+
new File(generatedFolder, "file-routes.json"),
167182
new File(generatedFolder, "css.generated.js"),
168-
new File(generatedFolder, "css.generated.d.ts"));
183+
new File(generatedFolder, "css.generated.d.ts"),
184+
hillaGeneratedFilesIndex.toFile(),
185+
new File(generatedFolder, "hilla-1.js"),
186+
new File(generatedFolder, "hilla-2.js"),
187+
generatedFolder.toPath().resolve(Path.of("sub", "hilla-3.js"))
188+
.toFile());
189+
169190
for (File file : knownFiles) {
170191
file.getParentFile().mkdirs();
171192
Files.writeString(file.toPath(), "TEST");
172193
}
194+
Files.writeString(hillaGeneratedFilesIndex, """
195+
hilla-1.js
196+
hilla-2.js
197+
sub/hilla-3.js
198+
""");
173199

174200
TaskRemoveOldFrontendGeneratedFiles task = new TaskRemoveOldFrontendGeneratedFiles(
175201
options);

0 commit comments

Comments
 (0)