diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/.gitignore b/src/sbt-test/sbteclipse/08-jdt-settings/.gitignore new file mode 100644 index 0000000..5fcbd56 --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/.gitignore @@ -0,0 +1 @@ +!.settings diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/b/expected b/src/sbt-test/sbteclipse/08-jdt-settings/b/expected new file mode 100644 index 0000000..f736ce2 --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/b/expected @@ -0,0 +1,3 @@ +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/build.sbt b/src/sbt-test/sbteclipse/08-jdt-settings/build.sbt new file mode 100644 index 0000000..77bcea7 --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/build.sbt @@ -0,0 +1,92 @@ + +val check = TaskKey[Unit]("check") := { + import java.util.Properties + import java.io.FileInputStream + import scala.collection.JavaConverters._ + + val s: TaskStreams = streams.value + val expectedFile = baseDirectory.value / "expected" + val resultFile = baseDirectory.value / ".settings" / "org.eclipse.jdt.core.prefs" + + if (expectedFile.exists()) { + val expectedIn = new FileInputStream(expectedFile) + val expected = + try { + val prop = new Properties() + prop.load(expectedIn) + prop.asScala.toMap + } finally { + expectedIn.close() + } + + val resultIn = new FileInputStream(resultFile) + val result = + try { + val prop = new Properties() + prop.load(resultIn) + prop.asScala.toMap + } finally { + resultIn.close() + } + + if (expected == result) + s.log.info(s"correct data: ${resultFile}") + else + sys.error("Expected settings to be '%s', but was '%s'!".format(expected, result)) + } +} + +// ensure org.eclipse.core.resources.prefs will always be generated +ThisBuild / scalacOptions ++= Seq("-encoding", "utf-8") + +// check that no JDT file is generated (default ignore, no runtime defined) +lazy val projectA = (project in file("a")) + .settings( + check + ) + +// check that a new and correct JDT file is generated +lazy val projectB = (project in file("b")) + .settings( + EclipseKeys.executionEnvironment := Some(EclipseExecutionEnvironment.JavaSE18), + EclipseKeys.jdtMode := EclipseJDTMode.Update, + check + ) + +// check that a correct JDT file is is not updated +lazy val projectC = (project in file("c")) + .settings( + EclipseKeys.executionEnvironment := Some(EclipseExecutionEnvironment.JavaSE11), + EclipseKeys.jdtMode := EclipseJDTMode.Update, + check + ) + +// check that an outdated JDT file is selectively updated +lazy val projectD = (project in file("d")) + .settings( + EclipseKeys.executionEnvironment := Some(EclipseExecutionEnvironment.JavaSE_17), + EclipseKeys.jdtMode := EclipseJDTMode.Update, + check + ) + +// check that a JDT file is overwritten +lazy val projectE = (project in file("e")) + .settings( + EclipseKeys.executionEnvironment := Some(EclipseExecutionEnvironment.JavaSE11), + EclipseKeys.jdtMode := EclipseJDTMode.Overwrite, + check + ) + +// check that an JDT file is removed +lazy val projectF = (project in file("f")) + .settings( + EclipseKeys.jdtMode := EclipseJDTMode.Remove, + check + ) + +// check that an JDT file is default ignored, but written on command +lazy val projectG = (project in file("g")) + .settings( + EclipseKeys.executionEnvironment := Some(EclipseExecutionEnvironment.JavaSE18), + check + ) diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/c/.settings/org.eclipse.jdt.core.prefs b/src/sbt-test/sbteclipse/08-jdt-settings/c/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..7fc5c6f --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/c/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.compiler.compliance=11 +dummy.key=abc diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/c/expected b/src/sbt-test/sbteclipse/08-jdt-settings/c/expected new file mode 100644 index 0000000..7fc5c6f --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/c/expected @@ -0,0 +1,4 @@ +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.compiler.compliance=11 +dummy.key=abc diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/d/.settings/org.eclipse.jdt.core.prefs b/src/sbt-test/sbteclipse/08-jdt-settings/d/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..7fc5c6f --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/d/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.compiler.compliance=11 +dummy.key=abc diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/d/expected b/src/sbt-test/sbteclipse/08-jdt-settings/d/expected new file mode 100644 index 0000000..23a0c69 --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/d/expected @@ -0,0 +1,4 @@ +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.source=17 +org.eclipse.jdt.core.compiler.compliance=17 +dummy.key=abc diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/e/.settings/org.eclipse.jdt.core.prefs b/src/sbt-test/sbteclipse/08-jdt-settings/e/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..7fc5c6f --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/e/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.compiler.compliance=11 +dummy.key=abc diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/e/expected b/src/sbt-test/sbteclipse/08-jdt-settings/e/expected new file mode 100644 index 0000000..3bc34e2 --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/e/expected @@ -0,0 +1,3 @@ +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.compiler.compliance=11 diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/f/.settings/org.eclipse.jdt.core.prefs b/src/sbt-test/sbteclipse/08-jdt-settings/f/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..7fc5c6f --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/f/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.compiler.compliance=11 +dummy.key=abc diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/g/.settings/org.eclipse.jdt.core.prefs b/src/sbt-test/sbteclipse/08-jdt-settings/g/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..ccb0942 --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/g/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1 @@ +dummy.key=abc diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/g/expected b/src/sbt-test/sbteclipse/08-jdt-settings/g/expected new file mode 100644 index 0000000..ccb0942 --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/g/expected @@ -0,0 +1 @@ +dummy.key=abc diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/project/plugins.sbt b/src/sbt-test/sbteclipse/08-jdt-settings/project/plugins.sbt new file mode 100644 index 0000000..542d181 --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/project/plugins.sbt @@ -0,0 +1,7 @@ +{ + val pluginVersion = System.getProperty("plugin.version") + if(pluginVersion == null) + throw new RuntimeException("""|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin) + else addSbtPlugin("com.github.sbt" % "sbt-eclipse" % pluginVersion) +} diff --git a/src/sbt-test/sbteclipse/08-jdt-settings/test b/src/sbt-test/sbteclipse/08-jdt-settings/test new file mode 100644 index 0000000..2e764ee --- /dev/null +++ b/src/sbt-test/sbteclipse/08-jdt-settings/test @@ -0,0 +1,62 @@ +# timestamp marker file +$ touch marker + +$ exists f/.settings/org.eclipse.jdt.core.prefs + +> eclipse + +> check + +$ exists a/.settings/org.eclipse.core.resources.prefs +-$ exists a/.settings/org.eclipse.jdt.core.prefs + +$ exists b/.settings/org.eclipse.jdt.core.prefs +$ newer b/.settings/org.eclipse.jdt.core.prefs marker + +$ exists c/.settings/org.eclipse.jdt.core.prefs +$ newer marker c/.settings/org.eclipse.jdt.core.prefs + +$ exists d/.settings/org.eclipse.jdt.core.prefs +$ newer d/.settings/org.eclipse.jdt.core.prefs marker + +$ exists e/.settings/org.eclipse.jdt.core.prefs +$ newer e/.settings/org.eclipse.jdt.core.prefs marker + +$ exists f/.settings/org.eclipse.core.resources.prefs +-$ exists f/.settings/org.eclipse.jdt.core.prefs + +$ exists g/.settings/org.eclipse.jdt.core.prefs +$ newer marker g/.settings/org.eclipse.jdt.core.prefs + +# test overwrite mode via command arg +$ touch marker +> eclipse jdt-mode=Overwrite +# no runtime defined for a +-$ exists a/.settings/org.eclipse.jdt.core.prefs +$ newer b/.settings/org.eclipse.jdt.core.prefs marker +$ newer c/.settings/org.eclipse.jdt.core.prefs marker +$ newer d/.settings/org.eclipse.jdt.core.prefs marker +$ newer e/.settings/org.eclipse.jdt.core.prefs marker +-$ exists f/.settings/org.eclipse.jdt.core.prefs +$ newer g/.settings/org.eclipse.jdt.core.prefs marker + +# test ignore mode via command arg +$ touch marker +> eclipse jdt-mode=Ignore +-$ exists a/.settings/org.eclipse.jdt.core.prefs +$ newer marker b/.settings/org.eclipse.jdt.core.prefs +$ newer marker c/.settings/org.eclipse.jdt.core.prefs +$ newer marker d/.settings/org.eclipse.jdt.core.prefs +$ newer marker e/.settings/org.eclipse.jdt.core.prefs +-$ exists f/.settings/org.eclipse.jdt.core.prefs +$ newer marker g/.settings/org.eclipse.jdt.core.prefs + +# test remove mode via command arg +> eclipse jdt-mode=Remove +-$ exists a/.settings/org.eclipse.jdt.core.prefs +-$ exists b/.settings/org.eclipse.jdt.core.prefs +-$ exists c/.settings/org.eclipse.jdt.core.prefs +-$ exists d/.settings/org.eclipse.jdt.core.prefs +-$ exists e/.settings/org.eclipse.jdt.core.prefs +-$ exists f/.settings/org.eclipse.jdt.core.prefs +-$ exists g/.settings/org.eclipse.jdt.core.prefs