This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git


The following commit(s) were added to refs/heads/master by this push:
     new e168f0b3f [COMPRESS-700] Assert TAR entry sizes
e168f0b3f is described below

commit e168f0b3f03f2f9c10aa2c18a7f2dd5ac1f0b8d1
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Mon Jun 2 10:16:44 2025 -0400

    [COMPRESS-700] Assert TAR entry sizes
---
 .../compress/archivers/tar/Compress700Test.java    | 158 +++++++++++----------
 1 file changed, 82 insertions(+), 76 deletions(-)

diff --git 
a/src/test/java/org/apache/commons/compress/archivers/tar/Compress700Test.java 
b/src/test/java/org/apache/commons/compress/archivers/tar/Compress700Test.java
index aa03d2722..65b3a34d7 100644
--- 
a/src/test/java/org/apache/commons/compress/archivers/tar/Compress700Test.java
+++ 
b/src/test/java/org/apache/commons/compress/archivers/tar/Compress700Test.java
@@ -36,6 +36,7 @@
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.commons.compress.archivers.ArchiveStreamFactory;
 import org.junit.jupiter.api.Test;
@@ -100,87 +101,92 @@ public void testFirstTarArchiveEntry() throws Exception {
 
     @Test
     public void testListEntries() throws IOException {
-        // @formatter:off
-        final List<String> names = Arrays.asList(
-                "build/app.dill",
-                "CHANGELOG.md",
-                "example/android/app/build.gradle",
-                "example/android/app/src/debug/AndroidManifest.xml",
-                "example/android/app/src/main/AndroidManifest.xml",
-                
"example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java",
-                
"example/android/app/src/main/kotlin/com/example/test_package/MainActivity.kt",
-                
"example/android/app/src/main/res/drawable/launch_background.xml",
-                "example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png",
-                "example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png",
-                
"example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png",
-                
"example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png",
-                
"example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png",
-                "example/android/app/src/main/res/values/styles.xml",
-                "example/android/app/src/profile/AndroidManifest.xml",
-                "example/android/build.gradle",
-                "example/android/gradle.properties",
-                "example/android/gradlew",
-                "example/android/gradlew.bat",
-                "example/android/gradle/wrapper/gradle-wrapper.jar",
-                "example/android/gradle/wrapper/gradle-wrapper.properties",
-                "example/android/local.properties",
-                "example/android/settings.gradle",
-                "example/android/test_package_android.iml",
-                "example/ios/Flutter/AppFrameworkInfo.plist",
-                "example/ios/Flutter/Debug.xcconfig",
-                "example/ios/Flutter/flutter_export_environment.sh",
-                "example/ios/Flutter/Generated.xcconfig",
-                "example/ios/Flutter/Release.xcconfig",
-                "example/ios/Runner.xcodeproj/project.pbxproj",
-                
"example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
-                
"example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme",
-                "example/ios/Runner.xcworkspace/contents.xcworkspacedata",
-                "example/ios/Runner/AppDelegate.swift",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-1024x1...@1x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-20...@1x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-20...@2x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-20...@3x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-29...@1x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-29...@2x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-29...@3x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-40...@1x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-40...@2x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-40...@3x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-60...@2x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-60...@3x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-76...@1x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-76...@2x.png",
-                
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-83.5x8...@2x.png",
-                
"example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
-                
"example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png",
-                
"example/ios/Runner/Assets.xcassets/LaunchImage.imageset/launchim...@2x.png",
-                
"example/ios/Runner/Assets.xcassets/LaunchImage.imageset/launchim...@3x.png",
-                
"example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
-                "example/ios/Runner/Base.lproj/LaunchScreen.storyboard",
-                "example/ios/Runner/Base.lproj/Main.storyboard",
-                "example/ios/Runner/GeneratedPluginRegistrant.h",
-                "example/ios/Runner/GeneratedPluginRegistrant.m",
-                "example/ios/Runner/Info.plist",
-                "example/ios/Runner/Runner-Bridging-Header.h",
-                "example/lib/main.dart",
-                "example/pubspec.yaml",
-                "example/README.md",
-                "example/test/widget_test.dart",
-                "example/test_package.iml",
-                "flutter_buttons.iml",
-                "lib/flutter_awesome_buttons.dart",
-                "LICENSE",
-                "pubspec.yaml",
-                "README.md",
-                "test/flutter_buttons_test.dart");
+        final List<Object[]> list = Arrays.asList(
+                new Object[] {0,     "build/app.dill"}, // 0
+                new Object[] {105,   "CHANGELOG.md"},
+                new Object[] {2119,  "example/android/app/build.gradle"},
+                new Object[] {339,   
"example/android/app/src/debug/AndroidManifest.xml"},
+                new Object[] {1745,  
"example/android/app/src/main/AndroidManifest.xml"},
+                new Object[] {559,   
"example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java"},
+                new Object[] {353,   
"example/android/app/src/main/kotlin/com/example/test_package/MainActivity.kt"},
+                new Object[] {446,   
"example/android/app/src/main/res/drawable/launch_background.xml"},
+                new Object[] {544,   
"example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png"},
+                new Object[] {442,   
"example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png"},
+                new Object[] {721,   
"example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png"}, // 10
+                new Object[] {1031,  
"example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png"},
+                new Object[] {1443,  
"example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png"},
+                new Object[] {369,   
"example/android/app/src/main/res/values/styles.xml"},
+                new Object[] {339,   
"example/android/app/src/profile/AndroidManifest.xml"},
+                new Object[] {613,   "example/android/build.gradle"},
+                new Object[] {32,    "example/android/gradle.properties"},
+                new Object[] {4971,  "example/android/gradlew"},
+                new Object[] {2404,  "example/android/gradlew.bat"},
+                new Object[] {53636, 
"example/android/gradle/wrapper/gradle-wrapper.jar"},
+                new Object[] {240,   
"example/android/gradle/wrapper/gradle-wrapper.properties"}, // 20
+                new Object[] {150,   "example/android/local.properties"},
+                new Object[] {499,   "example/android/settings.gradle"},
+                new Object[] {1630,  
"example/android/test_package_android.iml"},
+                new Object[] {820,   
"example/ios/Flutter/AppFrameworkInfo.plist"},
+                new Object[] {31,    "example/ios/Flutter/Debug.xcconfig"},
+                new Object[] {461,   
"example/ios/Flutter/flutter_export_environment.sh"},
+                new Object[] {380,   "example/ios/Flutter/Generated.xcconfig"},
+                new Object[] {31,    "example/ios/Flutter/Release.xcconfig"},
+                new Object[] {21606, 
"example/ios/Runner.xcodeproj/project.pbxproj"},
+                new Object[] {159,   
"example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata"}, 
// 30
+                new Object[] {3382,  
"example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme"},
+                new Object[] {159,   
"example/ios/Runner.xcworkspace/contents.xcworkspacedata"},
+                new Object[] {417,   "example/ios/Runner/AppDelegate.swift"},
+                new Object[] {2641,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json"},
+                new Object[] {10932, 
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-1024x1...@1x.png"},
+                new Object[] {564,   
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-20...@1x.png"},
+                new Object[] {1283,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-20...@2x.png"},
+                new Object[] {1588,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-20...@3x.png"},
+                new Object[] {1025,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-29...@1x.png"},
+                new Object[] {1716,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-29...@2x.png"},
+                new Object[] {1920,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-29...@3x.png"},
+                new Object[] {1283,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-40...@1x.png"},
+                new Object[] {1895,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-40...@2x.png"},
+                new Object[] {2665,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-40...@3x.png"},
+                new Object[] {2665,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-60...@2x.png"},
+                new Object[] {3831,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-60...@3x.png"},
+                new Object[] {1888,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-76...@1x.png"},
+                new Object[] {3294,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-76...@2x.png"},
+                new Object[] {3612,  
"example/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-app-83.5x8...@2x.png"},
+                new Object[] {414,   
"example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json"},
+                new Object[] {68,    
"example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png"},
+                new Object[] {68,    
"example/ios/Runner/Assets.xcassets/LaunchImage.imageset/launchim...@2x.png"},
+                new Object[] {68,    
"example/ios/Runner/Assets.xcassets/LaunchImage.imageset/launchim...@3x.png"},
+                new Object[] {340,   
"example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md"},
+                new Object[] {2414,  
"example/ios/Runner/Base.lproj/LaunchScreen.storyboard"},
+                new Object[] {1631,  
"example/ios/Runner/Base.lproj/Main.storyboard"},
+                new Object[] {310,   
"example/ios/Runner/GeneratedPluginRegistrant.h"},
+                new Object[] {204,   
"example/ios/Runner/GeneratedPluginRegistrant.m"},
+                new Object[] {1576,  "example/ios/Runner/Info.plist"},
+                new Object[] {37,    
"example/ios/Runner/Runner-Bridging-Header.h"},
+                new Object[] {8996,  "example/lib/main.dart"},
+                new Object[] {2759,  "example/pubspec.yaml"},
+                new Object[] {9879,  "example/README.md"},
+                new Object[] {1081,  "example/test/widget_test.dart"},
+                new Object[] {913,   "example/test_package.iml"},
+                new Object[] {1000,  "flutter_buttons.iml"},
+                new Object[] {36861, "lib/flutter_awesome_buttons.dart"},
+                new Object[] {30,    "LICENSE"},
+                new Object[] {1751,  "pubspec.yaml"},
+                new Object[] {9879,  "README.md"},
+                new Object[] {433,   "test/flutter_buttons_test.dart"});
         // @formatter:on
         try (TarArchiveInputStream inputStream = new TarArchiveInputStream(new 
BufferedInputStream(Files.newInputStream(PATH)))) {
-            for (final String name : names) {
+            final AtomicInteger i = new AtomicInteger();
+            for (final Object[] pair : list) {
                 final TarArchiveEntry entry = inputStream.getNextEntry();
                 assertNotNull(entry, entry.getName());
                 // System.out.println(entry);
-                assertEquals(name, entry.getName());
+                final String name = (String) pair[1];
+                assertEquals(name, entry.getName(), () -> String.format("[%d] 
%s", i.get(), entry));
+                final int size = ((Integer) pair[0]).intValue();
+                assertEquals(size, entry.getSize(), () -> String.format("[%d] 
%s", i.get(), entry));
+                assertEquals(size, entry.getRealSize(), () -> 
String.format("[%d] %s", i.get(), entry));
+                i.incrementAndGet();
             }
         }
     }

Reply via email to