mocha 1.12.0 → 1.13.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/CONTRIBUTING.md +1 -1
- data/README.md +2 -2
- data/RELEASE.md +24 -0
- data/Rakefile +1 -1
- data/lib/mocha/inspect.rb +6 -4
- data/lib/mocha/parameter_matchers.rb +1 -0
- data/lib/mocha/parameter_matchers/has_entry.rb +22 -13
- data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
- data/lib/mocha/version.rb +1 -1
- data/mocha.gemspec +10 -6
- metadata +3 -16
- data/bin/build-matrix +0 -82
- data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
- data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
- data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
- data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
- data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
- data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
- data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
- data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
- data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
- data/gemfiles/Gemfile.minitest.5.11.3 +0 -7
- data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
- data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
- data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77366bffa410729ac6089097db85ded323e74d1ec7bc6eb0ea13ae4a18b44eac
|
4
|
+
data.tar.gz: f9f3c89bbc29393e99ec62e0d1395ed4fa4863d0f790d24bbe6be3537450e4c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91e277be3c868ef2f6655016a53f040835b8e9d6390c789b6f047be72e9b96726865eefcb161b86d0f8e89ead1c58e9adbf1a1cbcdf9cba8a0f0b536de86222d
|
7
|
+
data.tar.gz: 4b7bf751e350762a5a3d9cd17fbe1a590ff5122a718417b75304fa86f8323b20652a24584cedabd859395aeef004402e57c70c15cd88746032659b0d9df4cccf
|
data/CONTRIBUTING.md
CHANGED
@@ -3,5 +3,5 @@
|
|
3
3
|
* Make your changes in a branch.
|
4
4
|
* Add/modify/remove tests as appropriate.
|
5
5
|
* Open a pull request based on a branch on your fork.
|
6
|
-
* Wait for your pull request build to pass on [
|
6
|
+
* Wait for your pull request build to pass on [Circle CI](https://app.circleci.com/pipelines/github/freerange/mocha).
|
7
7
|
* Pull requests with failing tests will not be accepted.
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
## Mocha [](https://app.circleci.com/pipelines/github/freerange/mocha) [](http://badge.fury.io/rb/mocha) [](https://dependabot.com/compatibility-score.html?dependency-name=mocha&package-manager=bundler&version-scheme=semver)
|
2
2
|
|
3
3
|
### Description
|
4
4
|
|
@@ -323,7 +323,7 @@ See this [list of contributors](https://github.com/freerange/mocha/graphs/contri
|
|
323
323
|
* Update the RELEASE.md file with a summary of changes
|
324
324
|
* Bump the version in `lib/mocha/version.rb`
|
325
325
|
* Commit & push to GitHub
|
326
|
-
* Check
|
326
|
+
* Check CircleCI build is passing - https://app.circleci.com/pipelines/github/freerange/mocha
|
327
327
|
|
328
328
|
* Sign in to Google Analytics - https://analytics.google.com/analytics/web/
|
329
329
|
* Find the web property ID for floehopper (625523) > Mocha Documentation (UA-625523-7)
|
data/RELEASE.md
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
# Release Notes
|
2
2
|
|
3
|
+
## 1.13.0
|
4
|
+
|
5
|
+
### External changes
|
6
|
+
|
7
|
+
* Add `ParameterMatchers#has_keys` - thanks to @cstyles for #512 (18d8104)
|
8
|
+
* Fix misleading exception message in `ParameterMatchers#has_entry` - thanks to @cstyles for #513 (9c4ef13)
|
9
|
+
* Only add dependency on rubocop if we're actually going to use it (f2f879f)
|
10
|
+
* Fix rake dependency constraints for older Ruby versions (7ce5f29)
|
11
|
+
|
12
|
+
### Internal changes
|
13
|
+
|
14
|
+
* Check documentation can be generated as part of CircleCI build (b30d9a9)
|
15
|
+
* Add --fail-on-warning option to yard rake task (53a6ee3)
|
16
|
+
* Add a weekly scheduled build to the CircleCI build (fd2a4c6)
|
17
|
+
* Add Ruby v1.8 to the CircleCI build matrix (818ca03)
|
18
|
+
* Add API token to fix CircleCI badge in README (607c5aa)
|
19
|
+
* Provide wrapped option for #mocha_inspect on hashes & arrays (d8f44bc)
|
20
|
+
* Use CircleCI instead of TravisCI for automated builds (c98c6ec)
|
21
|
+
* Switch to newer default Travis CI build env (c78f75c)
|
22
|
+
* Use latest Ruby versions in Travis CI builds (9e0043a)
|
23
|
+
* Use latest JRuby v9.2.18 in Travis CI builds (8c99a1b)
|
24
|
+
* Use consistent JRuby versions in Travis CI builds (0f849aa)
|
25
|
+
* Use more recent version of JRuby in Travis CI build matrix (58653db)
|
26
|
+
|
3
27
|
## 1.12.0
|
4
28
|
|
5
29
|
### External changes
|
data/Rakefile
CHANGED
@@ -138,7 +138,7 @@ if ENV['MOCHA_GENERATE_DOCS']
|
|
138
138
|
|
139
139
|
desc 'Generate documentation'
|
140
140
|
YARD::Rake::YardocTask.new('yardoc' => 'docs_environment') do |task|
|
141
|
-
task.options = ['--title', "Mocha #{Mocha::VERSION}"]
|
141
|
+
task.options = ['--title', "Mocha #{Mocha::VERSION}", '--fail-on-warning']
|
142
142
|
end
|
143
143
|
|
144
144
|
task 'checkout_docs_cname' do
|
data/lib/mocha/inspect.rb
CHANGED
@@ -11,14 +11,16 @@ module Mocha
|
|
11
11
|
end
|
12
12
|
|
13
13
|
module ArrayMethods
|
14
|
-
def mocha_inspect
|
15
|
-
|
14
|
+
def mocha_inspect(wrapped = true)
|
15
|
+
unwrapped = collect(&:mocha_inspect).join(', ')
|
16
|
+
wrapped ? "[#{unwrapped}]" : unwrapped
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
19
20
|
module HashMethods
|
20
|
-
def mocha_inspect
|
21
|
-
|
21
|
+
def mocha_inspect(wrapped = true)
|
22
|
+
unwrapped = collect { |key, value| "#{key.mocha_inspect} => #{value.mocha_inspect}" }.join(', ')
|
23
|
+
wrapped ? "{#{unwrapped}}" : unwrapped
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
@@ -13,6 +13,7 @@ require 'mocha/parameter_matchers/equals'
|
|
13
13
|
require 'mocha/parameter_matchers/has_entry'
|
14
14
|
require 'mocha/parameter_matchers/has_entries'
|
15
15
|
require 'mocha/parameter_matchers/has_key'
|
16
|
+
require 'mocha/parameter_matchers/has_keys'
|
16
17
|
require 'mocha/parameter_matchers/has_value'
|
17
18
|
require 'mocha/parameter_matchers/includes'
|
18
19
|
require 'mocha/parameter_matchers/instance_of'
|
@@ -42,20 +42,10 @@ module Mocha
|
|
42
42
|
#
|
43
43
|
def has_entry(*options) # rubocop:disable Naming/PredicateName
|
44
44
|
case options.length
|
45
|
+
when 0
|
46
|
+
raise ArgumentError, 'No arguments. Expecting at least one.'
|
45
47
|
when 1
|
46
|
-
|
47
|
-
when Hash
|
48
|
-
case options[0].length
|
49
|
-
when 0
|
50
|
-
raise ArgumentError, 'Argument has no entries.'
|
51
|
-
when 1
|
52
|
-
key, value = options[0].first
|
53
|
-
else
|
54
|
-
raise ArgumentError, 'Argument has multiple entries. Use Mocha::ParameterMatchers#has_entries instead.'
|
55
|
-
end
|
56
|
-
else
|
57
|
-
raise ArgumentError, 'Argument is not a Hash.'
|
58
|
-
end
|
48
|
+
key, value = parse_option(options[0])
|
59
49
|
when 2
|
60
50
|
key, value = options
|
61
51
|
else
|
@@ -85,5 +75,24 @@ module Mocha
|
|
85
75
|
"has_entry(#{@key.mocha_inspect} => #{@value.mocha_inspect})"
|
86
76
|
end
|
87
77
|
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
# @private
|
82
|
+
def parse_option(option)
|
83
|
+
case option
|
84
|
+
when Hash
|
85
|
+
case option.length
|
86
|
+
when 0
|
87
|
+
raise ArgumentError, 'Argument has no entries.'
|
88
|
+
when 1
|
89
|
+
option.first
|
90
|
+
else
|
91
|
+
raise ArgumentError, 'Argument has multiple entries. Use Mocha::ParameterMatchers#has_entries instead.'
|
92
|
+
end
|
93
|
+
else
|
94
|
+
raise ArgumentError, 'Argument is not a Hash.'
|
95
|
+
end
|
96
|
+
end
|
88
97
|
end
|
89
98
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
module ParameterMatchers
|
5
|
+
# Matches +Hash+ containing +keys+.
|
6
|
+
#
|
7
|
+
# @param [*Array<Object>] keys expected keys.
|
8
|
+
# @return [HasKeys] parameter matcher.
|
9
|
+
#
|
10
|
+
# @see Expectation#with
|
11
|
+
#
|
12
|
+
# @example Actual parameter contains entry with expected keys.
|
13
|
+
# object = mock()
|
14
|
+
# object.expects(:method_1).with(has_keys(:key_1, :key_2))
|
15
|
+
# object.method_1(:key_1 => 1, :key_2 => 2, :key_3 => 3)
|
16
|
+
# # no error raised
|
17
|
+
#
|
18
|
+
# @example Actual parameter does not contain all expected keys.
|
19
|
+
# object = mock()
|
20
|
+
# object.expects(:method_1).with(has_keys(:key_1, :key_2))
|
21
|
+
# object.method_1(:key_2 => 2)
|
22
|
+
# # error raised, because method_1 was not called with Hash containing key: :key_1
|
23
|
+
#
|
24
|
+
def has_keys(*keys) # rubocop:disable Naming/PredicateName
|
25
|
+
HasKeys.new(*keys)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Parameter matcher which matches when actual parameter contains +Hash+ with all expected keys.
|
29
|
+
class HasKeys < Base
|
30
|
+
# @private
|
31
|
+
def initialize(*keys)
|
32
|
+
raise ArgumentError, 'No arguments. Expecting at least one.' if keys.empty?
|
33
|
+
|
34
|
+
@keys = keys
|
35
|
+
end
|
36
|
+
|
37
|
+
# @private
|
38
|
+
def matches?(available_parameters)
|
39
|
+
parameter = available_parameters.shift
|
40
|
+
return false unless parameter.respond_to?(:keys)
|
41
|
+
|
42
|
+
@keys.map(&:to_matcher).all? do |matcher|
|
43
|
+
parameter.keys.any? { |key| matcher.matches?([key]) }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# @private
|
48
|
+
def mocha_inspect
|
49
|
+
"has_keys(#{@keys.mocha_inspect(false)})"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/mocha/version.rb
CHANGED
data/mocha.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s| # rubocop:disable Metrics/BlockLength
|
|
15
15
|
s.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
16
16
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(docs|test)/}) }
|
17
17
|
end
|
18
|
-
s.files.delete('.
|
18
|
+
s.files.delete('.circleci/config.yml')
|
19
19
|
s.files.delete('.gitignore')
|
20
20
|
|
21
21
|
s.homepage = 'https://mocha.jamesmead.org'
|
@@ -30,18 +30,22 @@ Gem::Specification.new do |s| # rubocop:disable Metrics/BlockLength
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
if RUBY_VERSION
|
34
|
-
s.add_development_dependency
|
33
|
+
if RUBY_VERSION < '1.9.3'
|
34
|
+
s.add_development_dependency 'rake', '~> 10.0'
|
35
|
+
elsif RUBY_VERSION < '2'
|
36
|
+
s.add_development_dependency 'rake', '~> 12.2.1'
|
37
|
+
elsif RUBY_VERSION < '2.2'
|
38
|
+
s.add_development_dependency 'rake', '~> 12.3.3'
|
35
39
|
else
|
36
|
-
|
37
|
-
s.add_development_dependency('rake', '~> 10.0')
|
40
|
+
s.add_development_dependency 'rake'
|
38
41
|
end
|
42
|
+
|
39
43
|
s.add_development_dependency('introspection', '~> 0.0.1')
|
40
44
|
if RUBY_VERSION >= '2.2.0'
|
41
45
|
# No test libraries in standard library
|
42
46
|
s.add_development_dependency('minitest')
|
43
47
|
end
|
44
|
-
if RUBY_VERSION >= '
|
48
|
+
if RUBY_VERSION >= '2.2.0'
|
45
49
|
s.add_development_dependency('rubocop', '<= 0.58.2')
|
46
50
|
end
|
47
51
|
if ENV['MOCHA_GENERATE_DOCS']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mocha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Mead
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -85,21 +85,7 @@ files:
|
|
85
85
|
- README.md
|
86
86
|
- RELEASE.md
|
87
87
|
- Rakefile
|
88
|
-
- bin/build-matrix
|
89
|
-
- gemfiles/Gemfile.minitest.1.3.0
|
90
|
-
- gemfiles/Gemfile.minitest.1.4.0
|
91
|
-
- gemfiles/Gemfile.minitest.1.4.1
|
92
|
-
- gemfiles/Gemfile.minitest.1.4.2
|
93
|
-
- gemfiles/Gemfile.minitest.2.0.0
|
94
|
-
- gemfiles/Gemfile.minitest.2.0.1
|
95
|
-
- gemfiles/Gemfile.minitest.2.11.0
|
96
|
-
- gemfiles/Gemfile.minitest.2.11.2
|
97
|
-
- gemfiles/Gemfile.minitest.2.3.0
|
98
|
-
- gemfiles/Gemfile.minitest.5.11.3
|
99
88
|
- gemfiles/Gemfile.minitest.latest
|
100
|
-
- gemfiles/Gemfile.test-unit.2.0.0
|
101
|
-
- gemfiles/Gemfile.test-unit.2.0.1
|
102
|
-
- gemfiles/Gemfile.test-unit.2.0.3
|
103
89
|
- gemfiles/Gemfile.test-unit.latest
|
104
90
|
- init.rb
|
105
91
|
- lib/mocha.rb
|
@@ -174,6 +160,7 @@ files:
|
|
174
160
|
- lib/mocha/parameter_matchers/has_entries.rb
|
175
161
|
- lib/mocha/parameter_matchers/has_entry.rb
|
176
162
|
- lib/mocha/parameter_matchers/has_key.rb
|
163
|
+
- lib/mocha/parameter_matchers/has_keys.rb
|
177
164
|
- lib/mocha/parameter_matchers/has_value.rb
|
178
165
|
- lib/mocha/parameter_matchers/includes.rb
|
179
166
|
- lib/mocha/parameter_matchers/instance_methods.rb
|
data/bin/build-matrix
DELETED
@@ -1,82 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'yaml'
|
4
|
-
require 'set'
|
5
|
-
require 'English'
|
6
|
-
|
7
|
-
def execute(*commands)
|
8
|
-
commands.each do |command|
|
9
|
-
system(command)
|
10
|
-
next if $CHILD_STATUS.success?
|
11
|
-
message = [
|
12
|
-
'Executing shell command failed.',
|
13
|
-
" Command: #{command}",
|
14
|
-
" Status: #{$CHILD_STATUS.exitstatus}"
|
15
|
-
].join("\n")
|
16
|
-
raise message
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def reset_bundle
|
21
|
-
execute(
|
22
|
-
'rm -rf .bundle/gems',
|
23
|
-
'rm -rf gemfiles/.bundle/gems',
|
24
|
-
'rm -f *.lock',
|
25
|
-
'rm -f gemfiles/*.lock'
|
26
|
-
)
|
27
|
-
end
|
28
|
-
|
29
|
-
def with_rbenv(command)
|
30
|
-
%{export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; #{command}}
|
31
|
-
end
|
32
|
-
|
33
|
-
def run(ruby_version, gemfile, task = 'test')
|
34
|
-
ENV['RBENV_VERSION'] = ruby_version
|
35
|
-
ENV['BUNDLE_GEMFILE'] = gemfile
|
36
|
-
ENV['MOCHA_OPTIONS'] = 'debug'
|
37
|
-
reset_bundle
|
38
|
-
execute(
|
39
|
-
with_rbenv("bundle install --gemfile=#{gemfile}"),
|
40
|
-
with_rbenv("bundle exec rake #{task}")
|
41
|
-
)
|
42
|
-
end
|
43
|
-
|
44
|
-
AVAILABLE_RUBY_VERSIONS = `rbenv versions --bare`.split("\n")
|
45
|
-
|
46
|
-
travis_config = YAML.safe_load(File.read('.travis.yml'))
|
47
|
-
build_configs = travis_config['matrix']['include']
|
48
|
-
travis_config['rvm'].each do |ruby_version|
|
49
|
-
travis_config['gemfile'].each do |gemfile|
|
50
|
-
travis_config['env'].each do |env|
|
51
|
-
build_configs << { 'rvm' => ruby_version, 'gemfile' => gemfile, 'env' => env }
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
missing_ruby_versions = Set.new
|
57
|
-
|
58
|
-
build_configs.each do |config|
|
59
|
-
ruby_version = config['rvm']
|
60
|
-
gemfile = config['gemfile']
|
61
|
-
environment_variables = Hash[*config['env'].split.flat_map { |e| e.split('=') }]
|
62
|
-
original_environment_variables = {}
|
63
|
-
begin
|
64
|
-
environment_variables.each do |k, v|
|
65
|
-
original_environment_variables[k] = ENV[k]
|
66
|
-
ENV[k] = v
|
67
|
-
end
|
68
|
-
if AVAILABLE_RUBY_VERSIONS.include?(ruby_version)
|
69
|
-
puts
|
70
|
-
puts "Ruby v#{ruby_version}; Gemfile path: #{gemfile}; Environment: #{environment_variables}"
|
71
|
-
run(ruby_version, gemfile)
|
72
|
-
else
|
73
|
-
missing_ruby_versions << ruby_version
|
74
|
-
end
|
75
|
-
ensure
|
76
|
-
original_environment_variables.each do |k, v|
|
77
|
-
ENV[k] = v
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
puts "Missing Ruby versions: #{missing_ruby_versions.to_a.join(', ')}"
|