From 408050ffdec86dd05a753f97d2292a2d996871a0 Mon Sep 17 00:00:00 2001 From: Peter Retzlaff Date: Tue, 21 Apr 2020 10:37:54 +0200 Subject: [PATCH] Add tests to ensure empty, uncompressed files are put on the doNotCompress list. Also, fix a bug where ext would retain its value from a previous iteration of the loop, since we don't always overwrite it now. --- .../apktool-lib/src/main/java/brut/androlib/Androlib.java | 2 +- .../test/java/brut/androlib/aapt1/BuildAndDecodeTest.java | 6 ++++++ .../test/java/brut/androlib/aapt2/BuildAndDecodeTest.java | 8 +++++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java index 8585c0c8..0985df8c 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java @@ -163,10 +163,10 @@ public class Androlib { try { Directory unk = apkFile.getDirectory(); Set files = unk.getFiles(true); - String ext = ""; for (String file : files) { if (isAPKFileNames(file) && unk.getCompressionLevel(file) == 0) { + String ext = ""; if (unk.getSize(file) != 0) { ext = FilenameUtils.getExtension(file); } diff --git a/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt1/BuildAndDecodeTest.java b/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt1/BuildAndDecodeTest.java index 540b2db4..40e83adc 100644 --- a/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt1/BuildAndDecodeTest.java +++ b/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt1/BuildAndDecodeTest.java @@ -501,6 +501,12 @@ public class BuildAndDecodeTest extends BaseTest { } } + @Test + public void confirmZeroByteFileIsStored() throws BrutException { + MetaInfo metaInfo = new Androlib().readMetaFile(sTestNewDir); + assertTrue(metaInfo.doNotCompress.contains("assets/0byte_file.jpg")); + } + @Test public void drawableXxhdpiTest() throws BrutException, IOException { compareResFolder("drawable-xxhdpi"); diff --git a/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt2/BuildAndDecodeTest.java b/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt2/BuildAndDecodeTest.java index c2afaced..2daa0fa6 100644 --- a/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt2/BuildAndDecodeTest.java +++ b/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt2/BuildAndDecodeTest.java @@ -82,7 +82,13 @@ public class BuildAndDecodeTest extends BaseTest { @Test public void confirmZeroByteFileExtensionIsNotStored() throws BrutException { MetaInfo metaInfo = new Androlib().readMetaFile(sTestNewDir); - assertNull(metaInfo.doNotCompress); + assertFalse(metaInfo.doNotCompress.contains("jpg")); + } + + @Test + public void confirmZeroByteFileIsStored() throws BrutException { + MetaInfo metaInfo = new Androlib().readMetaFile(sTestNewDir); + assertTrue(metaInfo.doNotCompress.contains("assets/0byte_file.jpg")); } @Test