fakefs 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac7a61d1e3f94ffbd8bf9e02b2bc067756d9a2ec5b6dedd9dd4591c014e86ddc
4
- data.tar.gz: 849724752e1833ab9876f538910789178d78e20880be8803eb0bac0fd8f1f873
3
+ metadata.gz: 0b40516abdee28793eb6152f979b453e79ed3dfd42c205e65f500efca0bded1f
4
+ data.tar.gz: 249b21fc04c49b15cf5f81e5a1497bdb957749d78261337490308f2fa1bb756a
5
5
  SHA512:
6
- metadata.gz: 97c55be8f221b42ab6c3cb9e80ba1531f984b8c28d565f96ab6deef78dccfe2f822cfc163ffe3108d0e915903290e793b5fe58513e7ef7ffa7af732407242eb1
7
- data.tar.gz: 749aa9b67e909e40a6eec857c0be44faa915fbb09d30066a0387be9692860053d393922582f601de9cde3955e999b329d1febec4fadba7fc9ef0eb0c700bf8d8
6
+ metadata.gz: 54376515f03734c2058dcc29733830dae79882dc235042a15bf2bfde1d6256f0eb373c85ae2408118c3f32bec00730cb7a2304225149c97a2d3a44cfe8b0a2ee
7
+ data.tar.gz: 2e15d1c5e506602d955bbcadc7b890946f133949a65e20327dd5bac5995fa6e69fc296750fd2dd3fe1e5b219e04f69a8f8f2cf9a528f63fe8971192e7c614aa8
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.find(matcher, flags, true, dir: pwd) || []].flatten.map do |e|
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)
@@ -20,13 +20,22 @@ module FakeFS
20
20
  fs.entries
21
21
  end
22
22
 
23
- def find(path, find_flags = 0, gave_char_class = false, dir: nil)
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
- find_recurser(fs, parts, find_flags, gave_char_class).flatten
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| find_recurser(entry, parts, find_flags, gave_char_class) }
173
+ matches.map { |entry| find_with_glob_recurser(entry, parts, find_flags, gave_char_class) }
153
174
  end
154
175
  end
155
176
 
@@ -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.find("#{file}/**/**")].flatten.each do |f|
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.find("#{file}/**/**")].flatten.each do |f|
258
+ [FileSystem.find_with_glob("#{file}/**/**")].flatten.each do |f|
259
259
  chmod(mode, f.to_s)
260
260
  end
261
261
  end
@@ -1,7 +1,7 @@
1
1
  module FakeFS
2
2
  # Version module
3
3
  module Version
4
- VERSION = '2.2.0'.freeze
4
+ VERSION = '2.3.0'.freeze
5
5
 
6
6
  def self.to_s
7
7
  VERSION
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.2.0
4
+ version: 2.3.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-09 00:00:00.000000000 Z
15
+ date: 2023-02-12 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: bump