Replace unzip dependency in ConlluConversionTest with native Kotlin

Change-Id: Icb6dfc1710dc9189d624aecc6c2a719687f79d74
diff --git a/app/src/test/kotlin/de/ids_mannheim/korapxmltools/ConlluConversionTest.kt b/app/src/test/kotlin/de/ids_mannheim/korapxmltools/ConlluConversionTest.kt
index abe725a..c623d6b 100644
--- a/app/src/test/kotlin/de/ids_mannheim/korapxmltools/ConlluConversionTest.kt
+++ b/app/src/test/kotlin/de/ids_mannheim/korapxmltools/ConlluConversionTest.kt
@@ -1,11 +1,13 @@
 package de.ids_mannheim.korapxmltools
 
+import org.apache.commons.compress.archivers.zip.ZipFile
 import org.junit.After
 import org.junit.Before
 import java.io.ByteArrayOutputStream
 import java.io.File
 import java.io.PrintStream
 import java.net.URL
+import java.nio.charset.StandardCharsets
 import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFalse
@@ -220,7 +222,8 @@
                 System.setIn(originalIn)
                 inputStream.close()
             }
-        } finally {
+        }
+        finally {
             outputDir.deleteRecursively()
         }
     }
@@ -365,26 +368,17 @@
     }
 
     private fun extractZipFileList(zipFile: File): List<String> {
-        val process = ProcessBuilder("unzip", "-l", zipFile.path)
-            .redirectOutput(ProcessBuilder.Redirect.PIPE)
-            .start()
-        val output = process.inputStream.bufferedReader().use { it.readText() }
-        process.waitFor()
-        return output.lines()
+        return ZipFile.builder().setFile(zipFile).get().use { zip ->
+            zip.entries.asSequence().map { it.name }.toList()
+        }
     }
 
     private fun extractFileFromZip(zipFile: File, filePath: String): String {
-        val process = ProcessBuilder("unzip", "-p", zipFile.path, filePath)
-            .redirectOutput(ProcessBuilder.Redirect.PIPE)
-            .redirectError(ProcessBuilder.Redirect.PIPE)
-            .start()
-        val content = process.inputStream.bufferedReader().use { it.readText() }
-        val exitCode = process.waitFor()
-        if (exitCode != 0) {
-            val error = process.errorStream.bufferedReader().use { it.readText() }
-            throw RuntimeException("Failed to extract $filePath from $zipFile: $error")
+        return ZipFile.builder().setFile(zipFile).get().use { zip ->
+            val entry = zip.getEntry(filePath)
+                ?: throw RuntimeException("Failed to find entry $filePath in $zipFile")
+            zip.getInputStream(entry).bufferedReader(StandardCharsets.UTF_8).use { it.readText() }
         }
-        return content
     }
 
     @Test
@@ -422,4 +416,4 @@
             "Filename should match pattern '*/spacy/morpho.xml', but was: $filenameLine"
         )
     }
-}
+}
\ No newline at end of file