summaryrefslogtreecommitdiff
path: root/jps/jps-builders/testSrc/org/jetbrains/jps/builders/rebuild/ArtifactRebuildTest.kt
diff options
context:
space:
mode:
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.kt168
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")
+ }
+ }
+ })
+ }
+}