fakefs 2.2.0 → 2.3.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 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