From fd1f330166cf6196a3407a6d980b8422092d2d88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B3=E5=8A=AD=E6=98=8E?= <42922512+shenshaoming@users.noreply.github.com> Date: Wed, 20 Oct 2021 10:43:51 +0800 Subject: [PATCH] add test --- .../java/cn/hutool/core/util/ZipUtilTest.java | 47 ++++++++++++++++++ .../src/test/resources/test-zip/addFile.txt | 2 + .../test/resources/test-zip/test-add/test.txt | 0 .../src/test/resources/test-zip/test.zip | Bin 0 -> 150 bytes 4 files changed, 49 insertions(+) create mode 100644 hutool-core/src/test/resources/test-zip/addFile.txt create mode 100644 hutool-core/src/test/resources/test-zip/test-add/test.txt create mode 100644 hutool-core/src/test/resources/test-zip/test.zip diff --git a/hutool-core/src/test/java/cn/hutool/core/util/ZipUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/ZipUtilTest.java index 0246f6688..acd389ab1 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/ZipUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/ZipUtilTest.java @@ -1,5 +1,6 @@ package cn.hutool.core.util; +import cn.hutool.core.compress.ZipReader; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.lang.Console; @@ -12,6 +13,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; /** * {@link ZipUtil}单元测试 @@ -20,6 +23,50 @@ import java.nio.charset.Charset; */ public class ZipUtilTest { + @Test + public void addFileTest() throws IOException { + File appendFile = FileUtil.file("test-zip/addFile.txt"); + File zipFile = FileUtil.file("test-zip/test.zip"); + + // 用于测试完成后将被测试文件恢复 + File tempZipFile = FileUtil.createTempFile(FileUtil.file("test-zip")); + tempZipFile.deleteOnExit(); + FileUtil.copy(zipFile, tempZipFile, true); + + // test file add + List beforeNames = zipEntryNames(zipFile); + ZipUtil.addFile(zipFile.getAbsolutePath(), appendFile.getAbsolutePath()); + List afterNames = zipEntryNames(zipFile); + Assert.assertTrue(afterNames.containsAll(beforeNames)); + Assert.assertTrue(afterNames.contains(appendFile.getName())); + + // test dir add + beforeNames = afterNames; + File addDirFile = FileUtil.file("test-zip/test-add"); + ZipUtil.addFile(zipFile.getAbsolutePath(), addDirFile.getAbsolutePath()); + afterNames = zipEntryNames(zipFile); + + Assert.assertTrue(afterNames.containsAll(beforeNames)); + Assert.assertTrue(afterNames.contains(appendFile.getName())); + + // rollback + FileUtil.copy(tempZipFile, zipFile, true); + Assert.assertTrue(String.format("delete temp file %s failed", tempZipFile.getCanonicalPath()), tempZipFile.delete()); + } + + /** + * 获取zip文件中所有一级文件/文件夹的name + * + * @param zipFile 待测试的zip文件 + * @return zip文件中一级目录下的所有文件/文件夹名 + */ + private List zipEntryNames(File zipFile) { + List fileNames = new ArrayList<>(); + ZipReader reader = ZipReader.of(zipFile, CharsetUtil.CHARSET_UTF_8); + reader.read(zipEntry -> fileNames.add(zipEntry.getName())); + reader.close(); + return fileNames; + } @Test @Ignore diff --git a/hutool-core/src/test/resources/test-zip/addFile.txt b/hutool-core/src/test/resources/test-zip/addFile.txt new file mode 100644 index 000000000..8d1c2fee6 --- /dev/null +++ b/hutool-core/src/test/resources/test-zip/addFile.txt @@ -0,0 +1,2 @@ +this file will be used to add into the test.zip +before the add action, the test.zip won't have this file. diff --git a/hutool-core/src/test/resources/test-zip/test-add/test.txt b/hutool-core/src/test/resources/test-zip/test-add/test.txt new file mode 100644 index 000000000..e69de29bb diff --git a/hutool-core/src/test/resources/test-zip/test.zip b/hutool-core/src/test/resources/test-zip/test.zip new file mode 100644 index 0000000000000000000000000000000000000000..86126d555dc839601f5165c532e08c4260fa115b GIT binary patch literal 150 zcmWIWW@h1H0D(~dkYF$aN^k(_lGNf7y^@NO0B=Sndj?$URG>N(pfpSu7Xw6ukwJo? dw0#d_*wO2Z=yZTLD;r1~BM?RbX*Cds0RRL47l{A> literal 0 HcmV?d00001