package org.codehaus.plexus.components.io.attributes; import junit.framework.TestCase; import org.codehaus.plexus.util.Os; import java.io.File; import java.io.IOException; import java.nio.file.attribute.PosixFilePermission; import java.util.HashMap; import java.util.Set; /** * @author Kristian Rosenvold */ public class Java7AttributeUtilsTest extends TestCase { public void testMiscPatterns() throws Exception { final Set<PosixFilePermission> permissions = Java7AttributeUtils.getPermissions( 0124 ); assertTrue( permissions.contains( PosixFilePermission.OWNER_EXECUTE ) ); assertTrue(permissions.contains( PosixFilePermission.GROUP_WRITE )); assertTrue(permissions.contains( PosixFilePermission.OTHERS_READ )); } public void testMorePatterns() throws Exception { final Set<PosixFilePermission> permissions = Java7AttributeUtils.getPermissions( 0241 ); assertTrue(permissions.contains( PosixFilePermission.OWNER_WRITE )); assertTrue(permissions.contains( PosixFilePermission.GROUP_READ )); assertTrue(permissions.contains( PosixFilePermission.OTHERS_EXECUTE )); } public void testEvenMorePatterns() throws Exception { final Set<PosixFilePermission> permissions = Java7AttributeUtils.getPermissions( 0412 ); assertTrue(permissions.contains( PosixFilePermission.OWNER_READ )); assertTrue(permissions.contains( PosixFilePermission.GROUP_EXECUTE )); assertTrue(permissions.contains( PosixFilePermission.OTHERS_WRITE )); } public void test777() throws Exception { final Set<PosixFilePermission> permissions = Java7AttributeUtils.getPermissions( 0777 ); assertTrue( permissions.size() == 9); } public void testChmodBackAndForth() throws IOException { if ( Os.isFamily( Os.FAMILY_WINDOWS )) return; final File bxx = File.createTempFile( "bxx", "ff" ); Java7AttributeUtils.chmod( bxx, 0422 ); PlexusIoResourceAttributes firstAttrs = new Java7FileAttributes( bxx, new HashMap<Integer, String>( ), new HashMap<Integer, String>( ) ); assertTrue( firstAttrs.isOwnerReadable() ); assertFalse( firstAttrs.isOwnerWritable() ); assertFalse( firstAttrs.isOwnerExecutable() ); Java7AttributeUtils.chmod( bxx, 0777 ); PlexusIoResourceAttributes secondAttrs = new Java7FileAttributes( bxx, new HashMap<Integer, String>( ), new HashMap<Integer, String>( ) ); assertTrue( secondAttrs.isOwnerReadable() ); assertTrue( secondAttrs.isOwnerWritable() ); assertTrue( secondAttrs.isOwnerExecutable() ); } }