@@ -477,6 +477,34 @@ public void testBinPermissions() throws Exception {
477477 }
478478 }
479479
480+ public void testPlatformBinPermissions () throws Exception {
481+ assumeTrue ("posix filesystem" , isPosix );
482+ Tuple <Path , Environment > env = createEnv (fs , temp );
483+ Path pluginDir = createPluginDir (temp );
484+ Path platformDir = pluginDir .resolve ("platform" );
485+ Path platformNameDir = platformDir .resolve ("linux-x86_64" );
486+ Path platformBinDir = platformNameDir .resolve ("bin" );
487+ Files .createDirectories (platformBinDir );
488+ Path programFile = Files .createFile (platformBinDir .resolve ("someprogram" ));
489+ // a file created with Files.createFile() should not have execute permissions
490+ Set <PosixFilePermission > sourcePerms = Files .getPosixFilePermissions (programFile );
491+ assertFalse (sourcePerms .contains (PosixFilePermission .OWNER_EXECUTE ));
492+ assertFalse (sourcePerms .contains (PosixFilePermission .GROUP_EXECUTE ));
493+ assertFalse (sourcePerms .contains (PosixFilePermission .OTHERS_EXECUTE ));
494+ String pluginZip = createPlugin ("fake" , pluginDir );
495+ installPlugin (pluginZip , env .v1 ());
496+ assertPlugin ("fake" , pluginDir , env .v2 ());
497+ // check that the installed program has execute permissions, even though the one added to the plugin didn't
498+ Path installedPlatformBinDir = env .v2 ().pluginsFile ().resolve ("fake" ).resolve ("platform" ).resolve ("linux-x86_64" ).resolve ("bin" );
499+ assertTrue (Files .isDirectory (installedPlatformBinDir ));
500+ Path installedProgramFile = installedPlatformBinDir .resolve ("someprogram" );
501+ assertTrue (Files .isRegularFile (installedProgramFile ));
502+ Set <PosixFilePermission > installedPerms = Files .getPosixFilePermissions (installedProgramFile );
503+ assertTrue (installedPerms .contains (PosixFilePermission .OWNER_EXECUTE ));
504+ assertTrue (installedPerms .contains (PosixFilePermission .GROUP_EXECUTE ));
505+ assertTrue (installedPerms .contains (PosixFilePermission .OTHERS_EXECUTE ));
506+ }
507+
480508 public void testConfig () throws Exception {
481509 Tuple <Path , Environment > env = createEnv (fs , temp );
482510 Path pluginDir = createPluginDir (temp );
0 commit comments