fakefs 2.2.0 → 2.4.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 +1 -1
- data/lib/fakefs/file_system.rb +24 -3
- data/lib/fakefs/fileutils.rb +2 -2
- data/lib/fakefs/irb.rb +14 -0
- data/lib/fakefs/kernel.rb +2 -2
- 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: 1233eb5f53d2726d129d63b73b637d324eccd588bf2b91a03ea9c66ce4eaf315
|
4
|
+
data.tar.gz: 86ee22f93f37f84744da31813a43377a95b398337c45d08d2bddbfdab3794df9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1df486ce2856004f54e6ef9216754e008843282d5ad14f95700ce66d3f49185359217855be28cd5a4603e7b3168f2c5aec4bc5618c0f356abb6759193e0a2bf
|
7
|
+
data.tar.gz: 6cda052f83b1e7d3ec3e5ffcba0d29851eced5f450c4e60c24f459e8859b109b2ec22f94144e8cc2d24526eb254259c9ba08cf93b54e4d383e087d3275b73ca8
|
data/lib/fakefs/dir.rb
CHANGED
@@ -130,7 +130,7 @@ module FakeFS
|
|
130
130
|
def self.glob(pattern, _flags = 0, flags: _flags, base: nil, &block) # rubocop:disable Lint/UnderscorePrefixedVariableName
|
131
131
|
pwd = FileSystem.normalize_path(base || Dir.pwd)
|
132
132
|
matches_for_pattern = lambda do |matcher|
|
133
|
-
[FileSystem.
|
133
|
+
[FileSystem.find_with_glob(matcher, flags, true, dir: pwd) || []].flatten.map do |e|
|
134
134
|
pwd_regex = %r{\A#{pwd.gsub('+') { '\+' }}/?}
|
135
135
|
if pwd.match(%r{\A/?\z}) ||
|
136
136
|
!e.to_s.match(pwd_regex)
|
data/lib/fakefs/file_system.rb
CHANGED
@@ -20,13 +20,22 @@ module FakeFS
|
|
20
20
|
fs.entries
|
21
21
|
end
|
22
22
|
|
23
|
-
|
23
|
+
# Finds files/directories using the exact path, without expanding globs.
|
24
|
+
def find(path, dir: nil)
|
25
|
+
parts = path_parts(normalize_path(path, dir: dir))
|
26
|
+
return fs if parts.empty? # '/'
|
27
|
+
|
28
|
+
find_recurser(fs, parts)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Finds files/directories expanding globs.
|
32
|
+
def find_with_glob(path, find_flags = 0, gave_char_class = false, dir: nil)
|
24
33
|
parts = path_parts(normalize_path(path, dir: dir))
|
25
34
|
return fs if parts.empty? # '/'
|
26
35
|
|
27
36
|
entries = Globber.expand(path).flat_map do |pattern|
|
28
37
|
parts = path_parts(normalize_path(pattern, dir: dir))
|
29
|
-
|
38
|
+
find_with_glob_recurser(fs, parts, find_flags, gave_char_class).flatten
|
30
39
|
end
|
31
40
|
|
32
41
|
case entries.length
|
@@ -120,6 +129,18 @@ module FakeFS
|
|
120
129
|
private
|
121
130
|
|
122
131
|
def find_recurser(dir, parts, find_flags = 0, gave_char_class = false)
|
132
|
+
return nil unless dir.respond_to? :[]
|
133
|
+
head, *parts = parts
|
134
|
+
match = dir.entries.find { |e| e.name == head }
|
135
|
+
|
136
|
+
if parts.empty? # we're done recursing
|
137
|
+
match
|
138
|
+
else
|
139
|
+
find_recurser(match, parts, find_flags, gave_char_class)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def find_with_glob_recurser(dir, parts, find_flags = 0, gave_char_class = false)
|
123
144
|
return [] unless dir.respond_to? :[]
|
124
145
|
pattern, *parts = parts
|
125
146
|
matches =
|
@@ -149,7 +170,7 @@ module FakeFS
|
|
149
170
|
if parts.empty? # we're done recursing
|
150
171
|
matches
|
151
172
|
else
|
152
|
-
matches.map { |entry|
|
173
|
+
matches.map { |entry| find_with_glob_recurser(entry, parts, find_flags, gave_char_class) }
|
153
174
|
end
|
154
175
|
end
|
155
176
|
|
data/lib/fakefs/fileutils.rb
CHANGED
@@ -232,7 +232,7 @@ module FakeFS
|
|
232
232
|
list = Array(list)
|
233
233
|
list.each do |file|
|
234
234
|
chown(user, group, file)
|
235
|
-
[FileSystem.
|
235
|
+
[FileSystem.find_with_glob("#{file}/**/**")].flatten.each do |f|
|
236
236
|
chown(user, group, f.to_s)
|
237
237
|
end
|
238
238
|
end
|
@@ -255,7 +255,7 @@ module FakeFS
|
|
255
255
|
list = Array(list)
|
256
256
|
list.each do |file|
|
257
257
|
chmod(mode, file)
|
258
|
-
[FileSystem.
|
258
|
+
[FileSystem.find_with_glob("#{file}/**/**")].flatten.each do |f|
|
259
259
|
chmod(mode, f.to_s)
|
260
260
|
end
|
261
261
|
end
|
data/lib/fakefs/irb.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'irb'
|
2
|
+
|
3
|
+
# Make the original file system classes available in IRB.
|
4
|
+
::IRB::File = ::File
|
5
|
+
::IRB::FileUtils = ::FileUtils
|
6
|
+
::IRB::Dir = ::Dir
|
7
|
+
::IRB::Pathname = ::Pathname
|
8
|
+
|
9
|
+
# We need to setup IRB early, because the setup process itself requires locale files.
|
10
|
+
# Otherwise we'll get an error from Budler
|
11
|
+
# Bundler::GemspecError: The gemspec for GEM_NAME was missing or broken.
|
12
|
+
# Try running `gem pristine GEM_NAME -v GEM_VERSION` to fix the cached spec.
|
13
|
+
# because file sytem in bundler is stubbed.
|
14
|
+
IRB.setup(binding.source_location[0], argv: [])
|
data/lib/fakefs/kernel.rb
CHANGED
@@ -32,8 +32,8 @@ module FakeFS
|
|
32
32
|
end
|
33
33
|
|
34
34
|
hijack :open do |*args, &block|
|
35
|
-
|
36
|
-
|
35
|
+
# This is a system command or we're inside IRB internals
|
36
|
+
if args.first.start_with?('|') || self.class.to_s.start_with?("IRB::")
|
37
37
|
::FakeFS::Kernel.captives[:original][:open].call(*args, &block)
|
38
38
|
else
|
39
39
|
name = args.shift
|
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: 2.
|
4
|
+
version: 2.4.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: 2023-02-
|
15
|
+
date: 2023-02-13 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: bump
|
@@ -120,6 +120,7 @@ files:
|
|
120
120
|
- lib/fakefs/fileutils.rb
|
121
121
|
- lib/fakefs/globber.rb
|
122
122
|
- lib/fakefs/io.rb
|
123
|
+
- lib/fakefs/irb.rb
|
123
124
|
- lib/fakefs/kernel.rb
|
124
125
|
- lib/fakefs/pathname.rb
|
125
126
|
- lib/fakefs/pry.rb
|