blob: 2f85513863fbfdf938d849beb5b89725d59b5c65 [file] [log] [blame]
package com.intellij.platform.templates.github;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.testFramework.PlatformTestUtil;
import com.intellij.util.io.TestFileSystemBuilder;
import junit.framework.Assert;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.ZipInputStream;
import static com.intellij.util.io.TestFileSystemBuilder.fs;
/**
* @author Sergey Simonchik
*/
public class ZipUtilTest {
@Test
public void testSimpleUnzip() throws Exception {
File tempDir = FileUtil.createTempDirectory("unzip-test-", null);
File simpleZipFile = new File(getZipParentDir(), "simple.zip");
ZipInputStream stream = new ZipInputStream(new FileInputStream(simpleZipFile));
try {
ZipUtil.unzip(null, tempDir, stream, null, null, true);
checkFileStructure(tempDir,
fs()
.file("a.txt")
.dir("dir").file("b.txt"));
}
finally {
stream.close();
}
}
@Test
public void testSingleRootDirUnzip() throws Exception {
File tempDir = FileUtil.createTempDirectory("unzip-test-", null);
File simpleZipFile = new File(getZipParentDir(), "single-root-dir-archive.zip");
ZipInputStream stream = new ZipInputStream(new FileInputStream(simpleZipFile));
try {
ZipUtil.unzip(null, tempDir, stream, null, null, true);
checkFileStructure(tempDir,
fs()
.file("a.txt")
.dir("dir").file("b.txt"));
}
finally {
stream.close();
}
}
@Test
public void testSimpleUnzipUsingFile() throws Exception {
File tempDir = FileUtil.createTempDirectory("unzip-test-", null);
File simpleZipFile = new File(getZipParentDir(), "simple.zip");
ZipUtil.unzip(null, tempDir, simpleZipFile, null, null, true);
checkFileStructure(tempDir,
fs()
.file("a.txt")
.dir("dir").file("b.txt"));
}
@Test
public void testSingleRootDirUnzipUsingFile() throws Exception {
File tempDir = FileUtil.createTempDirectory("unzip-test-", null);
File simpleZipFile = new File(getZipParentDir(), "single-root-dir-archive.zip");
ZipUtil.unzip(null, tempDir, simpleZipFile, null, null, true);
checkFileStructure(tempDir,
fs()
.file("a.txt")
.dir("dir").file("b.txt"));
}
@Test
public void testExpectedFailureOnBrokenZipArchive() throws Exception {
File tempDir = FileUtil.createTempDirectory("unzip-test-", null);
File file = new File(getZipParentDir(), "invalid-archive.zip");
try {
ZipUtil.unzip(null, tempDir, file, null, null, true);
Assert.fail("Zip archive is broken, but it was unzipped without exceptions.");
}
catch (IOException e) {
// expected exception
}
}
private static void checkFileStructure(@NotNull File parentDir, @NotNull TestFileSystemBuilder expected) {
expected.build().assertDirectoryEqual(parentDir);
}
@NotNull
private static File getZipParentDir() {
File communityDir = new File(PlatformTestUtil.getCommunityPath().replace(File.separatorChar, '/'));
return new File(communityDir, "platform/lang-impl/testData/platform/templates/github");
}
}