mocha 3.0.1 → 3.1.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/Gemfile +1 -0
- data/README.md +2 -2
- data/RELEASE.md +30 -0
- data/Rakefile +22 -2
- data/lib/mocha/backtrace_filter.rb +11 -1
- data/lib/mocha/deprecation.rb +2 -16
- data/lib/mocha/expectation.rb +10 -4
- data/lib/mocha/inspect.rb +5 -15
- data/lib/mocha/logger.rb +17 -4
- data/lib/mocha/mockery.rb +1 -8
- data/lib/mocha/parameter_matchers/instance_methods.rb +1 -1
- data/lib/mocha/stubbed_method.rb +2 -1
- data/lib/mocha/version.rb +1 -1
- metadata +3 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 12216e23b807fb2f1fd151d8f68ddd8fbbad2927a444cc563b192fe560ba0433
|
|
4
|
+
data.tar.gz: f5c3575c50f7a16d94fbb2c29b65de160c29cb3a84b460d84b0244a721028628
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e13297ea4d191863ddd889c7d64dccf0cd652734b46cbd1d04fec4c09c896923aba9fe09f15ce0c50982eb0ef22d892086ad5b8f661283f54ee9913d6c2cfa1e
|
|
7
|
+
data.tar.gz: ef2a1fafc1af00f43033742ebf2aff3870495bac17e0347607606026d3fa5e9cce961921371601cc0752e11501a7fbbf083d65a1743a318b873d7e2455fb4d2c
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -330,7 +330,7 @@ See this [list of contributors](https://github.com/freerange/mocha/graphs/contri
|
|
|
330
330
|
```bash
|
|
331
331
|
$ MOCHA_GENERATE_DOCS=true bundle install
|
|
332
332
|
|
|
333
|
-
$ MOCHA_GENERATE_DOCS=true rake docs
|
|
333
|
+
$ MOCHA_GENERATE_DOCS=true bundle exec rake docs
|
|
334
334
|
```
|
|
335
335
|
* Commit documentation & push to GitHub
|
|
336
336
|
* Sign in to rubygems.org and find API key - https://rubygems.org/profile/edit
|
|
@@ -342,7 +342,7 @@ $ curl -u <email-address> -H 'OTP:<one-time-password>' https://rubygems.org/api/
|
|
|
342
342
|
* Release gem to Rubygems:
|
|
343
343
|
|
|
344
344
|
```bash
|
|
345
|
-
$ rake release
|
|
345
|
+
$ bundle exec rake release
|
|
346
346
|
[runs tests]
|
|
347
347
|
mocha 1.2.0 built to pkg/mocha-1.2.0.gem.
|
|
348
348
|
Tagged v1.2.0.
|
data/RELEASE.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# Release Notes
|
|
2
2
|
|
|
3
|
+
## 3.1.0
|
|
4
|
+
|
|
5
|
+
### External changes
|
|
6
|
+
|
|
7
|
+
* Format warnings consistently and include source location (#794)
|
|
8
|
+
|
|
9
|
+
### Internal changes
|
|
10
|
+
|
|
11
|
+
* Fix `Style/OneClassPerFile` violations (#796)
|
|
12
|
+
* Remove `mise.toml` which was added accidentally (6c5f84db)
|
|
13
|
+
* Add `.ruby-version` to `.gitignore` (8516ccc1)
|
|
14
|
+
|
|
15
|
+
## 3.0.2
|
|
16
|
+
|
|
17
|
+
### External changes
|
|
18
|
+
|
|
19
|
+
* Fix `NoMethodError` on deprecation warning - broken since v3.0.0 (#790)
|
|
20
|
+
|
|
21
|
+
### Internal changes
|
|
22
|
+
|
|
23
|
+
* Update commands in release docs to use `bundle exec` (7692c735)
|
|
24
|
+
* Fix `test:performance` rake task for minitest v6 (d925ad27)
|
|
25
|
+
* Fix prism gem install on JRuby (683c27b4)
|
|
26
|
+
* Add Ruby v4.0-rc to CI build matrix and change weekly build to nightly (#777)
|
|
27
|
+
* Add Ruby v4.0 to CI build matrix (6ced2025)
|
|
28
|
+
* Add irb to `Gemfile` to fix warning in Ruby v4 (a0fc7798)
|
|
29
|
+
* Auto-correct `Style/EmptyClassDefinition` violation (9ba0a09f)
|
|
30
|
+
* Ensure every test can run in isolation (be12ef06)
|
|
31
|
+
* Rename `run-fail-fast` CircleCI command -> `run-fail-on-warning` (72fc6fe8)
|
|
32
|
+
|
|
3
33
|
## 3.0.1
|
|
4
34
|
|
|
5
35
|
### External changes
|
data/Rakefile
CHANGED
|
@@ -42,6 +42,25 @@ namespace 'test' do
|
|
|
42
42
|
t.warning = true
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
+
desc 'Run each test in isolation'
|
|
46
|
+
task 'isolated' do
|
|
47
|
+
test_files = FileList['test/unit/**/*_test.rb', 'test/acceptance/*_test.rb']
|
|
48
|
+
failed_tests = []
|
|
49
|
+
|
|
50
|
+
test_files.each do |test_file|
|
|
51
|
+
puts "\n=== Running #{test_file} in isolation ==="
|
|
52
|
+
system("ruby -Itest -w #{test_file}") || (failed_tests << test_file)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
if failed_tests.any?
|
|
56
|
+
puts "\n❌ #{failed_tests.size} test file(s) failed:"
|
|
57
|
+
failed_tests.each { |f| puts " - #{f}" }
|
|
58
|
+
exit 1
|
|
59
|
+
else
|
|
60
|
+
puts "\n✅ All #{test_files.size} test files passed in isolation!"
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
45
64
|
namespace 'integration' do
|
|
46
65
|
desc 'Run Minitest integration tests (intended to be run in its own process)'
|
|
47
66
|
Rake::TestTask.new('minitest') do |t|
|
|
@@ -92,15 +111,16 @@ task 'lint' do
|
|
|
92
111
|
end
|
|
93
112
|
end
|
|
94
113
|
|
|
95
|
-
def benchmark_test_case(klass, iterations)
|
|
114
|
+
def benchmark_test_case(klass, iterations) # rubocop:disable Metrics/AbcSize
|
|
96
115
|
require 'benchmark'
|
|
97
116
|
require 'mocha/detection/minitest'
|
|
98
117
|
|
|
99
118
|
if defined?(Minitest)
|
|
100
119
|
minitest_version = Gem::Version.new(Mocha::Detection::Minitest.version)
|
|
101
120
|
if Gem::Requirement.new('>= 5.0.0').satisfied_by?(minitest_version)
|
|
121
|
+
run_method = Gem::Requirement.new('>= 6.0.0').satisfied_by?(minitest_version) ? :run_suite : :run
|
|
102
122
|
Minitest.seed = 1
|
|
103
|
-
result = Benchmark.realtime { iterations.times { |_i| klass.
|
|
123
|
+
result = Benchmark.realtime { iterations.times { |_i| klass.public_send(run_method, Minitest::CompositeReporter.new) } }
|
|
104
124
|
Minitest::Runnable.runnables.delete(klass)
|
|
105
125
|
result
|
|
106
126
|
else
|
|
@@ -9,7 +9,17 @@ module Mocha
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def filtered(backtrace)
|
|
12
|
-
backtrace.reject { |
|
|
12
|
+
backtrace.reject { |line| exclude?(line) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def filtered_locations(locations)
|
|
16
|
+
locations.reject { |location| exclude?(location.path) }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def exclude?(path)
|
|
22
|
+
File.expand_path(path).start_with?(@lib_directory)
|
|
13
23
|
end
|
|
14
24
|
end
|
|
15
25
|
end
|
data/lib/mocha/deprecation.rb
CHANGED
|
@@ -1,26 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'mocha/
|
|
3
|
+
require 'mocha/logger'
|
|
4
4
|
|
|
5
5
|
module Mocha
|
|
6
6
|
class Deprecation
|
|
7
|
-
class Logger
|
|
8
|
-
def warning(message)
|
|
9
|
-
filter = BacktraceFilter.new
|
|
10
|
-
location = filter.filtered(caller)[0]
|
|
11
|
-
warn "Mocha deprecation warning at #{location}: #{message}"
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
7
|
class << self
|
|
16
|
-
attr_writer :logger
|
|
17
|
-
|
|
18
8
|
def warning(message)
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def logger
|
|
23
|
-
@logger ||= Logger.new
|
|
9
|
+
Logger.warning(message, category: :deprecation)
|
|
24
10
|
end
|
|
25
11
|
end
|
|
26
12
|
end
|
data/lib/mocha/expectation.rb
CHANGED
|
@@ -646,10 +646,10 @@ module Mocha
|
|
|
646
646
|
end
|
|
647
647
|
|
|
648
648
|
# @private
|
|
649
|
-
attr_reader :
|
|
649
|
+
attr_reader :backtrace_locations
|
|
650
650
|
|
|
651
651
|
# @private
|
|
652
|
-
def initialize(mock, expected_method_name,
|
|
652
|
+
def initialize(mock, expected_method_name, backtrace_locations = nil)
|
|
653
653
|
@mock = mock
|
|
654
654
|
@method_matcher = MethodMatcher.new(expected_method_name.to_sym)
|
|
655
655
|
@parameters_matcher = ParametersMatcher.new
|
|
@@ -659,7 +659,7 @@ module Mocha
|
|
|
659
659
|
@cardinality = Cardinality.new.exactly(1)
|
|
660
660
|
@return_values = ReturnValues.new
|
|
661
661
|
@yield_parameters = YieldParameters.new
|
|
662
|
-
@
|
|
662
|
+
@backtrace_locations = backtrace_locations || caller_locations
|
|
663
663
|
end
|
|
664
664
|
|
|
665
665
|
# @private
|
|
@@ -760,10 +760,16 @@ module Mocha
|
|
|
760
760
|
strings.join
|
|
761
761
|
end
|
|
762
762
|
|
|
763
|
+
# @private
|
|
764
|
+
def backtrace
|
|
765
|
+
backtrace_locations.map(&:to_s)
|
|
766
|
+
end
|
|
767
|
+
|
|
763
768
|
# @private
|
|
764
769
|
def definition_location
|
|
765
770
|
filter = BacktraceFilter.new
|
|
766
|
-
filter.
|
|
771
|
+
location = filter.filtered_locations(backtrace_locations)[0]
|
|
772
|
+
"#{location.path}:#{location.lineno}"
|
|
767
773
|
end
|
|
768
774
|
end
|
|
769
775
|
end
|
data/lib/mocha/inspect.rb
CHANGED
|
@@ -52,22 +52,12 @@ module Mocha
|
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
include Mocha::Inspect::ObjectMethods
|
|
57
|
-
end
|
|
55
|
+
Object.include(Mocha::Inspect::ObjectMethods)
|
|
58
56
|
|
|
59
|
-
|
|
60
|
-
include Mocha::Inspect::ArrayMethods
|
|
61
|
-
end
|
|
57
|
+
Array.include(Mocha::Inspect::ArrayMethods)
|
|
62
58
|
|
|
63
|
-
|
|
64
|
-
include Mocha::Inspect::HashMethods
|
|
65
|
-
end
|
|
59
|
+
Hash.include(Mocha::Inspect::HashMethods)
|
|
66
60
|
|
|
67
|
-
|
|
68
|
-
include Mocha::Inspect::TimeMethods
|
|
69
|
-
end
|
|
61
|
+
Time.include(Mocha::Inspect::TimeMethods)
|
|
70
62
|
|
|
71
|
-
|
|
72
|
-
include Mocha::Inspect::DateMethods
|
|
73
|
-
end
|
|
63
|
+
Date.include(Mocha::Inspect::DateMethods)
|
data/lib/mocha/logger.rb
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'mocha/backtrace_filter'
|
|
4
|
+
|
|
3
5
|
module Mocha
|
|
4
6
|
class Logger
|
|
5
|
-
|
|
6
|
-
|
|
7
|
+
class << self
|
|
8
|
+
attr_writer :logger
|
|
9
|
+
|
|
10
|
+
def warning(*args, **kwargs)
|
|
11
|
+
logger.warning(*args, **kwargs)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def logger
|
|
15
|
+
@logger ||= new
|
|
16
|
+
end
|
|
7
17
|
end
|
|
8
18
|
|
|
9
|
-
def
|
|
10
|
-
|
|
19
|
+
def warning(message, category: nil)
|
|
20
|
+
filter = BacktraceFilter.new
|
|
21
|
+
location = filter.filtered_locations(caller_locations)[0]
|
|
22
|
+
prefix = ['Mocha', category, 'warning'].compact.join(' ')
|
|
23
|
+
warn("#{prefix}: #{message} (at #{location.path}:#{location.lineno})")
|
|
11
24
|
end
|
|
12
25
|
end
|
|
13
26
|
end
|
data/lib/mocha/mockery.rb
CHANGED
|
@@ -49,7 +49,6 @@ module Mocha
|
|
|
49
49
|
def setup(assertion_counter)
|
|
50
50
|
@instances ||= []
|
|
51
51
|
mockery = new(assertion_counter)
|
|
52
|
-
mockery.logger = instance.logger unless @instances.empty?
|
|
53
52
|
@instances.push(mockery)
|
|
54
53
|
end
|
|
55
54
|
|
|
@@ -149,12 +148,6 @@ module Mocha
|
|
|
149
148
|
check(:stubbing_method_on_non_mock_object, 'method on non-mock object', signature_proc)
|
|
150
149
|
end
|
|
151
150
|
|
|
152
|
-
attr_writer :logger
|
|
153
|
-
|
|
154
|
-
def logger
|
|
155
|
-
@logger ||= Logger.new($stderr)
|
|
156
|
-
end
|
|
157
|
-
|
|
158
151
|
private
|
|
159
152
|
|
|
160
153
|
def check(action, description, signature_proc, backtrace = caller)
|
|
@@ -165,7 +158,7 @@ module Mocha
|
|
|
165
158
|
message = "stubbing #{description}: #{method_signature}"
|
|
166
159
|
raise StubbingError.new(message, backtrace) if treatment == :prevent
|
|
167
160
|
|
|
168
|
-
|
|
161
|
+
Logger.warning(message) if treatment == :warn
|
|
169
162
|
end
|
|
170
163
|
|
|
171
164
|
def expectations
|
data/lib/mocha/stubbed_method.rb
CHANGED
data/lib/mocha/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mocha
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0
|
|
4
|
+
version: 3.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- James Mead
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: ruby2_keywords
|
|
@@ -146,7 +145,6 @@ metadata:
|
|
|
146
145
|
homepage_uri: https://mocha.jamesmead.org
|
|
147
146
|
source_code_uri: https://github.com/freerange/mocha
|
|
148
147
|
rubygems_mfa_required: 'true'
|
|
149
|
-
post_install_message:
|
|
150
148
|
rdoc_options: []
|
|
151
149
|
require_paths:
|
|
152
150
|
- lib
|
|
@@ -161,8 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
161
159
|
- !ruby/object:Gem::Version
|
|
162
160
|
version: '0'
|
|
163
161
|
requirements: []
|
|
164
|
-
rubygems_version:
|
|
165
|
-
signing_key:
|
|
162
|
+
rubygems_version: 4.0.3
|
|
166
163
|
specification_version: 4
|
|
167
164
|
summary: Mocking and stubbing library
|
|
168
165
|
test_files: []
|