diff --git a/rewrite-javascript/build.gradle.kts b/rewrite-javascript/build.gradle.kts index 7dc0710ad34..cf724780203 100644 --- a/rewrite-javascript/build.gradle.kts +++ b/rewrite-javascript/build.gradle.kts @@ -1,15 +1,14 @@ import com.github.gradle.node.NodeExtension import com.github.gradle.node.npm.task.NpmTask import nl.javadude.gradle.plugins.license.LicenseExtension -import org.eclipse.jgit.api.Git import java.time.LocalDateTime import java.time.format.DateTimeFormatter plugins { id("org.openrewrite.build.language-library") id("org.openrewrite.build.moderne-source-available-license") - id("com.netflix.nebula.integtest-standalone") id("com.github.node-gradle.node") version "latest.release" + id("jvm-test-suite") id("publishing") } @@ -28,11 +27,6 @@ dependencies { testImplementation(project(":rewrite-yaml")) testImplementation("io.moderne:jsonrpc:latest.integration") testRuntimeOnly(project(":rewrite-java-21")) - - integTestImplementation(project(":rewrite-json")) - integTestImplementation(project(":rewrite-java-tck")) - integTestImplementation("org.junit.platform:junit-platform-suite-api:latest.release") - integTestRuntimeOnly("org.junit.platform:junit-platform-suite-engine:latest.release") } tasks.withType().configureEach { @@ -157,6 +151,7 @@ val npmInstallTemp = tasks.register("npmInstallTemp") { val tempInstallDir = layout.buildDirectory.file("tmp/npmInstall") inputs.files(npmPack) .withPathSensitivity(PathSensitivity.RELATIVE) + outputs.dir(tempInstallDir) dependsOn(npmInitTemp) // Use a provider to defer evaluation until execution time @@ -164,39 +159,13 @@ val npmInstallTemp = tasks.register("npmInstallTemp") { workingDir.set(tempInstallDir) } -sourceSets { - main { - resources { - srcDir("src/main/generated-resources") - } - } -} - -afterEvaluate { - tasks.named("licenseMain") { - dependsOn(createProductionPackage) - } -} - -tasks.named("sourcesJar") { - dependsOn("createProductionPackage") - exclude("production-package.zip") -} - -tasks.named("processResources") { - dependsOn(createProductionPackage) -} - // Creates a production-ready package; writing it to `src/main/generated-resources` so that it will be included by IDEA val createProductionPackage by tasks.register("createProductionPackage") { // Configure the tar output archiveFileName.set("production-package.zip") - destinationDirectory.set(layout.projectDirectory.dir("src/main/generated-resources")) + destinationDirectory.set(layout.buildDirectory.dir("generated/resources/distributions/")) - dependsOn(npmInstallTemp) - - // Reference the actual directory where npm packages are installed - from(layout.buildDirectory.dir("tmp/npmInstall")) { + from(npmInstallTemp) { // Optionally exclude unnecessary files like package-lock.json, etc. // exclude("package-lock.json", ".npmrc") } @@ -207,8 +176,45 @@ tasks.named("jar") { from(createProductionPackage) } -tasks.named("integrationTest") { - dependsOn(npmRunBuild) +var npmTestBuild = tasks.register("npmTestBuild") { + inputs.files(npmInstall) + .withPathSensitivity(PathSensitivity.RELATIVE) + inputs.files(file("rewrite/package.json")) + .withPathSensitivity(PathSensitivity.RELATIVE) + inputs.files(npmRunBuild) + .withPathSensitivity(PathSensitivity.RELATIVE) + inputs.files(fileTree("rewrite/test")) + .withPathSensitivity(PathSensitivity.RELATIVE) + outputs.dir(file("rewrite/dist/test/")) + + args = listOf("run", "build:test") +} + +testing { + suites { + register("integTest") { + useJUnitJupiter() + + targets { + all { + testTask.configure { + dependsOn(npmTestBuild) + } + } + } + + dependencies { + implementation(project()) + implementation(project(":rewrite-java-21")) + implementation(project(":rewrite-test")) + implementation(project(":rewrite-json")) + implementation(project(":rewrite-java-tck")) + implementation("org.assertj:assertj-core:latest.release") + implementation("org.junit.platform:junit-platform-suite-api:latest.release") + runtimeOnly("org.junit.platform:junit-platform-suite-engine:latest.release") + } + } + } } // This task creates a `.npmrc` file with the given token, so that the `npm publish` succeeds diff --git a/rewrite-javascript/rewrite/package.json b/rewrite-javascript/rewrite/package.json index a67a7f16874..dd455664eaa 100644 --- a/rewrite-javascript/rewrite/package.json +++ b/rewrite-javascript/rewrite/package.json @@ -21,6 +21,7 @@ "build": "rm -rf ./dist && tsc --build tsconfig.build.json", "dev": "tsc --watch -p tsconfig.json", "test": "npm run build && jest", + "build:test": "tsc --build tsconfig.test.json", "ci:test": "jest", "start": "npm run build && node ./dist/src/rpc/server.js" }, diff --git a/rewrite-javascript/rewrite/tsconfig.build.json b/rewrite-javascript/rewrite/tsconfig.build.json index ba6384aa31f..19aac585bb7 100644 --- a/rewrite-javascript/rewrite/tsconfig.build.json +++ b/rewrite-javascript/rewrite/tsconfig.build.json @@ -8,7 +8,6 @@ "removeComments": true }, "include": [ - "src/**/*", - "test/**/*" + "src/**/*" ] } diff --git a/rewrite-javascript/rewrite/tsconfig.json b/rewrite-javascript/rewrite/tsconfig.json index e4670f1f486..9d0ecf01e5f 100644 --- a/rewrite-javascript/rewrite/tsconfig.json +++ b/rewrite-javascript/rewrite/tsconfig.json @@ -4,6 +4,7 @@ "module": "Node16", "moduleResolution": "node16", "isolatedModules": true, + "declaration": true, "declarationMap": true, "sourceMap": true, "esModuleInterop": true,