tests: use Kotlin DSL to check output in PluginModuleCompilationTest

GitOrigin-RevId: c55fe9642a576ae5c93c5ce5fd7911616e79bfc4
This commit is contained in:
nik
2019-05-15 17:08:09 +03:00
committed by intellij-monorepo-bot
parent 65a68b263f
commit 1849ef6a1e
2 changed files with 56 additions and 28 deletions
@@ -26,6 +26,8 @@ import com.intellij.packaging.impl.compiler.ArtifactCompileScope;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.testFramework.*;
import com.intellij.util.concurrency.Semaphore;
import com.intellij.util.io.DirectoryContentSpec;
import com.intellij.util.io.DirectoryContentSpecKt;
import com.intellij.util.io.TestFileSystemBuilder;
import com.intellij.util.ui.UIUtil;
import gnu.trove.THashSet;
@@ -342,6 +344,10 @@ public abstract class BaseCompilerTestCase extends ModuleTestCase {
assertOutput(module, item, false);
}
protected static void assertOutput(Module module, DirectoryContentSpec spec) {
DirectoryContentSpecKt.assertMatches(getOutputDir(module, false), spec);
}
protected static void assertOutput(Module module, TestFileSystemBuilder item, final boolean forTests) {
File outputDir = getOutputDir(module, forTests);
Assert.assertTrue((forTests? "Test output" : "Output") +" directory " + outputDir.getAbsolutePath() + " doesn't exist", outputDir.exists());
@@ -15,7 +15,9 @@ import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.util.io.FileUtilRt
import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.util.SmartList
import com.intellij.util.io.TestFileSystemBuilder.fs
import com.intellij.util.io.assertMatches
import com.intellij.util.io.directoryContent
import com.intellij.util.io.zipFile
import org.assertj.core.api.Assertions.assertThat
import org.jetbrains.idea.devkit.module.PluginModuleType
import org.jetbrains.idea.devkit.projectRoots.IdeaJdk
@@ -46,17 +48,28 @@ class PluginModuleCompilationTest : BaseCompilerTestCase() {
fun testMakeSimpleModule() {
val module = setupSimplePluginProject()
make(module)
BaseCompilerTestCase.assertOutput(module, fs().dir("xxx").file("MyAction.class"))
assertOutput(module, directoryContent {
dir("xxx") {
file("MyAction.class")
}
})
val sandbox = File(getSandboxPath())
assertThat(sandbox).isDirectory()
fs()
.dir("plugins")
.dir("pluginProject")
.dir("META-INF").file("plugin.xml").end()
.dir("classes")
.dir("xxx").file("MyAction.class")
.build().assertDirectoryEqual(sandbox)
sandbox.assertMatches(directoryContent {
dir("plugins") {
dir("pluginProject") {
dir("META-INF") {
file("plugin.xml")
}
dir("classes") {
dir("xxx") {
file("MyAction.class")
}
}
}
}
})
}
fun testRebuildSimpleProject() {
@@ -71,12 +84,15 @@ class PluginModuleCompilationTest : BaseCompilerTestCase() {
prepareForDeployment(module)
val outputFile = File("$projectBasePath/pluginProject.jar")
assertThat(outputFile).isFile()
fs()
.archive("pluginProject.jar")
.dir("META-INF").file("plugin.xml").file("MANIFEST.MF").end()
.dir("xxx").file("MyAction.class")
.build().assertFileEqual(outputFile)
outputFile.assertMatches(zipFile {
dir("META-INF") {
file("plugin.xml")
file("MANIFEST.MF")
}
dir("xxx") {
file("MyAction.class")
}
})
}
fun testBuildProjectWithJpsModule() {
@@ -85,18 +101,24 @@ class PluginModuleCompilationTest : BaseCompilerTestCase() {
prepareForDeployment(module)
val outputFile = File("$projectBasePath/pluginProject.zip")
assertThat(outputFile).isFile()
fs()
.archive("pluginProject.zip")
.dir("pluginProject")
.dir("lib")
.archive("pluginProject.jar")
.dir("META-INF").file("plugin.xml").file("MANIFEST.MF").end()
.dir("xxx").file("MyAction.class").end()
.end()
.dir("jps")
.archive("jps-plugin.jar").file("Builder.class")
.build().assertFileEqual(outputFile)
outputFile.assertMatches(zipFile {
dir("pluginProject") {
dir("lib") {
zip("pluginProject.jar") {
dir("META-INF") {
file("plugin.xml")
file("MANIFEST.MF")
}
dir("xxx") {
file("MyAction.class")
}
}
dir("jps") {
zip("jps-plugin.jar") { file("Builder.class") }
}
}
}
})
}
private fun prepareForDeployment(module: Module) {