diff -r 92690b23b317 -r cdf3ca65d677 t/001-root.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/t/001-root.t Sun Aug 07 11:07:35 2011 +0200 @@ -0,0 +1,65 @@ +use strict; +use warnings; +use Test::More; +use English qw(-no_match_vars); +use File::Temp; +use File::Basename; +use File::Find; +use Cwd qw(abs_path); +use POSIX qw(SEEK_END); +use Digest::MD5; + +plan skip_all => "Need root permissions to perform these tests.\n" + . "\t try: sudo ./Build test verbose=1 test-files=$0" + if not $EUID == 0; + +my $dir = File::Temp->newdir(TEMPLATE => "blockfuse.XXXXXX"); + +END { system("umount $dir 2>/dev/null") if $dir }; +system("blib/script/blockfuse $dir"); +is($?, 0, "mounted"); + +my %size; +find(sub { + (my $name = $File::Find::name) =~ s/^\/dev//; + if (-d) { + ok(-d "$dir/$name", "dir $name"); + } + elsif (-b) { + ok(-f "$dir/$name", "block->file $name"); + if (open(my $block, $_)) { + seek($block, 0, SEEK_END); + my $size = tell($block); + close($block); + is($size, -s "$dir/$name", "size $name"); + $size{$name} = $size; + } + } + elsif (-l and (-b abs_path $_ or -d abs_path $_)) { + ok(-l "$dir/$name", "link $name"); + } +}, "/dev"); + +# now md5sum test for the smallest device +my $smallest = (sort { $size{$a} <=> $size{$b} } grep {$size{$_}} keys %size)[0]; + + +my %digest = ( + dev => Digest::MD5->new(), + file => Digest::MD5->new(), +); + +{ + local $/ = \4096; + open(my $dev, "/dev/$smallest") or die "/dev/$smallest: $!"; + $digest{dev}->add($_) while defined($_ = <$dev>); + + open(my $file, "$dir/$smallest") or die "$dir/$smallest: $!"; + $digest{file}->add($_) while defined($_ = <$file>); +} + +is($digest{file}->hexdigest(), $digest{dev}->hexdigest(), "digests are equal"); + + + +done_testing();