anchor.diff:  			assertFalse(fileExists("#trg#invalidpath.txt"));
   		}
   		finally {
  -			if(directoryExists(trg)) directoryDelete(trg,true);
  +			if (directoryExists( trg ) ) 
  +				directoryDelete( trg, true );
  +		}
  +	}
  +
  +	public function testZipExecutableFlag() { // LDEV-2117
  +
  +		if ( isNotSupported() ) return;  // this is unix only
  +
  +		var curr = getDirectoryFromPath( getCurrentTemplatePath() );
  +		var src = curr & "zip_exe";
  +		var dest = curr & "unzip_exe";
  +
  +		systemOutput( "", true );
  +
  +		try {
  +			if ( directoryExists( src ) ) 
  +				directoryDelete( src, true );
  +			directoryCreate( src );
  +			if ( directoryExists( dest ) ) 
  +				directoryDelete( dest, true );
  +			directoryCreate( dest );
  +
  +			var testFile = src & "/test.txt";
  +			FileWrite( testFile, "why do you want to execute me?");
  +			fileSetAccessMode( testFile, "744");
  +
  +			var info = FileInfo( testFile );
  +			systemOutput( info , true);
  +			expect( info.execute ).toBeTrue();
  +
  +			systemOutput( info, true);
  +			systemOutput( directoryList( path=src ), true);
  +
  +			// create the test zip
  +			zip action="zip" file="#src#/test.zip" {
  +				zipparam source=testFile;
  +			}
  +
  +			zip action="list" file="#src#/test.zip" name="local.qry";
  +
  +			systemOutput( local.qry, true);
  +			// expect(local.qry.mode[1]).toBe(744);
  +
  +			// unzip the created zip
  +			zip action="unzip" file="#src#/test.zip" destination=dest;
  +
  +			var destFile = dest & "/test.txt";
  +			var info = FileInfo( destFile );
  +			systemOutput( info , true );
  +
  +			expect( info.execute ).toBeTrue();
  +		}
  +		finally {
  +			if ( directoryExists( src ) )
  +				directoryDelete( src, true );
  +			if ( directoryExists( dest ) )
  +				directoryDelete( dest, true );
   		}
   
  -	
   	}
   
  +	function isNotSupported() {
  +		var isWindows = find("Windows", server.os.name );
  +		if (isWindows > 0 ) return true;
  +		else return false;
  +	}
   	
   } 
   </cfscript>
  
positive.code: 		variables.currFile=getCurrentTemplatePath();
  		variables.currDir=getDirectoryFromPath(currFile);
  
  		variables.root=currDir&"zip/";
  		variables.dir=root&"a/b/c/";
  		variables.file1=dir&"a.txt"
  		variables.dir1=root&"a/";
  		variables.file2=root&"a/b.txt";
  		variables.target=root&"test.zip";
  		variables.targetStored=root&"testStored.zip";
  		variables.unzip=root&"unzip";
  
  		if(directoryExists(root)) directoryDelete(root,true);
  
  		directoryCreate(dir);
  		directoryCreate(unzip);
  		fileWrite(file1,"file 1");
  		fileWrite(file2,"file 2");
  	}
  
  	public function test() {
  
negative.code: 
  		}
  		finally {
  			if ( directoryExists( root ) ) 
  				directoryDelete( root , true );
  			systemOutput( directoryList( path=root ), true);
  		}
  	}
  	
  	public function testInvalidEntryName() {
  		var curr = getDirectoryFromPath( getCurrentTemplatePath() );
  		var trg=curr & "zip/"
  		trg2 = trg & "sub/sub/";
  		if ( directoryExists( trg ) ) 
  			directoryDelete( trg, true );
  		directoryCreate( trg );
  		directoryCreate( trg2 );
  
  		try{
  			// create the test zip
  