memfs 1.0.0 → 2.0.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 +5 -5
- data/.github/dependabot.yml +19 -0
- data/.github/workflows/ci.yml +64 -0
- data/.rspec +1 -1
- data/.rubocop.yml +98 -0
- data/CHANGELOG.md +30 -10
- data/Gemfile +19 -0
- data/Guardfile +5 -3
- data/README.md +3 -3
- data/Rakefile +4 -2
- data/bin/_guard-core +16 -0
- data/bin/coverage_summary +51 -0
- data/bin/guard +16 -0
- data/bin/rake +16 -0
- data/bin/rspec +16 -0
- data/bin/rubocop +16 -0
- data/lib/memfs/dir.rb +82 -17
- data/lib/memfs/fake/directory.rb +31 -6
- data/lib/memfs/fake/entry.rb +41 -25
- data/lib/memfs/fake/file/content.rb +6 -3
- data/lib/memfs/fake/file.rb +2 -0
- data/lib/memfs/fake/symlink.rb +2 -0
- data/lib/memfs/file/stat.rb +20 -13
- data/lib/memfs/file.rb +74 -66
- data/lib/memfs/file_system.rb +14 -9
- data/lib/memfs/filesystem_access.rb +2 -0
- data/lib/memfs/io.rb +48 -54
- data/lib/memfs/version.rb +3 -1
- data/lib/memfs.rb +83 -3
- data/memfs.gemspec +0 -17
- data/spec/fileutils_spec.rb +64 -41
- data/spec/memfs/dir_spec.rb +155 -18
- data/spec/memfs/fake/directory_spec.rb +3 -3
- data/spec/memfs/fake/entry_spec.rb +11 -5
- data/spec/memfs/fake/symlink_spec.rb +1 -1
- data/spec/memfs/file/stat_spec.rb +27 -15
- data/spec/memfs/file_spec.rb +135 -51
- data/spec/memfs/file_system_spec.rb +15 -15
- data/spec/memfs_spec.rb +29 -1
- data/spec/spec_helper.rb +19 -4
- metadata +17 -151
- data/.hound.yml +0 -2
- data/.rubocop.yml +0 -1
- data/.ruby-style.yml +0 -335
- data/.travis.yml +0 -9
|
@@ -11,7 +11,7 @@ module MemFs
|
|
|
11
11
|
describe '#chdir' do
|
|
12
12
|
it 'changes the current working directory' do
|
|
13
13
|
subject.chdir '/test-dir'
|
|
14
|
-
expect(subject.getwd).to eq('/test-dir')
|
|
14
|
+
expect(subject.getwd).to eq(expected_path('/test-dir'))
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
it 'raises an error if directory does not exist' do
|
|
@@ -29,7 +29,7 @@ module MemFs
|
|
|
29
29
|
subject.chdir '/test-dir' do
|
|
30
30
|
location = subject.getwd
|
|
31
31
|
end
|
|
32
|
-
expect(location).to eq('/test-dir')
|
|
32
|
+
expect(location).to eq(expected_path('/test-dir'))
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
it 'gets back to previous directory once the block is finished' do
|
|
@@ -44,7 +44,7 @@ module MemFs
|
|
|
44
44
|
it 'sets current directory as the last link chain target' do
|
|
45
45
|
subject.symlink('/test-dir', '/test-link')
|
|
46
46
|
subject.chdir('/test-link')
|
|
47
|
-
expect(subject.getwd).to eq('/test-dir')
|
|
47
|
+
expect(subject.getwd).to eq(expected_path('/test-dir'))
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
end
|
|
@@ -52,16 +52,16 @@ module MemFs
|
|
|
52
52
|
describe '#chmod' do
|
|
53
53
|
it 'changes permission bits on the named file' do
|
|
54
54
|
subject.touch('/some-file')
|
|
55
|
-
subject.chmod(
|
|
56
|
-
expect(subject.find!('/some-file').mode).to be(
|
|
55
|
+
subject.chmod(0o777, '/some-file')
|
|
56
|
+
expect(subject.find!('/some-file').mode).to be(0o100777)
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
context 'when the named file is a symlink' do
|
|
60
60
|
it 'changes the permission bits on the symlink itself' do
|
|
61
61
|
subject.touch('/some-file')
|
|
62
62
|
subject.symlink('/some-file', '/some-link')
|
|
63
|
-
subject.chmod(
|
|
64
|
-
expect(subject.find!('/some-link').mode).to be(
|
|
63
|
+
subject.chmod(0o777, '/some-link')
|
|
64
|
+
expect(subject.find!('/some-link').mode).to be(0o100777)
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
67
|
end
|
|
@@ -140,7 +140,7 @@ module MemFs
|
|
|
140
140
|
|
|
141
141
|
it 'sets the current directory to /' do
|
|
142
142
|
subject.clear!
|
|
143
|
-
expect(subject.getwd).to eq(
|
|
143
|
+
expect(subject.getwd).to eq(root_path)
|
|
144
144
|
end
|
|
145
145
|
end
|
|
146
146
|
|
|
@@ -256,7 +256,7 @@ module MemFs
|
|
|
256
256
|
describe '#getwd' do
|
|
257
257
|
it 'returns the current working directory' do
|
|
258
258
|
subject.chdir '/test-dir'
|
|
259
|
-
expect(subject.getwd).to eq('/test-dir')
|
|
259
|
+
expect(subject.getwd).to eq(expected_path('/test-dir'))
|
|
260
260
|
end
|
|
261
261
|
end
|
|
262
262
|
|
|
@@ -289,15 +289,15 @@ module MemFs
|
|
|
289
289
|
expect(subject.find!('/new-dir')).to be_a(Fake::Directory)
|
|
290
290
|
end
|
|
291
291
|
|
|
292
|
-
it 'sets directory permissions to default
|
|
292
|
+
it 'sets directory permissions to default 0o777' do
|
|
293
293
|
subject.mkdir '/new-dir'
|
|
294
|
-
expect(subject.find!('/new-dir').mode).to eq(
|
|
294
|
+
expect(subject.find!('/new-dir').mode).to eq(0o100777)
|
|
295
295
|
end
|
|
296
296
|
|
|
297
297
|
context 'when permissions are specified' do
|
|
298
298
|
it 'sets directory permission to specified value' do
|
|
299
|
-
subject.mkdir '/new-dir',
|
|
300
|
-
expect(subject.find!('/new-dir').mode).to eq(
|
|
299
|
+
subject.mkdir '/new-dir', 0o644
|
|
300
|
+
expect(subject.find!('/new-dir').mode).to eq(0o100644)
|
|
301
301
|
end
|
|
302
302
|
end
|
|
303
303
|
|
|
@@ -329,8 +329,8 @@ module MemFs
|
|
|
329
329
|
end
|
|
330
330
|
|
|
331
331
|
it 'returns the list of all the existing paths' do
|
|
332
|
-
|
|
333
|
-
|
|
332
|
+
expected = %w[/ /tmp /test-dir /test-dir/subdir /test-dir/subdir/file1 /test-dir/subdir/file2]
|
|
333
|
+
expect(subject.paths).to eq(expected.map { |p| expected_path(p) })
|
|
334
334
|
end
|
|
335
335
|
end
|
|
336
336
|
|
data/spec/memfs_spec.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
|
+
require 'tempfile'
|
|
2
3
|
|
|
3
4
|
RSpec.describe MemFs do
|
|
4
5
|
describe '.activate' do
|
|
@@ -69,7 +70,7 @@ RSpec.describe MemFs do
|
|
|
69
70
|
|
|
70
71
|
it 'switches back to the faked Dir & File classes no matter what' do
|
|
71
72
|
begin
|
|
72
|
-
described_class.halt {
|
|
73
|
+
described_class.halt { fail 'Fatal Error' }
|
|
73
74
|
rescue
|
|
74
75
|
expect(::Dir).to be(described_class::Dir)
|
|
75
76
|
expect(::File).to be(described_class::File)
|
|
@@ -87,6 +88,33 @@ RSpec.describe MemFs do
|
|
|
87
88
|
end
|
|
88
89
|
end
|
|
89
90
|
|
|
91
|
+
describe 'Tempfile.create' do
|
|
92
|
+
around(:each) { |example| described_class.activate { example.run } }
|
|
93
|
+
|
|
94
|
+
context 'without a block' do
|
|
95
|
+
it 'creates the file in the in-memory filesystem' do
|
|
96
|
+
file = Tempfile.create('memfs')
|
|
97
|
+
expect(file).to be_a(File)
|
|
98
|
+
expect(file.path).to start_with(expected_path('/tmp/memfs'))
|
|
99
|
+
expect(_fs.find(file.path)).not_to be_nil
|
|
100
|
+
file.close
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
context 'with a block' do
|
|
105
|
+
it 'yields a writable file whose content is stored in the in-memory filesystem' do
|
|
106
|
+
path = nil
|
|
107
|
+
Tempfile.create('memfs') do |f|
|
|
108
|
+
path = f.path
|
|
109
|
+
f.write('hello')
|
|
110
|
+
expect(File.read(path)).to eq('hello')
|
|
111
|
+
expect(_fs.find(path)).not_to be_nil
|
|
112
|
+
end
|
|
113
|
+
expect(_fs.find(path)).to be_nil
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
90
118
|
describe '.touch' do
|
|
91
119
|
around(:each) { |example| described_class.activate { example.run } }
|
|
92
120
|
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'simplecov'
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
SimpleCov.start
|
|
6
|
+
|
|
7
|
+
require 'memfs'
|
|
5
8
|
|
|
6
9
|
def _fs
|
|
7
10
|
MemFs::FileSystem.instance
|
|
8
11
|
end
|
|
9
12
|
|
|
13
|
+
# Returns the platform-appropriate root path
|
|
14
|
+
def root_path
|
|
15
|
+
MemFs.platform_root
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Converts Unix-style path to platform path for expectations
|
|
19
|
+
# expected_path('/test-file') => '/test-file' on Unix, 'D:/test-file' on Windows
|
|
20
|
+
def expected_path(unix_path)
|
|
21
|
+
MemFs.normalize_path(unix_path)
|
|
22
|
+
end
|
|
23
|
+
|
|
10
24
|
RSpec.configure do |config|
|
|
11
25
|
config.expect_with :rspec do |expectations|
|
|
12
26
|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
|
@@ -16,9 +30,10 @@ RSpec.configure do |config|
|
|
|
16
30
|
mocks.verify_partial_doubles = true
|
|
17
31
|
end
|
|
18
32
|
|
|
33
|
+
config.color = true
|
|
19
34
|
config.filter_run :focus
|
|
20
35
|
config.run_all_when_everything_filtered = true
|
|
21
|
-
config.example_status_persistence_file_path =
|
|
36
|
+
config.example_status_persistence_file_path = 'spec/examples.txt'
|
|
22
37
|
config.disable_monkey_patching!
|
|
23
38
|
config.warnings = true
|
|
24
39
|
if config.files_to_run.one?
|
metadata
CHANGED
|
@@ -1,141 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: memfs
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Simon COURTOIS
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
-
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: coveralls
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0.6'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0.6'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: rake
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '12.0'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '12.0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: rspec
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '3.0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '3.0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: guard
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '2.6'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - "~>"
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '2.6'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: guard-rspec
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - "~>"
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '4.3'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '4.3'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: rb-inotify
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - "~>"
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0.8'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - "~>"
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0.8'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: rb-fsevent
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - "~>"
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0.9'
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - "~>"
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0.9'
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: rb-fchange
|
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
|
114
|
-
requirements:
|
|
115
|
-
- - "~>"
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: '0.0'
|
|
118
|
-
type: :development
|
|
119
|
-
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
requirements:
|
|
122
|
-
- - "~>"
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
version: '0.0'
|
|
125
|
-
- !ruby/object:Gem::Dependency
|
|
126
|
-
name: listen
|
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
|
128
|
-
requirements:
|
|
129
|
-
- - "~>"
|
|
130
|
-
- !ruby/object:Gem::Version
|
|
131
|
-
version: '3.1'
|
|
132
|
-
type: :development
|
|
133
|
-
prerelease: false
|
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
-
requirements:
|
|
136
|
-
- - "~>"
|
|
137
|
-
- !ruby/object:Gem::Version
|
|
138
|
-
version: '3.1'
|
|
11
|
+
date: 2026-02-03 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
139
13
|
description: MemFs provides a fake file system that can be used for tests. Strongly
|
|
140
14
|
inspired by FakeFS.
|
|
141
15
|
email:
|
|
@@ -144,18 +18,23 @@ executables: []
|
|
|
144
18
|
extensions: []
|
|
145
19
|
extra_rdoc_files: []
|
|
146
20
|
files:
|
|
21
|
+
- ".github/dependabot.yml"
|
|
22
|
+
- ".github/workflows/ci.yml"
|
|
147
23
|
- ".gitignore"
|
|
148
|
-
- ".hound.yml"
|
|
149
24
|
- ".rspec"
|
|
150
25
|
- ".rubocop.yml"
|
|
151
|
-
- ".ruby-style.yml"
|
|
152
|
-
- ".travis.yml"
|
|
153
26
|
- CHANGELOG.md
|
|
154
27
|
- Gemfile
|
|
155
28
|
- Guardfile
|
|
156
29
|
- LICENSE.txt
|
|
157
30
|
- README.md
|
|
158
31
|
- Rakefile
|
|
32
|
+
- bin/_guard-core
|
|
33
|
+
- bin/coverage_summary
|
|
34
|
+
- bin/guard
|
|
35
|
+
- bin/rake
|
|
36
|
+
- bin/rspec
|
|
37
|
+
- bin/rubocop
|
|
159
38
|
- lib/memfs.rb
|
|
160
39
|
- lib/memfs/dir.rb
|
|
161
40
|
- lib/memfs/fake/directory.rb
|
|
@@ -187,7 +66,7 @@ homepage: http://github.com/simonc/memfs
|
|
|
187
66
|
licenses:
|
|
188
67
|
- MIT
|
|
189
68
|
metadata: {}
|
|
190
|
-
post_install_message:
|
|
69
|
+
post_install_message:
|
|
191
70
|
rdoc_options: []
|
|
192
71
|
require_paths:
|
|
193
72
|
- lib
|
|
@@ -202,21 +81,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
202
81
|
- !ruby/object:Gem::Version
|
|
203
82
|
version: '0'
|
|
204
83
|
requirements: []
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
signing_key:
|
|
84
|
+
rubygems_version: 3.5.23
|
|
85
|
+
signing_key:
|
|
208
86
|
specification_version: 4
|
|
209
|
-
summary: memfs-
|
|
210
|
-
test_files:
|
|
211
|
-
- spec/fileutils_spec.rb
|
|
212
|
-
- spec/memfs/dir_spec.rb
|
|
213
|
-
- spec/memfs/fake/directory_spec.rb
|
|
214
|
-
- spec/memfs/fake/entry_spec.rb
|
|
215
|
-
- spec/memfs/fake/file/content_spec.rb
|
|
216
|
-
- spec/memfs/fake/file_spec.rb
|
|
217
|
-
- spec/memfs/fake/symlink_spec.rb
|
|
218
|
-
- spec/memfs/file/stat_spec.rb
|
|
219
|
-
- spec/memfs/file_spec.rb
|
|
220
|
-
- spec/memfs/file_system_spec.rb
|
|
221
|
-
- spec/memfs_spec.rb
|
|
222
|
-
- spec/spec_helper.rb
|
|
87
|
+
summary: memfs-2.0.0
|
|
88
|
+
test_files: []
|
data/.hound.yml
DELETED
data/.rubocop.yml
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
./.ruby-style.yml
|