From 9fc4a2753871600454de2e3343dd5fdf6aaaef11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Mino?= Date: Sat, 1 Feb 2025 15:24:03 +0100 Subject: [PATCH] test(generator): allow loading module files from classpath This should ease testing for custom jhlite modules, that will be able to test against templates from main jhipster-lite modules --- .../secondary/JHipsterModulesAssertions.java | 36 ++++++++++++------- ...radleProject.build.gradle.kts.approved.txt | 3 +- ...eToGradleProject.package.json.approved.txt | 4 +-- ...leToMavenProject.package.json.approved.txt | 4 +-- 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/JHipsterModulesAssertions.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/JHipsterModulesAssertions.java index 3ff34cb0fc3..2edbd953ad4 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/JHipsterModulesAssertions.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/JHipsterModulesAssertions.java @@ -1,9 +1,10 @@ package tech.jhipster.lite.module.infrastructure.secondary; -import static org.assertj.core.api.Assertions.*; -import static tech.jhipster.lite.TestFileUtils.*; +import static org.assertj.core.api.Assertions.assertThat; +import static tech.jhipster.lite.TestFileUtils.contentNormalizingNewLines; import java.io.IOException; +import java.net.URL; import java.nio.file.FileVisitResult; import java.nio.file.FileVisitor; import java.nio.file.Files; @@ -36,31 +37,31 @@ public static JHipsterModuleAsserter assertThatModule(JHipsterModule module) { } public static ModuleFile pomFile() { - return file("src/test/resources/projects/init-maven/pom.xml", "pom.xml"); + return fileFromClasspath("generator/buildtool/maven/pom.xml.mustache", "pom.xml"); } public static ModuleFile gradleBuildFile() { - return file("src/test/resources/projects/init-gradle/build.gradle.kts", "build.gradle.kts"); + return fileFromClasspath("generator/buildtool/gradle/build.gradle.kts.mustache", "build.gradle.kts"); } public static ModuleFile gradleSettingsFile() { - return file("src/test/resources/projects/init-gradle/settings.gradle.kts", "settings.gradle.kts"); + return fileFromClasspath("generator/buildtool/gradle/settings.gradle.kts.mustache", "settings.gradle.kts"); } public static ModuleFile gradleLibsVersionFile() { - return file("src/test/resources/projects/init-gradle/gradle/libs.versions.toml", "gradle/libs.versions.toml"); + return fileFromClasspath("generator/buildtool/gradle/gradle/libs.versions.toml", "gradle/libs.versions.toml"); } public static ModuleFile logbackFile() { - return file("src/test/resources/projects/logback/logback.xml", "src/main/resources/logback-spring.xml"); + return fileFromClasspath("generator/server/springboot/core/test/logback.xml.mustache", "src/main/resources/logback-spring.xml"); } public static ModuleFile testLogbackFile() { - return file("src/test/resources/projects/logback/logback.xml", "src/test/resources/logback.xml"); + return fileFromClasspath("generator/server/springboot/core/test/logback.xml.mustache", "src/test/resources/logback.xml"); } public static ModuleFile packageJsonFile() { - return file("src/test/resources/projects/empty-node/package.json", "package.json"); + return fileFromClasspath("generator/init/package.json.mustache", "package.json"); } public static ModuleFile lintStagedConfigFile() { @@ -68,15 +69,15 @@ public static ModuleFile lintStagedConfigFile() { } public static ModuleFile tsConfigFile() { - return file("src/main/resources/generator/typescript/tsconfig.json", "tsconfig.json"); + return fileFromClasspath("generator/typescript/tsconfig.json", "tsconfig.json"); } public static ModuleFile vitestConfigFile() { - return file("src/main/resources/generator/typescript/vitest.config.ts.mustache", "vitest.config.ts"); + return fileFromClasspath("generator/typescript/vitest.config.ts.mustache", "vitest.config.ts"); } public static ModuleFile eslintConfigFile() { - return file("src/main/resources/generator/typescript/eslint.config.js.mustache", "eslint.config.js"); + return fileFromClasspath("generator/typescript/eslint.config.js.mustache", "eslint.config.js"); } public static ModuleFile emptyLintStagedConfigFile() { @@ -88,13 +89,22 @@ public static ModuleFile lintStagedConfigFileWithoutPrettier() { } public static ModuleFile readmeFile() { - return file("src/test/resources/projects/README.md", "README.md"); + return fileFromClasspath("generator/init/README.md.mustache", "README.md"); } public static ModuleFile file(String source, String destination) { return new ModuleFile(source, destination); } + public static ModuleFile fileFromClasspath(String source, String destination) { + URL sourceResource = JHipsterModulesAssertions.class.getClassLoader().getResource(source); + if (sourceResource == null) { + throw new AssertionError("Can't find file " + source + " in classpath"); + } + + return new ModuleFile(sourceResource.getPath(), destination); + } + public static JHipsterModuleAsserter assertThatModuleWithFiles(JHipsterModule module, ModuleFile... files) { addFilesToProject(module.projectFolder(), files); diff --git a/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToGradleProject.build.gradle.kts.approved.txt b/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToGradleProject.build.gradle.kts.approved.txt index ee3b40e7995..7bfb02c3965 100644 --- a/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToGradleProject.build.gradle.kts.approved.txt +++ b/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToGradleProject.build.gradle.kts.approved.txt @@ -17,7 +17,6 @@ java { } } - jacoco { toolVersion = libs.versions.jacoco.get() } @@ -43,7 +42,7 @@ repositories { // jhipster-needle-gradle-repositories } -group = "tech.jhipster.jhlitest" +group = "com.test.myapp" version = "0.0.1-SNAPSHOT" val profiles = (project.findProperty("profiles") as String? ?: "") diff --git a/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToGradleProject.package.json.approved.txt b/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToGradleProject.package.json.approved.txt index f0984d20573..1581d76b20e 100644 --- a/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToGradleProject.package.json.approved.txt +++ b/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToGradleProject.package.json.approved.txt @@ -1,5 +1,5 @@ { - "name": "test-jhipster-project", + "name": "{{ dasherizedBaseName }}", "version": "[version]", "private": true, "description": "JHipster Project", @@ -10,7 +10,7 @@ }, "engines": { - "node": ">=16.13.0" + "node": ">={{ nodeMajorVersion }}" }, "scripts": { "build": "ng build --output-path=build/classes/static", diff --git a/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToMavenProject.package.json.approved.txt b/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToMavenProject.package.json.approved.txt index 02545080cf9..99b5588d3e1 100644 --- a/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToMavenProject.package.json.approved.txt +++ b/src/test/resources/tech/jhipster/lite/module/infrastructure/secondary/FileSystemJHipsterModulesRepositoryTest.shouldApplyModuleToMavenProject.package.json.approved.txt @@ -1,5 +1,5 @@ { - "name": "test-jhipster-project", + "name": "{{ dasherizedBaseName }}", "version": "[version]", "private": true, "description": "JHipster Project", @@ -10,7 +10,7 @@ }, "engines": { - "node": ">=16.13.0" + "node": ">={{ nodeMajorVersion }}" }, "scripts": { "build": "ng build --output-path=target/classes/static",