fakefs 0.14.3 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/fakefs/dir.rb +8 -3
- data/lib/fakefs/fake/dir.rb +4 -1
- data/lib/fakefs/fake/file.rb +2 -27
- data/lib/fakefs/fake/inode.rb +58 -0
- data/lib/fakefs/file.rb +6 -0
- data/lib/fakefs/fileutils.rb +1 -1
- data/lib/fakefs/safe.rb +1 -0
- data/lib/fakefs/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a4da28e46b56875973439b5aaee5395293a8d0fff5e7a72f25e0dbd1ea12dee
|
4
|
+
data.tar.gz: da232cb25e279d1c932ceeb0fa52f016f6e3ce7b208b42aca72c8609e1c235b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d2d9f03153e6c42aeb5441b171ec8903b5b2b64939474dfa6f2e7f6d6bfdb59ba4147c19ed4975377633a8d3dbab25e1eed1a23a3e53f7240e9bef7a55fab87
|
7
|
+
data.tar.gz: 105499836a07529c55b9efd8a3313fe02bf42cfb52a23e6854935ef45eb7e516aeba2265c6652bc21d314c0496c03e39edd993ec209957de5d77cc9cfaf02363
|
data/lib/fakefs/dir.rb
CHANGED
@@ -13,10 +13,11 @@ module FakeFS
|
|
13
13
|
def initialize(string)
|
14
14
|
self.class._check_for_valid_file(string)
|
15
15
|
|
16
|
-
@path
|
17
|
-
@open
|
18
|
-
@pointer
|
16
|
+
@path = FileSystem.normalize_path(string)
|
17
|
+
@open = true
|
18
|
+
@pointer = 0
|
19
19
|
@contents = ['.', '..'] + FileSystem.find(@path).entries
|
20
|
+
@inode = FakeInode.new(self)
|
20
21
|
end
|
21
22
|
|
22
23
|
def close
|
@@ -218,6 +219,10 @@ module FakeFS
|
|
218
219
|
end
|
219
220
|
end
|
220
221
|
|
222
|
+
def ino
|
223
|
+
@inode.inode_num
|
224
|
+
end
|
225
|
+
|
221
226
|
# This code has been borrowed from Rubinius
|
222
227
|
def self.mktmpdir(prefix_suffix = nil, tmpdir = nil)
|
223
228
|
case prefix_suffix
|
data/lib/fakefs/fake/dir.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module FakeFS
|
2
2
|
# Fake Dir class
|
3
3
|
class FakeDir
|
4
|
-
attr_accessor :name, :parent, :mode, :uid, :gid, :mtime, :atime
|
4
|
+
attr_accessor :name, :parent, :mode, :uid, :gid, :mtime, :atime, :inode
|
5
5
|
attr_reader :ctime, :content
|
6
6
|
|
7
7
|
def initialize(name = nil, parent = nil)
|
@@ -13,6 +13,7 @@ module FakeFS
|
|
13
13
|
@mode = 0o100000 + (0o777 - File.umask)
|
14
14
|
@uid = Process.uid
|
15
15
|
@gid = Process.gid
|
16
|
+
@inode = FakeInode.new(self)
|
16
17
|
@content = ''
|
17
18
|
@entries = {}
|
18
19
|
end
|
@@ -32,6 +33,7 @@ module FakeFS
|
|
32
33
|
value.parent = clone
|
33
34
|
end
|
34
35
|
clone.parent = parent if parent
|
36
|
+
clone.inode = @inode.clone
|
35
37
|
clone
|
36
38
|
end
|
37
39
|
|
@@ -68,6 +70,7 @@ module FakeFS
|
|
68
70
|
def delete(node = self)
|
69
71
|
if node == self
|
70
72
|
parent.delete(self)
|
73
|
+
@inode.free_inode_num
|
71
74
|
else
|
72
75
|
@entries.delete(node.name)
|
73
76
|
end
|
data/lib/fakefs/fake/file.rb
CHANGED
@@ -4,36 +4,10 @@ module FakeFS
|
|
4
4
|
attr_accessor :name, :parent, :mtime, :atime, :mode, :uid, :gid
|
5
5
|
attr_reader :ctime, :birthtime
|
6
6
|
|
7
|
-
# Inode class
|
8
|
-
class Inode
|
9
|
-
def initialize(file_owner)
|
10
|
-
@content = ''.encode(Encoding.default_external)
|
11
|
-
@links = [file_owner]
|
12
|
-
end
|
13
|
-
|
14
|
-
attr_accessor :content
|
15
|
-
attr_accessor :links
|
16
|
-
|
17
|
-
def link(file)
|
18
|
-
links << file unless links.include?(file)
|
19
|
-
file.inode = self
|
20
|
-
end
|
21
|
-
|
22
|
-
def unlink(file)
|
23
|
-
links.delete(file)
|
24
|
-
end
|
25
|
-
|
26
|
-
def clone
|
27
|
-
clone = super
|
28
|
-
clone.content = content.dup
|
29
|
-
clone
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
7
|
def initialize(name = nil, parent = nil)
|
34
8
|
@name = name
|
35
9
|
@parent = parent
|
36
|
-
@inode =
|
10
|
+
@inode = FakeInode.new(self)
|
37
11
|
@ctime = Time.now
|
38
12
|
@mtime = @ctime
|
39
13
|
@atime = @ctime
|
@@ -83,6 +57,7 @@ module FakeFS
|
|
83
57
|
|
84
58
|
def delete
|
85
59
|
inode.unlink(self)
|
60
|
+
inode.free_inode_num
|
86
61
|
parent.delete(self)
|
87
62
|
end
|
88
63
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module FakeFS
|
2
|
+
# Inode class
|
3
|
+
class FakeInode
|
4
|
+
@freed_inodes = []
|
5
|
+
@next_inode_num = 0
|
6
|
+
|
7
|
+
def initialize(file_owner)
|
8
|
+
@content = ''.encode(Encoding.default_external)
|
9
|
+
@links = [file_owner]
|
10
|
+
assign_inode_num
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_accessor :content
|
14
|
+
attr_accessor :links
|
15
|
+
attr_accessor :inode_num
|
16
|
+
|
17
|
+
# please see: http://iacobson.net/beware-of-ruby-class-variables/
|
18
|
+
class << self
|
19
|
+
attr_accessor :freed_inodes
|
20
|
+
attr_accessor :next_inode_num
|
21
|
+
|
22
|
+
# This method should only be used for tests
|
23
|
+
# When called, it will reset the current inode information of the FakeFS
|
24
|
+
def clear_inode_info_for_tests
|
25
|
+
self.freed_inodes = []
|
26
|
+
self.next_inode_num = 0
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def assign_inode_num
|
31
|
+
if (@inode_num = self.class.freed_inodes.shift)
|
32
|
+
else
|
33
|
+
@inode_num = self.class.next_inode_num
|
34
|
+
self.class.next_inode_num += 1
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def free_inode_num
|
39
|
+
self.class.freed_inodes.push(@inode_num)
|
40
|
+
end
|
41
|
+
|
42
|
+
def link(file)
|
43
|
+
links << file unless links.include?(file)
|
44
|
+
file.inode = self
|
45
|
+
end
|
46
|
+
|
47
|
+
def unlink(file)
|
48
|
+
links.delete(file)
|
49
|
+
end
|
50
|
+
|
51
|
+
def clone
|
52
|
+
clone = super
|
53
|
+
clone.content = content.dup
|
54
|
+
clone.assign_inode_num
|
55
|
+
clone
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/fakefs/file.rb
CHANGED
@@ -335,6 +335,8 @@ module FakeFS
|
|
335
335
|
@mode = @fake_file.mode
|
336
336
|
@uid = @fake_file.uid
|
337
337
|
@gid = @fake_file.gid
|
338
|
+
@inode = @fake_file.inode
|
339
|
+
|
338
340
|
@birthtime =
|
339
341
|
if @fake_file.respond_to?(:birthtime)
|
340
342
|
@fake_file.birthtime
|
@@ -401,6 +403,10 @@ module FakeFS
|
|
401
403
|
size == 0
|
402
404
|
end
|
403
405
|
|
406
|
+
def ino
|
407
|
+
@inode.inode_num
|
408
|
+
end
|
409
|
+
|
404
410
|
include Comparable
|
405
411
|
|
406
412
|
def <=>(other)
|
data/lib/fakefs/fileutils.rb
CHANGED
@@ -191,8 +191,8 @@ module FakeFS
|
|
191
191
|
raise Errno::EEXIST, dest_path unless options[:force]
|
192
192
|
elsif File.directory?(File.dirname(dest_path))
|
193
193
|
FileSystem.delete(dest_path)
|
194
|
-
FileSystem.add(dest_path, target.entry.clone)
|
195
194
|
FileSystem.delete(path)
|
195
|
+
FileSystem.add(dest_path, target.entry.clone)
|
196
196
|
else
|
197
197
|
raise Errno::ENOENT, dest_path unless options[:force]
|
198
198
|
end
|
data/lib/fakefs/safe.rb
CHANGED
data/lib/fakefs/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fakefs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Wanstrath
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2018-07-
|
15
|
+
date: 2018-07-09 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: bump
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- lib/fakefs/dir.rb
|
127
127
|
- lib/fakefs/fake/dir.rb
|
128
128
|
- lib/fakefs/fake/file.rb
|
129
|
+
- lib/fakefs/fake/inode.rb
|
129
130
|
- lib/fakefs/fake/symlink.rb
|
130
131
|
- lib/fakefs/file.rb
|
131
132
|
- lib/fakefs/file_system.rb
|