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.
@@ -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(0777, '/some-file')
56
- expect(subject.find!('/some-file').mode).to be(0100777)
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(0777, '/some-link')
64
- expect(subject.find!('/some-link').mode).to be(0100777)
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 0777' do
292
+ it 'sets directory permissions to default 0o777' do
293
293
  subject.mkdir '/new-dir'
294
- expect(subject.find!('/new-dir').mode).to eq(0100777)
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', 0644
300
- expect(subject.find!('/new-dir').mode).to eq(0100644)
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
- expect(subject.paths).to eq \
333
- %w[/ /tmp /test-dir /test-dir/subdir /test-dir/subdir/file1 /test-dir/subdir/file2]
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 { raise StandardError.new }
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
- require 'coveralls'
2
- require 'memfs'
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov'
3
4
 
4
- Coveralls.wear!
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 = "spec/examples.txt"
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: 1.0.0
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: 2017-01-01 00:00:00.000000000 Z
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
- rubyforge_project:
206
- rubygems_version: 2.6.8
207
- signing_key:
84
+ rubygems_version: 3.5.23
85
+ signing_key:
208
86
  specification_version: 4
209
- summary: memfs-1.0.0
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
@@ -1,2 +0,0 @@
1
- ruby:
2
- config_file: .ruby-style.yml
data/.rubocop.yml DELETED
@@ -1 +0,0 @@
1
- ./.ruby-style.yml