From 6e3f93f242d477ebf6ab0baa8dcec979cf4fbcf1 Mon Sep 17 00:00:00 2001 From: jupblb Date: Tue, 23 Jun 2026 21:57:05 +0200 Subject: [PATCH] Move snapshots to scip-snapshots --- .bazelignore | 5 +- .github/workflows/ci.yml | 6 +- .gitignore | 2 +- build.sbt | 106 ++++++------------ flake.nix | 8 +- scip-snapshots/README.md | 24 ++++ .../cases/java/common}/BUILD | 0 .../main/java/minimized/AbstractClasses.java | 0 .../java/minimized/AnnotationParameters.java | 0 .../src/main/java/minimized/Annotations.java | 0 .../AnnotationsOnParameterizedTypes.java | 0 .../main/java/minimized/AnonymousClasses.java | 0 .../src/main/java/minimized/Arrays.java | 0 .../src/main/java/minimized/ClassOf.java | 0 .../src/main/java/minimized/Docstrings.java | 0 .../minimized/EnumImplementsInterface.java | 0 .../src/main/java/minimized/Enums.java | 0 .../src/main/java/minimized/Fields.java | 0 .../java/minimized/ForComprehensions.java | 0 .../src/main/java/minimized/InnerClasses.java | 0 .../src/main/java/minimized/Interfaces.java | 0 .../main/java/minimized/LombokBuilder.java | 0 .../src/main/java/minimized/Methods.java | 0 .../java/minimized/MinimizedJavaMain.java | 0 .../java/minimized/OverloadResolution.java | 0 .../src/main/java/minimized/Overrides.java | 0 .../java/minimized/ParameterizedTypes.java | 0 .../src/main/java/minimized/Primitives.java | 0 .../src/main/java/minimized/RawTypes.java | 0 .../src/main/java/minimized/SubClasses.java | 0 .../src/main/java/minimized/TabIndented.java | 0 .../main/java/minimized/TypeAnnotations.java | 0 .../main/java/minimized/TypeVariables.java | 0 .../main/java/snapshots/ClassConsumer.java | 0 .../java/snapshots/CompanionConsumer.java | 0 .../src/main/java/snapshots/KotlinClass.java | 0 .../main/java/snapshots/KotlinLambdas.java | 0 .../main/java/snapshots/ObjectKtConsumer.java | 0 .../src/main/kotlin/snapshots/Class.kt | 0 .../main/kotlin/snapshots/CompanionOwner.kt | 0 .../src/main/kotlin/snapshots/Docstrings.kt | 0 .../src/main/kotlin/snapshots/Functions.kt | 0 .../main/kotlin/snapshots/Implementations.kt | 0 .../src/main/kotlin/snapshots/Lambdas.kt | 0 .../src/main/kotlin/snapshots/ObjectKt.kt | 0 .../main/java/minimized/AbstractClasses.java | 0 .../java/minimized/AnnotationParameters.java | 0 .../src/main/java/minimized/Annotations.java | 0 .../AnnotationsOnParameterizedTypes.java | 0 .../main/java/minimized/AnonymousClasses.java | 0 .../src/main/java/minimized/Arrays.java | 0 .../src/main/java/minimized/ClassOf.java | 0 .../src/main/java/minimized/Docstrings.java | 0 .../minimized/EnumImplementsInterface.java | 0 .../src/main/java/minimized/Enums.java | 0 .../src/main/java/minimized/Fields.java | 0 .../java/minimized/ForComprehensions.java | 0 .../src/main/java/minimized/InnerClasses.java | 0 .../src/main/java/minimized/Interfaces.java | 0 .../main/java/minimized/LombokBuilder.java | 0 .../src/main/java/minimized/Methods.java | 0 .../java/minimized/MinimizedJavaMain.java | 0 .../java/minimized/OverloadResolution.java | 0 .../src/main/java/minimized/Overrides.java | 0 .../java/minimized/ParameterizedTypes.java | 0 .../src/main/java/minimized/Primitives.java | 0 .../src/main/java/minimized/RawTypes.java | 0 .../src/main/java/minimized/SubClasses.java | 0 .../src/main/java/minimized/TabIndented.java | 0 .../main/java/minimized/TypeAnnotations.java | 0 .../main/java/minimized/TypeVariables.java | 0 .../main/java/snapshots/ClassConsumer.java | 0 .../java/snapshots/CompanionConsumer.java | 0 .../src/main/java/snapshots/KotlinClass.java | 0 .../main/java/snapshots/KotlinLambdas.java | 0 .../main/java/snapshots/ObjectKtConsumer.java | 0 .../src/main/kotlin/snapshots/Class.kt | 0 .../main/kotlin/snapshots/CompanionOwner.kt | 0 .../src/main/kotlin/snapshots/Docstrings.kt | 0 .../src/main/kotlin/snapshots/Functions.kt | 0 .../main/kotlin/snapshots/Implementations.kt | 0 .../src/main/kotlin/snapshots/Lambdas.kt | 0 .../src/main/kotlin/snapshots/ObjectKt.kt | 0 .../tests/MinimizedSnapshotScipGenerator.java | 92 ++++++++++++--- .../main/java/tests/SaveSnapshotHandler.java | 0 .../src/main/java/tests/SaveSnapshots.java | 27 +++++ .../src/main/java/tests/SnapshotContext.java | 4 +- .../src/main/java/tests/SnapshotHandler.java | 0 .../java/tests/AssertSnapshotHandler.java | 5 +- .../java/tests/MinimizedSnapshotScipTest.java | 23 ++++ .../src/main/java/tests/SaveSnapshots.java | 21 ---- .../java/tests/MinimizedSnapshotScipTest.java | 18 --- 92 files changed, 198 insertions(+), 143 deletions(-) create mode 100644 scip-snapshots/README.md rename {tests/minimized => scip-snapshots/cases/java/common}/BUILD (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/AbstractClasses.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/AnnotationParameters.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/Annotations.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/AnnotationsOnParameterizedTypes.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/AnonymousClasses.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/Arrays.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/ClassOf.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/Docstrings.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/EnumImplementsInterface.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/Enums.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/Fields.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/ForComprehensions.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/InnerClasses.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/Interfaces.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/LombokBuilder.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/Methods.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/MinimizedJavaMain.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/OverloadResolution.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/Overrides.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/ParameterizedTypes.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/Primitives.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/RawTypes.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/SubClasses.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/TabIndented.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/TypeAnnotations.java (100%) rename {tests/minimized => scip-snapshots/cases/java/common}/src/main/java/minimized/TypeVariables.java (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/java/snapshots/ClassConsumer.java (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/java/snapshots/CompanionConsumer.java (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/java/snapshots/KotlinClass.java (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/java/snapshots/KotlinLambdas.java (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/java/snapshots/ObjectKtConsumer.java (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/Class.kt (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/CompanionOwner.kt (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/Docstrings.kt (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/Functions.kt (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/Implementations.kt (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/Lambdas.kt (100%) rename {scip-kotlinc/minimized => scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/ObjectKt.kt (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/AbstractClasses.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/AnnotationParameters.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/Annotations.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/AnnotationsOnParameterizedTypes.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/AnonymousClasses.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/Arrays.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/ClassOf.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/Docstrings.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/EnumImplementsInterface.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/Enums.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/Fields.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/ForComprehensions.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/InnerClasses.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/Interfaces.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/LombokBuilder.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/Methods.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/MinimizedJavaMain.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/OverloadResolution.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/Overrides.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/ParameterizedTypes.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/Primitives.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/RawTypes.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/SubClasses.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/TabIndented.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/TypeAnnotations.java (100%) rename {tests/snapshots/src/main/generated/tests/minimized => scip-snapshots/expected/java/common/scip-snapshots/cases/java/common}/src/main/java/minimized/TypeVariables.java (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/java/snapshots/ClassConsumer.java (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/java/snapshots/CompanionConsumer.java (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/java/snapshots/KotlinClass.java (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/java/snapshots/KotlinLambdas.java (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/java/snapshots/ObjectKtConsumer.java (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/Class.kt (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/CompanionOwner.kt (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/Docstrings.kt (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/Functions.kt (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/Implementations.kt (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/Lambdas.kt (100%) rename {scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized => scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common}/src/main/kotlin/snapshots/ObjectKt.kt (100%) rename {tests/snapshots => scip-snapshots}/src/main/java/tests/MinimizedSnapshotScipGenerator.java (57%) rename {tests/snapshots => scip-snapshots}/src/main/java/tests/SaveSnapshotHandler.java (100%) create mode 100644 scip-snapshots/src/main/java/tests/SaveSnapshots.java rename {tests/snapshots => scip-snapshots}/src/main/java/tests/SnapshotContext.java (58%) rename {tests/snapshots => scip-snapshots}/src/main/java/tests/SnapshotHandler.java (100%) rename {tests/snapshots => scip-snapshots}/src/test/java/tests/AssertSnapshotHandler.java (92%) create mode 100644 scip-snapshots/src/test/java/tests/MinimizedSnapshotScipTest.java delete mode 100644 tests/snapshots/src/main/java/tests/SaveSnapshots.java delete mode 100644 tests/snapshots/src/test/java/tests/MinimizedSnapshotScipTest.java diff --git a/.bazelignore b/.bazelignore index 1d7b7c858..35898e5b3 100644 --- a/.bazelignore +++ b/.bazelignore @@ -9,8 +9,9 @@ scip-gradle-plugin/target/ scip-java/target/ scip-javac/target/ scip-kotlinc/target/ +scip-snapshots/target/ +scip-snapshots/cases/java/common/target/ +scip-snapshots/cases/kotlin/common/target/ target/ tests/buildTools/target/ -tests/minimized/target/ -tests/snapshots/target/ tests/unit/target/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 05dbf658a..245f8ab97 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,13 +115,13 @@ jobs: - name: scip-kotlinc tests run: nix develop --command sbt scipKotlinc/test - - name: Kotlin snapshots - run: nix develop --command sbt scipKotlincMinimized/kotlincSnapshots + - name: Regenerate snapshots + run: nix develop --command sbt scipSnapshots/run - name: Check snapshot drift run: | git diff --exit-code \ - scip-kotlinc/minimized/src/generatedSnapshots + scip-snapshots/expected maven: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 6baf3fe6d..97484a25c 100644 --- a/.gitignore +++ b/.gitignore @@ -73,7 +73,7 @@ VERSION scip-gradle-plugin/gradle /aspects/ -tests/snapshots/META-INF/ +scip-snapshots/META-INF/ # scip-kotlinc kctfork-based tests run kotlinc with our plugin, which # writes META-INF/scip/sources/Test.kt.scip relative to the test diff --git a/build.sbt b/build.sbt index 0ed5f25b3..ab4719df3 100644 --- a/build.sbt +++ b/build.sbt @@ -179,8 +179,7 @@ lazy val cli = project (Compile / mainClass) := Some("com.sourcegraph.scip_java.ScipJava"), (run / baseDirectory) := (ThisBuild / baseDirectory).value, // ScipJava.main can call System.exit, so we always fork the JVM when - // sbt invokes it directly (e.g. from the scip-kotlinc snapshots - // task) so it cannot kill the surrounding sbt process. + // sbt invokes it directly so it cannot kill the surrounding sbt process. Compile / run / fork := true, Test / fork := true, // Our CI set up is a couple of measly vCPUs so parallelising tests there makes @@ -242,14 +241,6 @@ lazy val cli = project ) .dependsOn(scip) -// Task key for regenerating the SCIP golden snapshots emitted by -// the scip-kotlinc compiler plugin over the Kotlin minimized fixtures. -// We deliberately do NOT call this `snapshots` to avoid colliding with the -// existing top-level `snapshots` test project (`lazy val snapshots = project`). -lazy val kotlincSnapshots = taskKey[Unit]( - "Run the SCIP snapshot generator over the scip-kotlinc minimized project" -) - // The scip-kotlinc compiler plugin. Built as a fat-jar that is later // embedded into the scip-java CLI distribution (see cli's resourceGenerators) // so the runtime no longer needs to fetch a published scip-kotlinc @@ -335,14 +326,12 @@ lazy val scipKotlinc = project ) .dependsOn(scipShared) -// `scipKotlincMinimized` mirrors the (still-present) Gradle build at -// scip-kotlinc/minimized/build.gradle.kts. It compiles a small set of -// Kotlin and Java fixtures with the assembled `scipKotlinc` plugin -// attached to kotlinc/javac, producing *.scip files under -// target/scip-targetroot/ which are then converted to SCIP and rendered -// as the human-readable golden snapshots by the `snapshots` task. -lazy val scipKotlincMinimized = project - .in(file("scip-kotlinc/minimized")) +// Kotlin snapshot case. The fixture includes Java sources as interop +// consumers, but the case is still keyed by the Kotlin compiler/plugin version +// axis. It writes *.scip shards under target/scip-targetroot/ for the central +// scipSnapshots project to aggregate and compare with goldens. +lazy val scipSnapshotsKotlinCommon = project + .in(file("scip-snapshots/cases/kotlin/common")) .enablePlugins(KotlinPlugin) .settings( publish / skip := true, @@ -391,57 +380,17 @@ lazy val scipKotlincMinimized = project val tgtRoot = target.value / "scip-targetroot" s"-Xplugin:scip -sourceroot:${srcRoot.getAbsolutePath} " + s"-targetroot:${tgtRoot.getAbsolutePath}" - }, - // ----- snapshots regeneration task ----- - // Invokes `com.sourcegraph.scip_java.ScipJava.main` twice in the cli JVM - // (forked — ScipJava.main calls System.exit on failure). First pass - // converts the *.scip files under target/scip-targetroot/ - // into an index.scip; second pass renders that index as the human-readable - // golden snapshots. - // - // We use `kotlincSnapshots` instead of `snapshots` to avoid colliding - // with the existing top-level `snapshots` test project. - kotlincSnapshots := - Def - .taskDyn { - val srcRoot = (ThisBuild / baseDirectory).value.getAbsolutePath - val tgtRoot = (target.value / "scip-targetroot").getAbsolutePath - val snapDir = - (baseDirectory.value / "src" / "generatedSnapshots" / "resources") - .getAbsolutePath - // Write the aggregated index OUTSIDE the scanned targetroot. If it - // lived under `tgtRoot`, a second `kotlincSnapshots` run would feed - // the previous index.scip back into `aggregate`, which re-applies the - // package prefix and yields doubled symbols - // (e.g. `scip-java maven . . scip-java maven . . kotlin/`). - val indexDir = target.value / "scip-index" - IO.createDirectory(indexDir) - val scipOut = (indexDir / "index.scip").getAbsolutePath - val mainCls = "com.sourcegraph.scip_java.ScipJava" - Def.sequential( - Compile / compile, - (cli / Compile / runMain).toTask( - s" $mainCls aggregate --no-emit-inverse-relationships --cwd $srcRoot --output $scipOut $tgtRoot" - ), - (cli / Compile / runMain).toTask( - s" $mainCls snapshot --cwd $srcRoot --output $snapDir ${indexDir - .getAbsolutePath}" - ) - ) - } - .value + } ) -lazy val minimized = project - .in(file("tests/minimized/.j11")) +lazy val scipSnapshotsJavaCommon = project + .in(file("scip-snapshots/cases/java/common")) .settings( publish / skip := true, run / fork := true, - (Compile / unmanagedSourceDirectories) += - file("tests/minimized/src/main/java").getAbsoluteFile, libraryDependencies += "org.projectlombok" % "lombok" % "1.18.22", // Fork javac so it receives real file paths instead of sbt's `vf://` virtual-file URIs - // (see the comment on `scipKotlincMinimized` for the long story). + // (see the comment on `scipSnapshotsKotlinCommon` for the long story). javaHome := Some(file(System.getProperty("java.home"))), // Keep minimized snapshots stable across JDK 11/17/21. Compile / javacOptions ++= Seq("--release", "11"), @@ -466,8 +415,8 @@ def javacModuleOptions = List( "-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED" ) -lazy val snapshots = project - .in(file("tests/snapshots")) +lazy val scipSnapshots = project + .in(file("scip-snapshots")) .settings( publish / skip := true, Test / fork := true, @@ -487,18 +436,27 @@ lazy val snapshots = project .dependsOn(cli) // Runtime paths for the snapshot generator, passed as -D system properties. -// Depending on `minimized/compile` here guarantees a fresh targetroot whenever -// `snapshots/test` or `snapshots/run` evaluate javaOptions. +// Depending on each snapshot case's compile task guarantees fresh targetroots +// whenever `scipSnapshots/test` or `scipSnapshots/run` evaluate javaOptions. def snapshotPathOptions = Def.task { - val _ = (minimized / Compile / compile).value + val _java = (scipSnapshotsJavaCommon / Compile / compile).value + val _kotlin = (scipSnapshotsKotlinCommon / Compile / compile).value + val snapshotRoot = (ThisBuild / baseDirectory).value / "scip-snapshots" Seq( - s"-Dsnapshot.expectDir=${((Compile / sourceDirectory).value / "generated") - .getAbsolutePath}", - s"-Dsnapshot.minimizedTargetroot=${( - minimized / Compile / semanticdbTargetRoot + s"-Dsnapshot.sourceroot=${(ThisBuild / baseDirectory).value.getAbsolutePath}", + "-Dsnapshot.cases=java-common,kotlin-common", + s"-Dsnapshot.case.java-common.expectDir=${( + snapshotRoot / "expected" / "java" / "common" + ).getAbsolutePath}", + s"-Dsnapshot.case.java-common.targetroot=${( + scipSnapshotsJavaCommon / Compile / semanticdbTargetRoot ).value.getAbsolutePath}", - s"-Dsnapshot.sourceroot=${(ThisBuild / baseDirectory) - .value - .getAbsolutePath}" + s"-Dsnapshot.case.kotlin-common.expectDir=${( + snapshotRoot / "expected" / "kotlin" / "common" + ).getAbsolutePath}", + s"-Dsnapshot.case.kotlin-common.targetroot=${(( + scipSnapshotsKotlinCommon / target + ).value / "scip-targetroot").getAbsolutePath}", + "-Dsnapshot.case.kotlin-common.aggregateNoEmitInverseRelationships=true" ) } diff --git a/flake.nix b/flake.nix index 05e31b331..bbe5eece7 100644 --- a/flake.nix +++ b/flake.nix @@ -57,10 +57,9 @@ # real-world project layouts that must not be reformatted here. find . -name '*.java' \ -not -path './examples/*' \ - -not -path './tests/minimized/*' \ - -not -path './tests/snapshots/*' \ + -not -path './scip-snapshots/cases/*' \ + -not -path './scip-snapshots/expected/*' \ -not -path './scip-java/src/test/resources/fixtures/*' \ - -not -path './scip-kotlinc/minimized/*' \ -exec ${pkgs.google-java-format}/bin/google-java-format --dry-run --set-exit-if-changed {} + touch $out ''; @@ -71,7 +70,8 @@ # build-tool test fixtures (real-world project layouts): neither may # be reformatted. find . -name '*.kt' \ - -not -path './scip-kotlinc/minimized/*' \ + -not -path './scip-snapshots/cases/*' \ + -not -path './scip-snapshots/expected/*' \ -not -path './scip-java/src/test/resources/fixtures/*' \ -exec ${pkgs.ktfmt}/bin/ktfmt --kotlinlang-style --dry-run --set-exit-if-changed {} + touch $out diff --git a/scip-snapshots/README.md b/scip-snapshots/README.md new file mode 100644 index 000000000..22455a71b --- /dev/null +++ b/scip-snapshots/README.md @@ -0,0 +1,24 @@ +# SCIP snapshots + +This directory contains end-to-end snapshot fixtures for `scip-javac`, +`scip-kotlinc`, and future mixed Java/Kotlin cases. + +## Layout + +```text +cases/ + java/common/ Java fixtures compiled with `--release 11`. + kotlin/common/ Kotlin fixtures, including Java interop consumers. + mixed/ Reserved for first-class mixed-language integration cases. + +expected/ + java/common/ Golden snapshots for `cases/java/common`. + kotlin/common/ Golden snapshots for `cases/kotlin/common`. +``` + +`common` cases should stay stable across the supported host JDK matrix. Add +version-specific cases when a fixture needs newer language features, for example +`cases/java/release-17`, `cases/java/release-21`, or `cases/kotlin/kotlin-2.2`. + +Run `sbt scipSnapshots/test` to compare goldens and `sbt scipSnapshots/run` to +regenerate them. diff --git a/tests/minimized/BUILD b/scip-snapshots/cases/java/common/BUILD similarity index 100% rename from tests/minimized/BUILD rename to scip-snapshots/cases/java/common/BUILD diff --git a/tests/minimized/src/main/java/minimized/AbstractClasses.java b/scip-snapshots/cases/java/common/src/main/java/minimized/AbstractClasses.java similarity index 100% rename from tests/minimized/src/main/java/minimized/AbstractClasses.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/AbstractClasses.java diff --git a/tests/minimized/src/main/java/minimized/AnnotationParameters.java b/scip-snapshots/cases/java/common/src/main/java/minimized/AnnotationParameters.java similarity index 100% rename from tests/minimized/src/main/java/minimized/AnnotationParameters.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/AnnotationParameters.java diff --git a/tests/minimized/src/main/java/minimized/Annotations.java b/scip-snapshots/cases/java/common/src/main/java/minimized/Annotations.java similarity index 100% rename from tests/minimized/src/main/java/minimized/Annotations.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/Annotations.java diff --git a/tests/minimized/src/main/java/minimized/AnnotationsOnParameterizedTypes.java b/scip-snapshots/cases/java/common/src/main/java/minimized/AnnotationsOnParameterizedTypes.java similarity index 100% rename from tests/minimized/src/main/java/minimized/AnnotationsOnParameterizedTypes.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/AnnotationsOnParameterizedTypes.java diff --git a/tests/minimized/src/main/java/minimized/AnonymousClasses.java b/scip-snapshots/cases/java/common/src/main/java/minimized/AnonymousClasses.java similarity index 100% rename from tests/minimized/src/main/java/minimized/AnonymousClasses.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/AnonymousClasses.java diff --git a/tests/minimized/src/main/java/minimized/Arrays.java b/scip-snapshots/cases/java/common/src/main/java/minimized/Arrays.java similarity index 100% rename from tests/minimized/src/main/java/minimized/Arrays.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/Arrays.java diff --git a/tests/minimized/src/main/java/minimized/ClassOf.java b/scip-snapshots/cases/java/common/src/main/java/minimized/ClassOf.java similarity index 100% rename from tests/minimized/src/main/java/minimized/ClassOf.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/ClassOf.java diff --git a/tests/minimized/src/main/java/minimized/Docstrings.java b/scip-snapshots/cases/java/common/src/main/java/minimized/Docstrings.java similarity index 100% rename from tests/minimized/src/main/java/minimized/Docstrings.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/Docstrings.java diff --git a/tests/minimized/src/main/java/minimized/EnumImplementsInterface.java b/scip-snapshots/cases/java/common/src/main/java/minimized/EnumImplementsInterface.java similarity index 100% rename from tests/minimized/src/main/java/minimized/EnumImplementsInterface.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/EnumImplementsInterface.java diff --git a/tests/minimized/src/main/java/minimized/Enums.java b/scip-snapshots/cases/java/common/src/main/java/minimized/Enums.java similarity index 100% rename from tests/minimized/src/main/java/minimized/Enums.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/Enums.java diff --git a/tests/minimized/src/main/java/minimized/Fields.java b/scip-snapshots/cases/java/common/src/main/java/minimized/Fields.java similarity index 100% rename from tests/minimized/src/main/java/minimized/Fields.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/Fields.java diff --git a/tests/minimized/src/main/java/minimized/ForComprehensions.java b/scip-snapshots/cases/java/common/src/main/java/minimized/ForComprehensions.java similarity index 100% rename from tests/minimized/src/main/java/minimized/ForComprehensions.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/ForComprehensions.java diff --git a/tests/minimized/src/main/java/minimized/InnerClasses.java b/scip-snapshots/cases/java/common/src/main/java/minimized/InnerClasses.java similarity index 100% rename from tests/minimized/src/main/java/minimized/InnerClasses.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/InnerClasses.java diff --git a/tests/minimized/src/main/java/minimized/Interfaces.java b/scip-snapshots/cases/java/common/src/main/java/minimized/Interfaces.java similarity index 100% rename from tests/minimized/src/main/java/minimized/Interfaces.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/Interfaces.java diff --git a/tests/minimized/src/main/java/minimized/LombokBuilder.java b/scip-snapshots/cases/java/common/src/main/java/minimized/LombokBuilder.java similarity index 100% rename from tests/minimized/src/main/java/minimized/LombokBuilder.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/LombokBuilder.java diff --git a/tests/minimized/src/main/java/minimized/Methods.java b/scip-snapshots/cases/java/common/src/main/java/minimized/Methods.java similarity index 100% rename from tests/minimized/src/main/java/minimized/Methods.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/Methods.java diff --git a/tests/minimized/src/main/java/minimized/MinimizedJavaMain.java b/scip-snapshots/cases/java/common/src/main/java/minimized/MinimizedJavaMain.java similarity index 100% rename from tests/minimized/src/main/java/minimized/MinimizedJavaMain.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/MinimizedJavaMain.java diff --git a/tests/minimized/src/main/java/minimized/OverloadResolution.java b/scip-snapshots/cases/java/common/src/main/java/minimized/OverloadResolution.java similarity index 100% rename from tests/minimized/src/main/java/minimized/OverloadResolution.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/OverloadResolution.java diff --git a/tests/minimized/src/main/java/minimized/Overrides.java b/scip-snapshots/cases/java/common/src/main/java/minimized/Overrides.java similarity index 100% rename from tests/minimized/src/main/java/minimized/Overrides.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/Overrides.java diff --git a/tests/minimized/src/main/java/minimized/ParameterizedTypes.java b/scip-snapshots/cases/java/common/src/main/java/minimized/ParameterizedTypes.java similarity index 100% rename from tests/minimized/src/main/java/minimized/ParameterizedTypes.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/ParameterizedTypes.java diff --git a/tests/minimized/src/main/java/minimized/Primitives.java b/scip-snapshots/cases/java/common/src/main/java/minimized/Primitives.java similarity index 100% rename from tests/minimized/src/main/java/minimized/Primitives.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/Primitives.java diff --git a/tests/minimized/src/main/java/minimized/RawTypes.java b/scip-snapshots/cases/java/common/src/main/java/minimized/RawTypes.java similarity index 100% rename from tests/minimized/src/main/java/minimized/RawTypes.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/RawTypes.java diff --git a/tests/minimized/src/main/java/minimized/SubClasses.java b/scip-snapshots/cases/java/common/src/main/java/minimized/SubClasses.java similarity index 100% rename from tests/minimized/src/main/java/minimized/SubClasses.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/SubClasses.java diff --git a/tests/minimized/src/main/java/minimized/TabIndented.java b/scip-snapshots/cases/java/common/src/main/java/minimized/TabIndented.java similarity index 100% rename from tests/minimized/src/main/java/minimized/TabIndented.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/TabIndented.java diff --git a/tests/minimized/src/main/java/minimized/TypeAnnotations.java b/scip-snapshots/cases/java/common/src/main/java/minimized/TypeAnnotations.java similarity index 100% rename from tests/minimized/src/main/java/minimized/TypeAnnotations.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/TypeAnnotations.java diff --git a/tests/minimized/src/main/java/minimized/TypeVariables.java b/scip-snapshots/cases/java/common/src/main/java/minimized/TypeVariables.java similarity index 100% rename from tests/minimized/src/main/java/minimized/TypeVariables.java rename to scip-snapshots/cases/java/common/src/main/java/minimized/TypeVariables.java diff --git a/scip-kotlinc/minimized/src/main/java/snapshots/ClassConsumer.java b/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/ClassConsumer.java similarity index 100% rename from scip-kotlinc/minimized/src/main/java/snapshots/ClassConsumer.java rename to scip-snapshots/cases/kotlin/common/src/main/java/snapshots/ClassConsumer.java diff --git a/scip-kotlinc/minimized/src/main/java/snapshots/CompanionConsumer.java b/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/CompanionConsumer.java similarity index 100% rename from scip-kotlinc/minimized/src/main/java/snapshots/CompanionConsumer.java rename to scip-snapshots/cases/kotlin/common/src/main/java/snapshots/CompanionConsumer.java diff --git a/scip-kotlinc/minimized/src/main/java/snapshots/KotlinClass.java b/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/KotlinClass.java similarity index 100% rename from scip-kotlinc/minimized/src/main/java/snapshots/KotlinClass.java rename to scip-snapshots/cases/kotlin/common/src/main/java/snapshots/KotlinClass.java diff --git a/scip-kotlinc/minimized/src/main/java/snapshots/KotlinLambdas.java b/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/KotlinLambdas.java similarity index 100% rename from scip-kotlinc/minimized/src/main/java/snapshots/KotlinLambdas.java rename to scip-snapshots/cases/kotlin/common/src/main/java/snapshots/KotlinLambdas.java diff --git a/scip-kotlinc/minimized/src/main/java/snapshots/ObjectKtConsumer.java b/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/ObjectKtConsumer.java similarity index 100% rename from scip-kotlinc/minimized/src/main/java/snapshots/ObjectKtConsumer.java rename to scip-snapshots/cases/kotlin/common/src/main/java/snapshots/ObjectKtConsumer.java diff --git a/scip-kotlinc/minimized/src/main/kotlin/snapshots/Class.kt b/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Class.kt similarity index 100% rename from scip-kotlinc/minimized/src/main/kotlin/snapshots/Class.kt rename to scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Class.kt diff --git a/scip-kotlinc/minimized/src/main/kotlin/snapshots/CompanionOwner.kt b/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/CompanionOwner.kt similarity index 100% rename from scip-kotlinc/minimized/src/main/kotlin/snapshots/CompanionOwner.kt rename to scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/CompanionOwner.kt diff --git a/scip-kotlinc/minimized/src/main/kotlin/snapshots/Docstrings.kt b/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Docstrings.kt similarity index 100% rename from scip-kotlinc/minimized/src/main/kotlin/snapshots/Docstrings.kt rename to scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Docstrings.kt diff --git a/scip-kotlinc/minimized/src/main/kotlin/snapshots/Functions.kt b/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Functions.kt similarity index 100% rename from scip-kotlinc/minimized/src/main/kotlin/snapshots/Functions.kt rename to scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Functions.kt diff --git a/scip-kotlinc/minimized/src/main/kotlin/snapshots/Implementations.kt b/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Implementations.kt similarity index 100% rename from scip-kotlinc/minimized/src/main/kotlin/snapshots/Implementations.kt rename to scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Implementations.kt diff --git a/scip-kotlinc/minimized/src/main/kotlin/snapshots/Lambdas.kt b/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Lambdas.kt similarity index 100% rename from scip-kotlinc/minimized/src/main/kotlin/snapshots/Lambdas.kt rename to scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Lambdas.kt diff --git a/scip-kotlinc/minimized/src/main/kotlin/snapshots/ObjectKt.kt b/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/ObjectKt.kt similarity index 100% rename from scip-kotlinc/minimized/src/main/kotlin/snapshots/ObjectKt.kt rename to scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/ObjectKt.kt diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AbstractClasses.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/AbstractClasses.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AbstractClasses.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/AbstractClasses.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationParameters.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/AnnotationParameters.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationParameters.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/AnnotationParameters.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Annotations.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Annotations.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Annotations.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Annotations.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationsOnParameterizedTypes.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/AnnotationsOnParameterizedTypes.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationsOnParameterizedTypes.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/AnnotationsOnParameterizedTypes.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnonymousClasses.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/AnonymousClasses.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnonymousClasses.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/AnonymousClasses.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Arrays.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Arrays.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Arrays.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Arrays.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ClassOf.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/ClassOf.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ClassOf.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/ClassOf.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Docstrings.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Docstrings.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Docstrings.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Docstrings.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/EnumImplementsInterface.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/EnumImplementsInterface.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/EnumImplementsInterface.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/EnumImplementsInterface.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Enums.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Enums.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Enums.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Enums.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Fields.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Fields.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Fields.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Fields.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ForComprehensions.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/ForComprehensions.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ForComprehensions.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/ForComprehensions.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/InnerClasses.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/InnerClasses.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/InnerClasses.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/InnerClasses.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Interfaces.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Interfaces.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Interfaces.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Interfaces.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/LombokBuilder.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/LombokBuilder.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/LombokBuilder.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/LombokBuilder.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Methods.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Methods.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Methods.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Methods.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/MinimizedJavaMain.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/MinimizedJavaMain.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/MinimizedJavaMain.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/MinimizedJavaMain.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/OverloadResolution.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/OverloadResolution.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/OverloadResolution.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/OverloadResolution.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Overrides.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Overrides.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Overrides.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Overrides.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ParameterizedTypes.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/ParameterizedTypes.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ParameterizedTypes.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/ParameterizedTypes.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Primitives.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Primitives.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Primitives.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/Primitives.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/RawTypes.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/RawTypes.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/RawTypes.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/RawTypes.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/SubClasses.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/SubClasses.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/SubClasses.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/SubClasses.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TabIndented.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/TabIndented.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TabIndented.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/TabIndented.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeAnnotations.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/TypeAnnotations.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeAnnotations.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/TypeAnnotations.java diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeVariables.java b/scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/TypeVariables.java similarity index 100% rename from tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeVariables.java rename to scip-snapshots/expected/java/common/scip-snapshots/cases/java/common/src/main/java/minimized/TypeVariables.java diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/java/snapshots/ClassConsumer.java b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/ClassConsumer.java similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/java/snapshots/ClassConsumer.java rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/ClassConsumer.java diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/java/snapshots/CompanionConsumer.java b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/CompanionConsumer.java similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/java/snapshots/CompanionConsumer.java rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/CompanionConsumer.java diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/java/snapshots/KotlinClass.java b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/KotlinClass.java similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/java/snapshots/KotlinClass.java rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/KotlinClass.java diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/java/snapshots/KotlinLambdas.java b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/KotlinLambdas.java similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/java/snapshots/KotlinLambdas.java rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/KotlinLambdas.java diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/java/snapshots/ObjectKtConsumer.java b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/ObjectKtConsumer.java similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/java/snapshots/ObjectKtConsumer.java rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/java/snapshots/ObjectKtConsumer.java diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/Class.kt b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Class.kt similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/Class.kt rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Class.kt diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/CompanionOwner.kt b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/CompanionOwner.kt similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/CompanionOwner.kt rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/CompanionOwner.kt diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/Docstrings.kt b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Docstrings.kt similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/Docstrings.kt rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Docstrings.kt diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/Functions.kt b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Functions.kt similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/Functions.kt rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Functions.kt diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/Implementations.kt b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Implementations.kt similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/Implementations.kt rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Implementations.kt diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/Lambdas.kt b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Lambdas.kt similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/Lambdas.kt rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/Lambdas.kt diff --git a/scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/ObjectKt.kt b/scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/ObjectKt.kt similarity index 100% rename from scip-kotlinc/minimized/src/generatedSnapshots/resources/scip-kotlinc/minimized/src/main/kotlin/snapshots/ObjectKt.kt rename to scip-snapshots/expected/kotlin/common/scip-snapshots/cases/kotlin/common/src/main/kotlin/snapshots/ObjectKt.kt diff --git a/tests/snapshots/src/main/java/tests/MinimizedSnapshotScipGenerator.java b/scip-snapshots/src/main/java/tests/MinimizedSnapshotScipGenerator.java similarity index 57% rename from tests/snapshots/src/main/java/tests/MinimizedSnapshotScipGenerator.java rename to scip-snapshots/src/main/java/tests/MinimizedSnapshotScipGenerator.java index dbab561f1..8b61cedca 100644 --- a/tests/snapshots/src/main/java/tests/MinimizedSnapshotScipGenerator.java +++ b/scip-snapshots/src/main/java/tests/MinimizedSnapshotScipGenerator.java @@ -7,19 +7,42 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; import java.util.stream.Stream; import org.scip_code.scip.Document; import org.scip_code.scip.Index; /** - * Indexes the {@code tests/minimized} corpus and renders golden SCIP snapshots. Runtime paths are - * supplied as {@code -Dsnapshot.*} system properties by the sbt build (see build.sbt), replacing - * the former sbt-buildinfo generated values. + * Indexes the {@code scip-snapshots/cases} corpora and renders golden SCIP snapshots. Runtime paths + * are supplied as {@code -Dsnapshot.*} system properties by the sbt build (see build.sbt), + * replacing the former sbt-buildinfo generated values. */ public class MinimizedSnapshotScipGenerator { + public static final class SnapshotCase { + public final String id; + public final Path expectDirectory; + public final Path targetroot; + public final boolean aggregateNoEmitInverseRelationships; + + private SnapshotCase( + String id, + Path expectDirectory, + Path targetroot, + boolean aggregateNoEmitInverseRelationships) { + this.id = id; + this.expectDirectory = expectDirectory; + this.targetroot = targetroot; + this.aggregateNoEmitInverseRelationships = aggregateNoEmitInverseRelationships; + } + + public SnapshotContext context() { + return new SnapshotContext(id, expectDirectory); + } + } public void run(List args) { int exit = ScipJava.app.run(args); @@ -28,25 +51,34 @@ public void run(List args) { } } - public void run(SnapshotContext context, SnapshotHandler handler) { - onTargetroot(context, handler, requiredPathProperty("snapshot.minimizedTargetroot")); + public void run(SnapshotCase snapshotCase, SnapshotHandler handler) { + onTargetroot( + snapshotCase.context(), + handler, + snapshotCase.targetroot, + snapshotCase.aggregateNoEmitInverseRelationships); } - public void onTargetroot(SnapshotContext context, SnapshotHandler handler, Path targetroot) { + public void onTargetroot( + SnapshotContext context, + SnapshotHandler handler, + Path targetroot, + boolean aggregateNoEmitInverseRelationships) { Path sourceroot = requiredPathProperty("snapshot.sourceroot"); Path scipTempDir = createTempDirectory(); Path snapshotOutput = createTempDirectory(); try { Path scipOutput = scipTempDir.resolve("index.scip"); - run( - Arrays.asList( - "aggregate", - "--cwd", - sourceroot.toString(), - "--output", - scipOutput.toString(), - "--targetroot", - targetroot.toString())); + List aggregateArgs = + new ArrayList<>( + Arrays.asList( + "aggregate", "--cwd", sourceroot.toString(), "--output", scipOutput.toString())); + if (aggregateNoEmitInverseRelationships) { + aggregateArgs.add("--no-emit-inverse-relationships"); + } + aggregateArgs.add("--targetroot"); + aggregateArgs.add(targetroot.toString()); + run(aggregateArgs); Index index; try { index = Index.parseFrom(Files.readAllBytes(scipOutput)); @@ -78,13 +110,39 @@ public void onTargetroot(SnapshotContext context, SnapshotHandler handler, Path } } + public static List snapshotCases() { + List cases = + Arrays.stream(requiredProperty("snapshot.cases").split(",")) + .map(String::trim) + .filter(id -> !id.isEmpty()) + .map(MinimizedSnapshotScipGenerator::snapshotCase) + .collect(Collectors.toList()); + if (cases.isEmpty()) { + throw new IllegalStateException("Missing snapshot cases in -Dsnapshot.cases"); + } + return cases; + } + + private static SnapshotCase snapshotCase(String id) { + String prefix = "snapshot.case." + id + "."; + return new SnapshotCase( + id, + requiredPathProperty(prefix + "expectDir"), + requiredPathProperty(prefix + "targetroot"), + Boolean.parseBoolean(System.getProperty(prefix + "aggregateNoEmitInverseRelationships"))); + } + public static Path requiredPathProperty(String name) { + return Paths.get(requiredProperty(name)); + } + + private static String requiredProperty(String name) { String value = System.getProperty(name); if (value == null || value.trim().isEmpty()) { throw new IllegalStateException( - "Missing -D" + name + ". Run via sbt snapshots/test or snapshots/run."); + "Missing -D" + name + ". Run via sbt scipSnapshots/test or scipSnapshots/run."); } - return Paths.get(value); + return value; } private static void runScipSnapshot(Path from, Path to) { diff --git a/tests/snapshots/src/main/java/tests/SaveSnapshotHandler.java b/scip-snapshots/src/main/java/tests/SaveSnapshotHandler.java similarity index 100% rename from tests/snapshots/src/main/java/tests/SaveSnapshotHandler.java rename to scip-snapshots/src/main/java/tests/SaveSnapshotHandler.java diff --git a/scip-snapshots/src/main/java/tests/SaveSnapshots.java b/scip-snapshots/src/main/java/tests/SaveSnapshots.java new file mode 100644 index 000000000..40affa330 --- /dev/null +++ b/scip-snapshots/src/main/java/tests/SaveSnapshots.java @@ -0,0 +1,27 @@ +package tests; + +/** + * Regenerates all snapshot goldens (invoked by {@code sbt scipSnapshots/run}). Snapshot cases are + * supplied via {@code -Dsnapshot.*} system properties by the sbt build. + */ +public final class SaveSnapshots { + private SaveSnapshots() {} + + public static void main(String[] args) { + // Keep regenerated goldens stable across JDK 11/17/21 by pinning the JDK version embedded in + // stdlib SCIP symbols. Matches the `-Dscip.jdk.version=11` set on the test JVM in build.sbt. + System.setProperty("scip.jdk.version", "11"); + MinimizedSnapshotScipGenerator generator = new MinimizedSnapshotScipGenerator(); + for (MinimizedSnapshotScipGenerator.SnapshotCase snapshotCase : + MinimizedSnapshotScipGenerator.snapshotCases()) { + SnapshotContext context = snapshotCase.context(); + SaveSnapshotHandler handler = new SaveSnapshotHandler(); + generator.onTargetroot( + context, + handler, + snapshotCase.targetroot, + snapshotCase.aggregateNoEmitInverseRelationships); + handler.onFinished(context); + } + } +} diff --git a/tests/snapshots/src/main/java/tests/SnapshotContext.java b/scip-snapshots/src/main/java/tests/SnapshotContext.java similarity index 58% rename from tests/snapshots/src/main/java/tests/SnapshotContext.java rename to scip-snapshots/src/main/java/tests/SnapshotContext.java index 598aa4d21..e56d952f6 100644 --- a/tests/snapshots/src/main/java/tests/SnapshotContext.java +++ b/scip-snapshots/src/main/java/tests/SnapshotContext.java @@ -3,9 +3,11 @@ import java.nio.file.Path; public final class SnapshotContext { + public final String caseId; public final Path expectDirectory; - public SnapshotContext(Path expectDirectory) { + public SnapshotContext(String caseId, Path expectDirectory) { + this.caseId = caseId; this.expectDirectory = expectDirectory; } } diff --git a/tests/snapshots/src/main/java/tests/SnapshotHandler.java b/scip-snapshots/src/main/java/tests/SnapshotHandler.java similarity index 100% rename from tests/snapshots/src/main/java/tests/SnapshotHandler.java rename to scip-snapshots/src/main/java/tests/SnapshotHandler.java diff --git a/tests/snapshots/src/test/java/tests/AssertSnapshotHandler.java b/scip-snapshots/src/test/java/tests/AssertSnapshotHandler.java similarity index 92% rename from tests/snapshots/src/test/java/tests/AssertSnapshotHandler.java rename to scip-snapshots/src/test/java/tests/AssertSnapshotHandler.java index 78d7ef43b..3882b626a 100644 --- a/tests/snapshots/src/test/java/tests/AssertSnapshotHandler.java +++ b/scip-snapshots/src/test/java/tests/AssertSnapshotHandler.java @@ -29,7 +29,8 @@ List tests() { @Override public void onSnapshotTest( SnapshotContext context, Path expectFile, Supplier obtainedOutput) { - String relativePath = context.expectDirectory.relativize(expectFile).toString(); + String relativePath = + context.caseId + "/" + context.expectDirectory.relativize(expectFile).toString(); String obtained = obtainedOutput.get(); tests.add( dynamicTest( @@ -39,7 +40,7 @@ public void onSnapshotTest( fail( "no snapshot file for " + relativePath - + ". To fix this problem, execute the command 'sbt snapshots/run'"); + + ". To fix this problem, execute the command 'sbt scipSnapshots/run'"); } String expected; try { diff --git a/scip-snapshots/src/test/java/tests/MinimizedSnapshotScipTest.java b/scip-snapshots/src/test/java/tests/MinimizedSnapshotScipTest.java new file mode 100644 index 000000000..159ef34be --- /dev/null +++ b/scip-snapshots/src/test/java/tests/MinimizedSnapshotScipTest.java @@ -0,0 +1,23 @@ +package tests; + +import java.util.List; +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; + +class MinimizedSnapshotScipTest { + + @TestFactory + List minimizedSnapshots() { + AssertSnapshotHandler handler = new AssertSnapshotHandler(); + MinimizedSnapshotScipGenerator generator = new MinimizedSnapshotScipGenerator(); + for (MinimizedSnapshotScipGenerator.SnapshotCase snapshotCase : + MinimizedSnapshotScipGenerator.snapshotCases()) { + generator.onTargetroot( + snapshotCase.context(), + handler, + snapshotCase.targetroot, + snapshotCase.aggregateNoEmitInverseRelationships); + } + return handler.tests(); + } +} diff --git a/tests/snapshots/src/main/java/tests/SaveSnapshots.java b/tests/snapshots/src/main/java/tests/SaveSnapshots.java deleted file mode 100644 index 5ab5369c1..000000000 --- a/tests/snapshots/src/main/java/tests/SaveSnapshots.java +++ /dev/null @@ -1,21 +0,0 @@ -package tests; - -/** - * Regenerates the Java snapshot goldens (invoked by {@code sbt snapshots/run}). The expected-output - * directory is supplied via the {@code -Dsnapshot.expectDir} system property by the sbt build. - */ -public final class SaveSnapshots { - private SaveSnapshots() {} - - public static void main(String[] args) { - // Keep regenerated goldens stable across JDK 11/17/21 by pinning the JDK version embedded in - // stdlib SCIP symbols. Matches the `-Dscip.jdk.version=11` set on the test JVM in build.sbt. - System.setProperty("scip.jdk.version", "11"); - SnapshotContext context = - new SnapshotContext( - MinimizedSnapshotScipGenerator.requiredPathProperty("snapshot.expectDir")); - SaveSnapshotHandler handler = new SaveSnapshotHandler(); - new MinimizedSnapshotScipGenerator().run(context, handler); - handler.onFinished(context); - } -} diff --git a/tests/snapshots/src/test/java/tests/MinimizedSnapshotScipTest.java b/tests/snapshots/src/test/java/tests/MinimizedSnapshotScipTest.java deleted file mode 100644 index 07573171f..000000000 --- a/tests/snapshots/src/test/java/tests/MinimizedSnapshotScipTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package tests; - -import java.nio.file.Path; -import java.util.List; -import org.junit.jupiter.api.DynamicTest; -import org.junit.jupiter.api.TestFactory; - -class MinimizedSnapshotScipTest { - - @TestFactory - List minimizedSnapshots() { - Path expectDir = MinimizedSnapshotScipGenerator.requiredPathProperty("snapshot.expectDir"); - SnapshotContext context = new SnapshotContext(expectDir); - AssertSnapshotHandler handler = new AssertSnapshotHandler(); - new MinimizedSnapshotScipGenerator().run(context, handler); - return handler.tests(); - } -}