diff options
Diffstat (limited to 'jps/jps-builders/testSrc/org/jetbrains/jps/builders/rebuild/ArtifactRebuildTest.kt')
-rw-r--r-- | jps/jps-builders/testSrc/org/jetbrains/jps/builders/rebuild/ArtifactRebuildTest.kt | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/jps/jps-builders/testSrc/org/jetbrains/jps/builders/rebuild/ArtifactRebuildTest.kt b/jps/jps-builders/testSrc/org/jetbrains/jps/builders/rebuild/ArtifactRebuildTest.kt new file mode 100644 index 000000000000..0a3a49d559e4 --- /dev/null +++ b/jps/jps-builders/testSrc/org/jetbrains/jps/builders/rebuild/ArtifactRebuildTest.kt @@ -0,0 +1,168 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.jps.builders.rebuild + +import com.intellij.openapi.util.io.FileUtil +import com.intellij.util.io.ZipUtil + +import java.util.jar.Attributes +import java.util.jar.Manifest +import java.io.File +import java.io.FileInputStream +import kotlin.test.assertTrue +import kotlin.test.assertEquals + +/** + * @author nik + */ +class ArtifactRebuildTest: JpsRebuildTestCase() { + fun testArtifactIncludesArchiveArtifact() { + val name = "artifactIncludesArchiveArtifact" + try { + doTest("$name/${name}.ipr", fs { + dir("artifacts") { + dir("data") { + archive("a.jar") { + file("a.txt") + } + } + } + }) + } + finally { + FileUtil.delete(File(FileUtil.toSystemDependentName(getTestDataRootPath() + "/$name/data/a.jar"))) + } + } + + fun testArtifactWithoutOutput() { + val outDir = FileUtil.createTempDirectory("output", "").getAbsolutePath() + loadProject("artifactWithoutOutput/artifactWithoutOutput.ipr", mapOf("OUTPUT_DIR" to outDir)) + + rebuild() + assertOutput(outDir, fs { + dir("artifacts") { + dir("main") { + file("data.txt") + file("data2.txt") + } + } + }) + } + + fun testExtractDir() { + doTest("extractDirTest/extractDirTest.ipr", fs { + dir("artifacts") { + dir("extractDir") { + file("b.txt", "b") + } + dir("extractRoot") { + dir("extracted") { + dir("dir") { + file("b.txt", "b") + } + file("a.txt", "a") + } + } + dir("packedDir") { + archive("packedDir.jar") { + file("b.txt", "b") + } + } + dir("packedRoot") { + archive("packedRoot.jar") { + dir("dir") { + file("b.txt", "b") + } + file("a.txt", "a") + } + } + } + }) + } + + fun testManifestInArtifact() { + loadAndRebuild("manifestInArtifact/manifest.ipr", mapOf()) + val jarFile = File(myOutputDirectory, "artifacts/simple/simple.jar") + assertTrue(jarFile.exists()) + val extracted = FileUtil.createTempDirectory("build-manifest", "") + ZipUtil.extract(jarFile, extracted, null) + val manifestFile = File(extracted, "META-INF/MANIFEST.MF") + assertTrue(manifestFile.exists()) + val manifest = Manifest(FileInputStream(manifestFile)) + assertEquals("MyClass", manifest.getMainAttributes()!!.getValue(Attributes.Name.MAIN_CLASS)) + } + + fun testOverwriteArtifacts() { + doTest("overwriteTest/overwriteTest.ipr", fs { + dir("artifacts") { + dir("classes") { + file("a.xml", "<root2/>") + } + dir("dirs") { + file("x.txt", "d2") + } + dir("fileCopy") { + dir("xxx") { + dir("a") { + file("f.txt", "b") + } + } + } + } + dir("production") { + dir("dep") { + file("a.xml", "<root2/>") + } + dir("overwriteTest") { + file("a.xml", "<root1/>") + } + } + }) + } + + fun testPathVariablesInArtifact() { + val externalDir = "${getTestDataRootPath()}/pathVariables/external" + doTest("pathVariables/pathVariables.ipr", mapOf("EXTERNAL_DIR" to externalDir), fs { + dir("artifacts") { + dir("fileCopy") { + dir("dir") { + file("file.txt", "xxx") + } + } + } + }) + } + + fun testModuleTestOutputElement() { + doTest("moduleTestOutput/moduleTestOutput.ipr", fs { + dir("artifacts") { + dir("tests") { + file("MyTest.class") + } + } + dir("production") { + dir("moduleTestOutput") { + file("MyClass.class") + } + } + dir("test") { + dir("moduleTestOutput") { + file("MyTest.class") + } + } + }) + } +} |