From 112af2e5c353fa61d587f15f6bc345bb640d2095 Mon Sep 17 00:00:00 2001 From: Emmanuel Bourg <ebourg@apache.org> Date: Wed, 11 Jan 2023 10:03:03 +0100 Subject: [PATCH] New upstream version 4.6.1 --- pom.xml | 12 ++++++------ .../plexus/archiver/AbstractUnArchiver.java | 7 +++++-- .../plexus/archiver/AbstractUnArchiverTest.java | 17 +++++++++++++++++ 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index d5cd352..9f4e3da 100644 --- a/pom.xml +++ b/pom.xml @@ -10,14 +10,14 @@ </parent> <artifactId>plexus-archiver</artifactId> - <version>4.6.0</version> + <version>4.6.1</version> <name>Plexus Archiver Component</name> <scm> - <connection>scm:git:git@github.com:codehaus-plexus/plexus-archiver.git</connection> - <developerConnection>scm:git:git@github.com:codehaus-plexus/plexus-archiver.git</developerConnection> + <connection>scm:git:https://github.com/codehaus-plexus/plexus-archiver.git</connection> + <developerConnection>scm:git:https://github.com/codehaus-plexus/plexus-archiver.git</developerConnection> <url>http://github.com/codehaus-plexus/plexus-archiver/tree/${project.scm.tag}/</url> - <tag>plexus-archiver-4.6.0</tag> + <tag>plexus-archiver-4.6.1</tag> </scm> <issueManagement> <system>jira</system> @@ -35,7 +35,7 @@ <sisuVersion>0.3.5</sisuVersion> <slf4jVersion>1.7.36</slf4jVersion> <junitVersion>5.9.1</junitVersion> - <project.build.outputTimestamp>2022-11-11T11:11:21Z</project.build.outputTimestamp> + <project.build.outputTimestamp>2023-01-01T12:40:08Z</project.build.outputTimestamp> </properties> <contributors> @@ -78,7 +78,7 @@ <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> - <version>1.21</version> + <version>1.22</version> </dependency> <!-- Other dependencies --> <dependency> diff --git a/src/main/java/org/codehaus/plexus/archiver/AbstractUnArchiver.java b/src/main/java/org/codehaus/plexus/archiver/AbstractUnArchiver.java index 2fa2072..af58daf 100644 --- a/src/main/java/org/codehaus/plexus/archiver/AbstractUnArchiver.java +++ b/src/main/java/org/codehaus/plexus/archiver/AbstractUnArchiver.java @@ -426,7 +426,7 @@ protected boolean shouldExtractEntry( File targetDirectory, File targetFileName, "" ) + suffix; boolean fileOnDiskIsOlderThanEntry = targetFileName.lastModified() < entryDate.getTime(); - boolean differentCasing = !entryName.equals( relativeCanonicalDestPath ); + boolean differentCasing = !normalizedFileSeparator( entryName ).equals( normalizedFileSeparator( relativeCanonicalDestPath ) ); // Warn for case (4) and (5) if the file system is case-insensitive if ( differentCasing ) @@ -440,5 +440,8 @@ protected boolean shouldExtractEntry( File targetDirectory, File targetFileName, // Override the existing file if isOverwrite() is true or if the file on disk is older than the one in the archive return isOverwrite() || fileOnDiskIsOlderThanEntry; } - + + private String normalizedFileSeparator(String pathOrEntry) { + return pathOrEntry.replace("/", File.separator); + } } diff --git a/src/test/java/org/codehaus/plexus/archiver/AbstractUnArchiverTest.java b/src/test/java/org/codehaus/plexus/archiver/AbstractUnArchiverTest.java index b5bfef2..3e44088 100644 --- a/src/test/java/org/codehaus/plexus/archiver/AbstractUnArchiverTest.java +++ b/src/test/java/org/codehaus/plexus/archiver/AbstractUnArchiverTest.java @@ -182,4 +182,21 @@ public void shouldNotWarnAboutDifferentCasingForDirectoryEntries( @TempDir File assertTrue( this.abstractUnArchiver.shouldExtractEntry( temporaryFolder, file, entryname, entryDate ) ); assertEquals( 0, this.abstractUnArchiver.casingMessageEmitted.get() ); } + + @Test + public void shouldExtractWhenCasingDifferOnlyInEntryNamePath( @TempDir File temporaryFolder) + throws IOException + { + // given + String entryName = "directory/whatever.txt"; + File file = new File( temporaryFolder, entryName ); // does not create the file! + file.mkdirs(); + file.createNewFile(); + Date entryDate = new Date(System.currentTimeMillis() + 5000); + + // when & then + abstractUnArchiver.setOverwrite( true ); + assertTrue( abstractUnArchiver.shouldExtractEntry( temporaryFolder, file, entryName, entryDate ) ); + assertEquals(0, abstractUnArchiver.casingMessageEmitted.get()); + } } -- GitLab