fakefs 1.5.0 → 1.7.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/README.md +17 -0
- data/lib/fakefs/base.rb +10 -1
- data/lib/fakefs/file.rb +7 -11
- data/lib/fakefs/io.rb +20 -0
- 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: ce09ec8d126543da5199d5a49c32ac6e7122895c2a07985a0216a9b45105f6bc
|
4
|
+
data.tar.gz: 0bbcbe864737bc302f7c8f079f448f8f3a89128fb5bcdcd35c42c062b8d7c2aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22575e664d52f74dc4c14d84d8981c751d33a43e94b52891e51e9b1cc5000838f25fd8f8709de48908f4d01ad489c51d4aa0865fc6b1c82b77c63e0814d93d01
|
7
|
+
data.tar.gz: e570516fa4e06a352b1b90bf643331b296f60684920a51a65a897913fa7c1a91a2a2ea092bcb363d8727442281851fa3f3fe497d09100bbf5e1b2f4bbe3e8274
|
data/README.md
CHANGED
@@ -71,6 +71,23 @@ FakeFS do
|
|
71
71
|
end
|
72
72
|
```
|
73
73
|
|
74
|
+
Mocking IO methods
|
75
|
+
------------------
|
76
|
+
|
77
|
+
The IO class is the very basis for all Input and Output in Ruby, not only simple File reading/writting operations.
|
78
|
+
To avoid breaking critical components, the fakefs gem is not mocking IO methods by default.
|
79
|
+
|
80
|
+
However you can enable some very simple mocks using an explicit optin keyword:
|
81
|
+
|
82
|
+
``` ruby
|
83
|
+
|
84
|
+
require 'fakefs/safe'
|
85
|
+
|
86
|
+
FakeFS.activate!(io_mocks: true)
|
87
|
+
# your code
|
88
|
+
FakeFS.deactivate!
|
89
|
+
```
|
90
|
+
|
74
91
|
Rails
|
75
92
|
-----
|
76
93
|
|
data/lib/fakefs/base.rb
CHANGED
@@ -2,6 +2,7 @@ RealFile = File
|
|
2
2
|
RealFileTest = FileTest
|
3
3
|
RealFileUtils = FileUtils
|
4
4
|
RealDir = Dir
|
5
|
+
RealIO = IO
|
5
6
|
RealPathname = Pathname
|
6
7
|
|
7
8
|
def RealPathname(*args)
|
@@ -20,7 +21,7 @@ module FakeFS
|
|
20
21
|
end
|
21
22
|
|
22
23
|
# unconditionally activate
|
23
|
-
def activate!
|
24
|
+
def activate!(io_mocks: false)
|
24
25
|
Object.class_eval do
|
25
26
|
remove_const(:Dir)
|
26
27
|
remove_const(:File)
|
@@ -33,6 +34,12 @@ module FakeFS
|
|
33
34
|
const_set(:FileUtils, FakeFS::FileUtils)
|
34
35
|
const_set(:FileTest, FakeFS::FileTest)
|
35
36
|
const_set(:Pathname, FakeFS::Pathname)
|
37
|
+
|
38
|
+
if io_mocks
|
39
|
+
remove_const(:IO)
|
40
|
+
const_set(:IO, ::FakeFS::IO)
|
41
|
+
end
|
42
|
+
|
36
43
|
::FakeFS::Kernel.hijack!
|
37
44
|
end
|
38
45
|
|
@@ -48,12 +55,14 @@ module FakeFS
|
|
48
55
|
remove_const(:File)
|
49
56
|
remove_const(:FileTest)
|
50
57
|
remove_const(:FileUtils)
|
58
|
+
remove_const(:IO)
|
51
59
|
remove_const(:Pathname)
|
52
60
|
|
53
61
|
const_set(:Dir, RealDir)
|
54
62
|
const_set(:File, RealFile)
|
55
63
|
const_set(:FileTest, RealFileTest)
|
56
64
|
const_set(:FileUtils, RealFileUtils)
|
65
|
+
const_set(:IO, RealIO)
|
57
66
|
const_set(:Pathname, RealPathname)
|
58
67
|
::FakeFS::Kernel.unhijack!
|
59
68
|
end
|
data/lib/fakefs/file.rb
CHANGED
@@ -174,8 +174,8 @@ module FakeFS
|
|
174
174
|
RealFile.basename(*args)
|
175
175
|
end
|
176
176
|
|
177
|
-
def self.dirname(
|
178
|
-
RealFile.dirname(
|
177
|
+
def self.dirname(*args)
|
178
|
+
RealFile.dirname(*args)
|
179
179
|
end
|
180
180
|
|
181
181
|
def self.readlink(path)
|
@@ -624,7 +624,10 @@ module FakeFS
|
|
624
624
|
end
|
625
625
|
|
626
626
|
def binmode?
|
627
|
-
|
627
|
+
@mode.is_a?(String) && (
|
628
|
+
@mode.include?('b') ||
|
629
|
+
@mode.include?('binary')
|
630
|
+
) && !@mode.include?('bom')
|
628
631
|
end
|
629
632
|
|
630
633
|
def close_on_exec=(_bool)
|
@@ -702,7 +705,7 @@ module FakeFS
|
|
702
705
|
|
703
706
|
def read(length = nil, buf = '')
|
704
707
|
read_buf = super(length, buf)
|
705
|
-
if
|
708
|
+
if binmode?
|
706
709
|
read_buf&.force_encoding('ASCII-8BIT')
|
707
710
|
else
|
708
711
|
read_buf&.force_encoding(Encoding.default_external)
|
@@ -869,13 +872,6 @@ module FakeFS
|
|
869
872
|
StringIO.new('', @mode)
|
870
873
|
end
|
871
874
|
|
872
|
-
def binary_mode?
|
873
|
-
@mode.is_a?(String) && (
|
874
|
-
@mode.include?('b') ||
|
875
|
-
@mode.include?('binary')
|
876
|
-
) && !@mode.include?('bom')
|
877
|
-
end
|
878
|
-
|
879
875
|
def check_file_existence!
|
880
876
|
raise Errno::ENOENT, @path.to_s unless @file
|
881
877
|
end
|
data/lib/fakefs/io.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module FakeFS
|
2
|
+
# FakeFS IO class inherit root IO
|
3
|
+
# Only minimal mocks are provided as IO may be used by ruby's internals
|
4
|
+
class IO < ::IO
|
5
|
+
# Redirects ::IO.binread to ::FakeFS::File.read
|
6
|
+
def self.binread(*args, **keywords)
|
7
|
+
::FakeFS::File.read(*args, **keywords)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Redirects ::IO.read to ::FakeFS::File.read
|
11
|
+
def self.read(*args, **keywords)
|
12
|
+
::FakeFS::File.read(*args, **keywords)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Redirects ::IO.write to ::FakeFS::File.write
|
16
|
+
def self.write(*args, **keywords)
|
17
|
+
::FakeFS::File.write(*args, **keywords)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
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: 1.
|
4
|
+
version: 1.7.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: 2022-
|
15
|
+
date: 2022-06-19 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: bump
|
@@ -105,6 +105,7 @@ files:
|
|
105
105
|
- lib/fakefs/file_test.rb
|
106
106
|
- lib/fakefs/fileutils.rb
|
107
107
|
- lib/fakefs/globber.rb
|
108
|
+
- lib/fakefs/io.rb
|
108
109
|
- lib/fakefs/kernel.rb
|
109
110
|
- lib/fakefs/pathname.rb
|
110
111
|
- lib/fakefs/safe.rb
|