Start File::Stat. Add Stat#symlink?, stat#directory?

This commit is contained in:
Scott Taylor 2009-09-30 01:23:26 -04:00
parent cb9de5938f
commit 34a88c4e63
3 changed files with 81 additions and 0 deletions

View File

@ -123,6 +123,28 @@ module FakeFS
0 0
end end
def self.stat(file)
File::Stat.new(file)
end
class Stat
def initialize(file)
if !File.exists?(file)
raise(Errno::ENOENT, "No such file or directory - #{file}")
end
@file = file
end
def symlink?
File.symlink?(@file)
end
def directory?
File.directory?(@file)
end
end
attr_reader :path attr_reader :path
def initialize(path, mode = READ_ONLY, perm = nil) def initialize(path, mode = READ_ONLY, perm = nil)

View File

@ -949,6 +949,11 @@ class FakeFSTest < Test::Unit::TestCase
assert_equal "some content", File.read("/bar") assert_equal "some content", File.read("/bar")
end end
def test_file_stat_returns_file_stat_object
FileUtils.touch("/foo")
assert_equal File::Stat, File.stat("/foo").class
end
def here(fname) def here(fname)
RealFile.expand_path(RealFile.dirname(__FILE__)+'/'+fname) RealFile.expand_path(RealFile.dirname(__FILE__)+'/'+fname)
end end

54
test/file/stat_test.rb Normal file
View File

@ -0,0 +1,54 @@
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
require 'fakefs/safe'
require 'test/unit'
class FileStatTest < Test::Unit::TestCase
include FakeFS
def setup
FileSystem.clear
end
def touch(*args)
FileUtils.touch(*args)
end
def ln_s(*args)
FileUtils.ln_s(*args)
end
def mkdir(*args)
Dir.mkdir(*args)
end
def test_file_stat_init_with_non_existant_file
assert_raises(Errno::ENOENT) do
File::Stat.new("/foo")
end
end
def test_symlink_should_be_true_when_symlink
touch("/foo")
ln_s("/foo", "/bar")
assert File::Stat.new("/bar").symlink?
end
def test_symlink_should_be_false_when_not_a_symlink
FileUtils.touch("/foo")
assert !File::Stat.new("/foo").symlink?
end
def test_should_return_false_for_directory_when_not_a_directory
FileUtils.touch("/foo")
assert !File::Stat.new("/foo").directory?
end
def test_should_return_true_for_directory_when_a_directory
mkdir "/foo"
assert File::Stat.new("/foo").directory?
end
end