package org.codehaus.plexus.archiver.util; import java.io.File; import java.io.IOException; import java.util.HashMap; import org.codehaus.plexus.components.io.attributes.Java7FileAttributes; import org.codehaus.plexus.components.io.attributes.Java7Reflector; import org.codehaus.plexus.logging.console.ConsoleLogger; import junit.framework.TestCase; import org.codehaus.plexus.util.Os; public class ArchiveEntryUtilsTest extends TestCase { public void testChmodForFileWithDollarPLXCOMP164() throws Exception { if ( Os.isFamily( Os.FAMILY_WINDOWS )) return; File temp = File.createTempFile("A$A", "BB$"); ArchiveEntryUtils.chmod( temp, 0770, new ConsoleLogger( org.codehaus.plexus.logging.Logger.LEVEL_DEBUG, "foo" ), false); assert0770(temp); } public void testChmodWithJava7() throws Exception { if (!Java7Reflector.isAtLeastJava7()) return; // Require at least java7 if ( Os.isFamily( Os.FAMILY_WINDOWS )) return; File temp = File.createTempFile("D$D", "BB$"); ArchiveEntryUtils.chmod( temp, 0770, new ConsoleLogger( org.codehaus.plexus.logging.Logger.LEVEL_DEBUG, "foo" )); assert0770(temp); } private void assert0770(File temp) throws IOException { Java7FileAttributes j7 = new Java7FileAttributes(temp, new HashMap<Integer, String>(), new HashMap<Integer, String>()); assertTrue(j7.isGroupExecutable()); assertTrue(j7.isGroupReadable()); assertTrue(j7.isGroupWritable()); assertFalse(j7.isWorldExecutable()); assertFalse(j7.isWorldReadable()); assertFalse(j7.isWorldWritable()); } }