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 +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/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0b40516abdee28793eb6152f979b453e79ed3dfd42c205e65f500efca0bded1f
         | 
| 4 | 
            +
              data.tar.gz: 249b21fc04c49b15cf5f81e5a1497bdb957749d78261337490308f2fa1bb756a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 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. | 
| 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/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.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- | 
| 15 | 
            +
            date: 2023-02-12 00:00:00.000000000 Z
         | 
| 16 16 | 
             
            dependencies:
         | 
| 17 17 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 18 18 | 
             
              name: bump
         |