2013-08-23 59 views
2

我編寫了一個模塊,用於檢查目錄是否可寫或可讀。 但是,我該如何測試它?如何編寫測試以測試文件夾是否可讀/可寫

通常,在編寫模塊時,您可以編寫一些測試來測試模塊的功能。我如何創建一個目錄,這個目錄不能被實際創建模塊的測試寫入?

我想是這樣的:

use strict; 
use warnings; 
use File::Temp qw/ tempdir /; 

use Test::More tests => 5; 
BEGIN { use_ok('My::DirCheck') }; 

my $readable_dir = tempdir(); 
my $check = My::DirCheck->new(directory => $readable_dir); 

is($check->is_readable(), 1, 'temp dir is readable'); 

# FIXME: how to make it not readale? 
isnt($check->is_readable(), 1, 'temp dir is not readable'); 


my $writable_dir = tempdir(); 

is($check->is_writeable(), 1, 'temp dir is writeable'); 

# FIXME: how to make it not writable? 
isnt($check->is_writeable(), 1, 'temp dir is not writeable'); 

但我怎麼創建一個目錄,使其e.g只讀並獲得事後擺脫它?

+0

'的perldoc -f chmod'和'的perldoc perlport' –

回答

1

相反的File::Temp,儘量使用File::Path,它可以讓你選擇一個模式參數即能設置你的directories's permissions。對於不具有讀取,寫入和執行權限的目錄,將模式設置爲0000

假設它來自Perl核心,它應該可以在大多數操作系統上移植。

+0

嗯,我試過,但它似乎沒有工作: # - 創建一個不能讀取的目錄 我($ non_readable_dir)= make_path ($ readable_dir。'/ not-readable',{ \t mode => 0000, }); diag(「不可讀的測試目錄:$ non_readable_dir」); diag(「readable?」。(-r $ non_readable_dir)); my $ check2 = My :: DirCheck-> new(directory => $ non_readable_dir); 是($ check2-> is_readable(),0,'dir不可讀'); – capfan

相關問題