fakefs 2.7.1 → 3.0.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: 4c651948e15e48a7fc0a55e795e637b8a7f416b3346d6b7732f9c9db36750b6b
4
- data.tar.gz: e5b0f2eea98fe2a4d58a34daf9ad8af627186eff773fc42f93790a1ca048d5d5
3
+ metadata.gz: 5e3224ff5a1d920e4564617bcb22fa5a7ece1e956cd8d4ea5602f3486780ac2f
4
+ data.tar.gz: 66ee5d6658990778978ed1531c115ae28ad08414cf9aa1bc90f6fd7e6400b22f
5
5
  SHA512:
6
- metadata.gz: 8c356f48b8cab450871cffbf4dca4ca48bdf7631201c624c5cabf4a8482867cc07258900de12ee49aa0409a9b2b186c99f2654c0a564b5bdcf796347c0e68f1a
7
- data.tar.gz: 8ad9c0fa9d589ef555c6c25514e1f743afe43da096092ae4e8b3c21d5a0291014ef30cc4ed4829724a660a2ebaf033b50097ebcf47f0a35e943649df9b368b8f
6
+ metadata.gz: 42daab712ce7b73ca3ffef7b383834eac7e624bdbf43e4098000fdca7d16cc92d505a5631e256248734962d8db7cb148842d4efc1853686f9cbe5d8b288c6c89
7
+ data.tar.gz: 5514fc676ba615bd6387ad44cc3fa447fc566e265178729d8bb30a4098834e11a9f562f6cc8f25cc88b2c9d386827cc67506b46226008241510c67edbbeb6f81
data/lib/fakefs/base.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RealFile = File
2
4
  RealFileTest = FileTest
3
5
  RealFileUtils = FileUtils
data/lib/fakefs/dir.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'English'
2
4
 
3
5
  module FakeFS
@@ -127,10 +129,10 @@ module FakeFS
127
129
  end
128
130
  end
129
131
 
130
- def self.glob(pattern, _flags = 0, flags: _flags, base: nil, &block) # rubocop:disable Lint/UnderscorePrefixedVariableName
132
+ def self.glob(pattern, _flags = 0, flags: _flags, base: nil, sort: true, &block) # rubocop:disable Lint/UnderscorePrefixedVariableName
131
133
  pwd = FileSystem.normalize_path(base || Dir.pwd)
132
134
  matches_for_pattern = lambda do |matcher|
133
- [FileSystem.find_with_glob(matcher, flags, true, dir: pwd) || []].flatten.map do |e|
135
+ matched = [FileSystem.find_with_glob(matcher, flags, true, dir: pwd) || []].flatten.map do |e|
134
136
  pwd_regex = %r{\A#{pwd.gsub('+') { '\+' }}/?}
135
137
  if pwd.match(%r{\A/?\z}) ||
136
138
  !e.to_s.match(pwd_regex)
@@ -138,7 +140,9 @@ module FakeFS
138
140
  else
139
141
  e.to_s.match(pwd_regex).post_match
140
142
  end
141
- end.sort
143
+ end
144
+ matched.sort! if sort
145
+ matched
142
146
  end
143
147
 
144
148
  files =
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # Fake Dir class
3
5
  class FakeDir
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # Fake file class
3
5
  class FakeFile
4
- attr_accessor :name, :parent, :mtime, :atime, :mode, :uid, :gid
5
- attr_reader :ctime, :birthtime
6
+ attr_accessor :name, :parent, :mtime, :atime, :mode, :uid, :gid, :ctime, :birthtime, :inode
6
7
 
7
8
  def initialize(name = nil, parent = nil)
8
9
  @name = name
@@ -17,8 +18,6 @@ module FakeFS
17
18
  @gid = Process.gid
18
19
  end
19
20
 
20
- attr_accessor :inode
21
-
22
21
  def content
23
22
  @inode.content
24
23
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # Inode class
3
5
  class FakeInode
@@ -10,14 +12,11 @@ module FakeFS
10
12
  assign_inode_num
11
13
  end
12
14
 
13
- attr_accessor :content
14
- attr_accessor :links
15
- attr_accessor :inode_num
15
+ attr_accessor :content, :links, :inode_num
16
16
 
17
17
  # please see: http://iacobson.net/beware-of-ruby-class-variables/
18
18
  class << self
19
- attr_accessor :freed_inodes
20
- attr_accessor :next_inode_num
19
+ attr_accessor :freed_inodes, :next_inode_num
21
20
 
22
21
  # This method should only be used for tests
23
22
  # When called, it will reset the current inode information of the FakeFS
@@ -28,8 +27,7 @@ module FakeFS
28
27
  end
29
28
 
30
29
  def assign_inode_num
31
- if (@inode_num = self.class.freed_inodes.shift)
32
- else
30
+ unless (@inode_num = self.class.freed_inodes.shift)
33
31
  @inode_num = self.class.next_inode_num
34
32
  self.class.next_inode_num += 1
35
33
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # Fake symlink class
3
5
  class FakeSymlink
@@ -29,7 +31,7 @@ module FakeFS
29
31
 
30
32
  private
31
33
 
32
- def method_missing(*args, &block) # rubocop:disable Style/MethodMissingSuper
34
+ def method_missing(*args, &block)
33
35
  entry.send(*args, &block)
34
36
  end
35
37
  end
data/lib/fakefs/file.rb CHANGED
@@ -1,15 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'stringio'
2
4
 
3
5
  module FakeFS
4
6
  # FakeFS File class inherit StringIO
5
7
  class File < StringIO
6
8
  MODES = [
7
- READ_ONLY = 'r'.freeze,
8
- READ_WRITE = 'r+'.freeze,
9
- WRITE_ONLY = 'w'.freeze,
10
- READ_WRITE_TRUNCATE = 'w+'.freeze,
11
- APPEND_WRITE_ONLY = 'a'.freeze,
12
- APPEND_READ_WRITE = 'a+'.freeze
9
+ READ_ONLY = 'r',
10
+ READ_WRITE = 'r+',
11
+ WRITE_ONLY = 'w',
12
+ READ_WRITE_TRUNCATE = 'w+',
13
+ APPEND_WRITE_ONLY = 'a',
14
+ APPEND_READ_WRITE = 'a+'
13
15
  ].freeze
14
16
 
15
17
  FMODE_READABLE = 0x00000001
@@ -277,7 +279,7 @@ module FakeFS
277
279
 
278
280
  def self.delete(*files)
279
281
  files.each do |file|
280
- file_name = (file.class == FakeFS::File ? file.path : file.to_s)
282
+ file_name = (file.instance_of?(FakeFS::File) ? file.path : file.to_s)
281
283
  raise Errno::ENOENT, file_name unless exist?(file_name)
282
284
 
283
285
  FileUtils.rm(file_name)
@@ -362,8 +364,7 @@ module FakeFS
362
364
 
363
365
  # FakeFS Stat class
364
366
  class Stat
365
- attr_reader :ctime, :mtime, :atime, :mode, :uid, :gid
366
- attr_reader :birthtime
367
+ attr_reader :ctime, :mtime, :atime, :mode, :uid, :gid, :birthtime
367
368
 
368
369
  def initialize(file, lstat = false)
369
370
  raise(Errno::ENOENT, file.to_s) unless File.exist?(file)
@@ -574,7 +575,9 @@ module FakeFS
574
575
  # and force set it back.
575
576
 
576
577
  # truncate doesn't work
577
- @file.content.force_encoding(Encoding.default_external)
578
+ unless @file.is_a?(FakeFS::FakeDir)
579
+ @file.content = @file.content.dup.force_encoding(Encoding.default_external)
580
+ end
578
581
  # StringIO.new 'content', nil, **{} # works in MRI, but fails in JRuby
579
582
  # but File.open 'filename', nil, **{} is ok both in MRI and JRuby
580
583
 
@@ -906,9 +909,9 @@ module FakeFS
906
909
  # note we multiply by 7 since the group num is 1, and octal represents digits 1-7 and we want all 3 bits
907
910
  current_group_mode = current_file_mode & (group_num * 7)
908
911
  if group_num == 0o100
909
- current_group_mode = current_group_mode >> 6
912
+ current_group_mode >>= 6
910
913
  elsif group_num == 0o10
911
- current_group_mode = current_group_mode >> 3
914
+ current_group_mode >>= 3
912
915
  end
913
916
 
914
917
  current_group_mode
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # FileSystem module
3
5
  module FileSystem
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # FileTest
3
5
  module FileTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # FileUtils module
3
5
  module FileUtils
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'file'
2
4
 
3
5
  module FakeFS
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # Handles globbing for FakeFS.
3
5
  module Globber
@@ -8,14 +10,14 @@ module FakeFS
8
10
 
9
11
  return [pattern] if pattern[0] != '{' || pattern[-1] != '}'
10
12
 
11
- part = ''
13
+ part = +''
12
14
  result = []
13
15
 
14
16
  each_char_with_levels pattern, '{', '}' do |chr, level|
15
17
  case level
16
18
  when 0
17
19
  case chr
18
- when '{' # rubocop:disable Lint/EmptyWhen
20
+ when '{'
19
21
  # noop
20
22
  else
21
23
  part << chr
@@ -24,8 +26,8 @@ module FakeFS
24
26
  case chr
25
27
  when ','
26
28
  result << part
27
- part = ''
28
- when '}' # rubocop:disable Lint/EmptyWhen
29
+ part = +''
30
+ when '}'
29
31
  # noop
30
32
  else
31
33
  part << chr
@@ -43,13 +45,13 @@ module FakeFS
43
45
  def path_components(pattern)
44
46
  pattern = pattern.to_s
45
47
 
46
- part = ''
48
+ part = +''
47
49
  result = []
48
50
 
49
51
  each_char_with_levels pattern, '{', '}' do |chr, level|
50
52
  if level == 0 && chr == File::SEPARATOR
51
53
  result << part
52
- part = ''
54
+ part = +''
53
55
  else
54
56
  part << chr
55
57
  end
data/lib/fakefs/io.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # FakeFS IO class inherit root IO
3
5
  # Only minimal mocks are provided as IO may be used by ruby's internals
data/lib/fakefs/irb.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'irb'
2
4
 
3
5
  # Make the original file system classes available in IRB.
data/lib/fakefs/kernel.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # Kernel Module
3
5
  module Kernel
@@ -16,7 +18,7 @@ module FakeFS
16
18
  end
17
19
 
18
20
  def self.unhijack!
19
- captives[:original].each do |name, _prc|
21
+ captives[:original].each_key do |name|
20
22
  ::Kernel.send(:remove_method, name.to_sym)
21
23
  ::Kernel.send(:define_method, name.to_sym, proc do |*args, **kwargs, &block|
22
24
  ::FakeFS::Kernel.captives[:original][name].call(*args, **kwargs, &block)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # FakeFS module
2
4
  module FakeFS
3
5
  #
@@ -109,10 +111,10 @@ module FakeFS
109
111
  if File::ALT_SEPARATOR
110
112
  SEPARATOR_LIST = "#{Regexp.quote File::ALT_SEPARATOR}" \
111
113
  "#{Regexp.quote File::SEPARATOR}".freeze
112
- SEPARATOR_PAT = /[#{SEPARATOR_LIST}]/.freeze
114
+ SEPARATOR_PAT = /[#{SEPARATOR_LIST}]/
113
115
  else
114
116
  SEPARATOR_LIST = (Regexp.quote File::SEPARATOR).to_s.freeze
115
- SEPARATOR_PAT = /#{Regexp.quote File::SEPARATOR}/.freeze
117
+ SEPARATOR_PAT = /#{Regexp.quote File::SEPARATOR}/
116
118
  end
117
119
 
118
120
  # Return a pathname which the extension of the basename is substituted by
@@ -483,7 +485,8 @@ module FakeFS
483
485
  while (r = chop_basename(pre))
484
486
  pre, base = r
485
487
  case base
486
- when '.' # rubocop:disable Lint/EmptyWhen
488
+ when '.'
489
+ # ignored
487
490
  when '..'
488
491
  names.unshift base
489
492
  else
data/lib/fakefs/pry.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Define Pry class if it's not defined. Useful if pry
2
4
  # is required after loading FakeFS
3
5
  ::Pry = Class.new unless defined?(::Pry)
data/lib/fakefs/safe.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fileutils'
2
4
  require 'pathname'
3
5
  require 'fakefs/pry'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # FakeFS::SpecHelpers provides a simple macro for RSpec example
2
4
  # groups to turn FakeFS on and off.
3
5
  # To use it simply require 'fakefs/spec_helpers', then include
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FakeFS
2
4
  # Version module
3
5
  module Version
4
- VERSION = '2.7.1'.freeze
6
+ VERSION = '3.0.0'
5
7
 
6
8
  def self.to_s
7
9
  VERSION
data/lib/fakefs.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fakefs/safe'
2
4
 
3
5
  FakeFS.activate!
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.7.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wanstrath
@@ -9,39 +9,66 @@ authors:
9
9
  - Jeff Hodges
10
10
  - Pat Nakajima
11
11
  - Brian Donovan
12
- autorequire:
13
12
  bindir: bin
14
13
  cert_chain: []
15
- date: 2024-12-08 00:00:00.000000000 Z
14
+ date: 2025-01-20 00:00:00.000000000 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
17
  name: bump
19
18
  requirement: !ruby/object:Gem::Requirement
20
19
  requirements:
21
- - - "~>"
20
+ - - ">="
22
21
  - !ruby/object:Gem::Version
23
- version: 0.5.3
22
+ version: '0'
24
23
  type: :development
25
24
  prerelease: false
26
25
  version_requirements: !ruby/object:Gem::Requirement
27
26
  requirements:
28
- - - "~>"
27
+ - - ">="
29
28
  - !ruby/object:Gem::Version
30
- version: 0.5.3
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: csv
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
31
44
  - !ruby/object:Gem::Dependency
32
45
  name: maxitest
33
46
  requirement: !ruby/object:Gem::Requirement
34
47
  requirements:
35
- - - "~>"
48
+ - - ">="
36
49
  - !ruby/object:Gem::Version
37
- version: '3.6'
50
+ version: '0'
38
51
  type: :development
39
52
  prerelease: false
40
53
  version_requirements: !ruby/object:Gem::Requirement
41
54
  requirements:
42
- - - "~>"
55
+ - - ">="
43
56
  - !ruby/object:Gem::Version
44
- version: '3.6'
57
+ version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: mutex_m
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
45
72
  - !ruby/object:Gem::Dependency
46
73
  name: pry
47
74
  requirement: !ruby/object:Gem::Requirement
@@ -62,42 +89,42 @@ dependencies:
62
89
  requirements:
63
90
  - - ">="
64
91
  - !ruby/object:Gem::Version
65
- version: '10.3'
92
+ version: '0'
66
93
  type: :development
67
94
  prerelease: false
68
95
  version_requirements: !ruby/object:Gem::Requirement
69
96
  requirements:
70
97
  - - ">="
71
98
  - !ruby/object:Gem::Version
72
- version: '10.3'
99
+ version: '0'
73
100
  - !ruby/object:Gem::Dependency
74
101
  name: rspec
75
102
  requirement: !ruby/object:Gem::Requirement
76
103
  requirements:
77
- - - "~>"
104
+ - - ">="
78
105
  - !ruby/object:Gem::Version
79
- version: '3.1'
106
+ version: '0'
80
107
  type: :development
81
108
  prerelease: false
82
109
  version_requirements: !ruby/object:Gem::Requirement
83
110
  requirements:
84
- - - "~>"
111
+ - - ">="
85
112
  - !ruby/object:Gem::Version
86
- version: '3.1'
113
+ version: '0'
87
114
  - !ruby/object:Gem::Dependency
88
115
  name: rubocop
89
116
  requirement: !ruby/object:Gem::Requirement
90
117
  requirements:
91
118
  - - "~>"
92
119
  - !ruby/object:Gem::Version
93
- version: 0.82.0
120
+ version: 1.70.0
94
121
  type: :development
95
122
  prerelease: false
96
123
  version_requirements: !ruby/object:Gem::Requirement
97
124
  requirements:
98
125
  - - "~>"
99
126
  - !ruby/object:Gem::Version
100
- version: 0.82.0
127
+ version: 1.70.0
101
128
  description: A fake filesystem. Use it in your tests.
102
129
  email:
103
130
  - chris@ozmm.org
@@ -132,7 +159,6 @@ homepage: https://github.com/fakefs/fakefs
132
159
  licenses:
133
160
  - MIT
134
161
  metadata: {}
135
- post_install_message:
136
162
  rdoc_options: []
137
163
  require_paths:
138
164
  - lib
@@ -140,15 +166,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
166
  requirements:
141
167
  - - ">="
142
168
  - !ruby/object:Gem::Version
143
- version: 2.7.0
169
+ version: 3.0.0
144
170
  required_rubygems_version: !ruby/object:Gem::Requirement
145
171
  requirements:
146
172
  - - ">="
147
173
  - !ruby/object:Gem::Version
148
174
  version: '0'
149
175
  requirements: []
150
- rubygems_version: 3.5.11
151
- signing_key:
176
+ rubygems_version: 3.6.2
152
177
  specification_version: 4
153
178
  summary: A fake filesystem. Use it in your tests.
154
179
  test_files: []