Add File.utime for updating files' mtime. Closes #28
Conflicts: lib/fakefs/file.rb test/fakefs_test.rb
This commit is contained in:
parent
b6e5d10c29
commit
d422c6a79f
@ -1,7 +1,7 @@
|
|||||||
module FakeFS
|
module FakeFS
|
||||||
class FakeFile
|
class FakeFile
|
||||||
attr_accessor :name, :parent, :content
|
attr_accessor :name, :parent, :content, :mtime
|
||||||
attr_reader :ctime, :mtime
|
attr_reader :ctime
|
||||||
|
|
||||||
class Inode
|
class Inode
|
||||||
def initialize(file_owner)
|
def initialize(file_owner)
|
||||||
|
@ -64,6 +64,18 @@ module FakeFS
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.utime(atime, mtime, *paths)
|
||||||
|
paths.each do |path|
|
||||||
|
if exists?(path)
|
||||||
|
FileSystem.find(path).mtime = mtime
|
||||||
|
else
|
||||||
|
raise Errno::ENOENT
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
paths.size
|
||||||
|
end
|
||||||
|
|
||||||
def self.size(path)
|
def self.size(path)
|
||||||
read(path).length
|
read(path).length
|
||||||
end
|
end
|
||||||
|
@ -384,6 +384,32 @@ class FakeFSTest < Test::Unit::TestCase
|
|||||||
assert_equal File.stat("foo").mtime, File.mtime("foo")
|
assert_equal File.stat("foo").mtime, File.mtime("foo")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_utime_raises_error_if_path_does_not_exist
|
||||||
|
assert_raise Errno::ENOENT do
|
||||||
|
File.utime(Time.now, Time.now, '/path/to/file.txt')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_can_call_utime_on_an_existing_file
|
||||||
|
time = Time.now - 300 # Not now
|
||||||
|
path = '/path/to/file.txt'
|
||||||
|
File.open(path, 'w') do |f|
|
||||||
|
f << ''
|
||||||
|
end
|
||||||
|
File.utime(time, time, path)
|
||||||
|
assert_equal time, File.mtime('/path/to/file.txt')
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_utime_returns_number_of_paths
|
||||||
|
path1, path2 = '/path/to/file.txt', '/path/to/another_file.txt'
|
||||||
|
[path1, path2].each do |path|
|
||||||
|
File.open(path, 'w') do |f|
|
||||||
|
f << ''
|
||||||
|
end
|
||||||
|
end
|
||||||
|
assert_equal 2, File.utime(Time.now, Time.now, path1, path2)
|
||||||
|
end
|
||||||
|
|
||||||
def test_can_read_with_File_readlines
|
def test_can_read_with_File_readlines
|
||||||
path = '/path/to/file.txt'
|
path = '/path/to/file.txt'
|
||||||
File.open(path, 'w') do |f|
|
File.open(path, 'w') do |f|
|
||||||
|
Loading…
Reference in New Issue
Block a user