From f8d2d0ed23bed4d6593b95b9f0b40520a9e40e1e Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 22 Jul 2016 01:11:44 -0800 Subject: [PATCH] Tests for profiles. --- src/test/kotlin/com/beust/kobalt/BaseTest.kt | 27 ++++++++++ .../com/beust/kobalt/internal/ProfileTest.kt | 52 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 src/test/kotlin/com/beust/kobalt/BaseTest.kt create mode 100644 src/test/kotlin/com/beust/kobalt/internal/ProfileTest.kt diff --git a/src/test/kotlin/com/beust/kobalt/BaseTest.kt b/src/test/kotlin/com/beust/kobalt/BaseTest.kt new file mode 100644 index 00000000..6340d36c --- /dev/null +++ b/src/test/kotlin/com/beust/kobalt/BaseTest.kt @@ -0,0 +1,27 @@ +package com.beust.kobalt + +import com.beust.kobalt.api.Kobalt +import com.beust.kobalt.app.BuildFileCompiler +import com.beust.kobalt.internal.JvmCompilerPlugin +import com.beust.kobalt.internal.KobaltPluginXml +import com.beust.kobalt.internal.PluginInfo +import com.beust.kobalt.internal.build.BuildFile +import java.io.File +import java.nio.file.Paths + +interface BaseTest { + fun compileBuildFile(buildFileText: String, args: Args, compilerFactory: BuildFileCompiler.IFactory) + : BuildFileCompiler.FindProjectResult { + val tmpBuildFile = File.createTempFile("kobaltTest", "").apply { + deleteOnExit() + writeText(buildFileText) + } + val thisBuildFile = BuildFile(Paths.get(tmpBuildFile.absolutePath), "Build.kt") + args.buildFile = tmpBuildFile.absolutePath + val jvmCompilerPlugin = Kobalt.findPlugin("JvmCompiler") as JvmCompilerPlugin + val pluginInfo = PluginInfo(KobaltPluginXml(), null, null).apply { + projectContributors.add(jvmCompilerPlugin) + } + return compilerFactory.create(listOf(thisBuildFile), pluginInfo).compileBuildFiles(args) + } +} \ No newline at end of file diff --git a/src/test/kotlin/com/beust/kobalt/internal/ProfileTest.kt b/src/test/kotlin/com/beust/kobalt/internal/ProfileTest.kt new file mode 100644 index 00000000..4bb722d7 --- /dev/null +++ b/src/test/kotlin/com/beust/kobalt/internal/ProfileTest.kt @@ -0,0 +1,52 @@ +package com.beust.kobalt.internal + +import com.beust.kobalt.Args +import com.beust.kobalt.BaseTest +import com.beust.kobalt.TestModule +import com.beust.kobalt.api.Kobalt +import com.beust.kobalt.api.Project +import com.beust.kobalt.app.BuildFileCompiler +import com.google.inject.Inject +import org.assertj.core.api.Assertions.assertThat +import org.testng.annotations.Guice +import org.testng.annotations.Test + +@Guice(modules = arrayOf(TestModule::class)) +class ProfileTest @Inject constructor(val compilerFactory: BuildFileCompiler.IFactory +// val jvmCompilerPlugin: JvmCompilerPlugin +// val buildScriptUtil: BuildScriptUtil +) : BaseTest { + private fun runTestWithProfile(enabled: Boolean) : Project { + val buildFileString = """ + | import com.beust.kobalt.* + | import com.beust.kobalt.api.* + | val profile = false + | val p = project { + | name = if (profile) "profileOn" else "profileOff" + | } + """.trimMargin() + + val args = Args() + if (enabled) args.profiles = "profile" +// val jvmCompilerPlugin = Kobalt.findPlugin("JvmCompiler") as JvmCompilerPlugin +// val pluginInfo = PluginInfo(KobaltPluginXml(), null, null).apply { +// projectContributors.add(jvmCompilerPlugin) +// } +// val projects = buildScriptUtil.runBuildScriptJarFile() + val compileResult = compileBuildFile(buildFileString, args, compilerFactory) + return compileResult.projects[0] + } + + @Test + fun profilesShouldWork() { + Kobalt.init(TestModule()) + assertThat(runTestWithProfile(true).name).isEqualTo("profileOn") +// Kobalt.INJECTOR.getInstance(Plugins::class.java).shutdownPlugins() +// Kobalt.init(TestModule()) +// val success = File(KFiles.KOBALT_DOT_DIR).deleteRecursively() +// println("DELETING " + File(KFiles.KOBALT_DOT_DIR).absolutePath + ": $success") +// assertThat(runTestWithProfile(false).name).isEqualTo("profileOff") + } +} + +