mocha 0.14.0 → 1.0.0.alpha

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.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +28 -8
  3. data/RELEASE.md +40 -0
  4. data/bin/build-matrix +71 -0
  5. data/lib/mocha.rb +0 -7
  6. data/lib/mocha/any_instance_method.rb +2 -2
  7. data/lib/mocha/class_method.rb +5 -2
  8. data/lib/mocha/detection/mini_test.rb +25 -0
  9. data/lib/mocha/detection/test_unit.rb +29 -0
  10. data/lib/mocha/expectation_list.rb +6 -2
  11. data/lib/mocha/integration.rb +2 -2
  12. data/lib/mocha/integration/mini_test.rb +6 -11
  13. data/lib/mocha/integration/test_unit.rb +4 -9
  14. data/lib/mocha/mini_test.rb +3 -0
  15. data/lib/mocha/mock.rb +73 -8
  16. data/lib/mocha/mockery.rb +3 -2
  17. data/lib/mocha/object_methods.rb +4 -2
  18. data/lib/mocha/parameter_matchers/responds_with.rb +1 -1
  19. data/lib/mocha/receivers.rb +49 -0
  20. data/lib/mocha/setup.rb +0 -1
  21. data/lib/mocha/test_unit.rb +3 -0
  22. data/lib/mocha/unexpected_invocation.rb +10 -5
  23. data/lib/mocha/version.rb +1 -1
  24. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +34 -0
  25. data/test/acceptance/stub_any_instance_method_test.rb +1 -0
  26. data/test/acceptance/stub_class_method_defined_on_class_test.rb +3 -0
  27. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +40 -3
  28. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +3 -0
  29. data/test/acceptance/unexpected_invocation_test.rb +25 -0
  30. data/test/assertions.rb +6 -0
  31. data/test/integration/mini_test_test.rb +4 -18
  32. data/test/integration/test_unit_test.rb +2 -3
  33. data/test/test_helper.rb +6 -2
  34. data/test/test_runner.rb +22 -18
  35. data/test/unit/expectation_list_test.rb +11 -0
  36. data/test/unit/parameter_matchers/responds_with_test.rb +7 -0
  37. data/test/unit/receivers_test.rb +66 -0
  38. data/yard-templates/default/layout/html/google_analytics.erb +9 -9
  39. metadata +93 -109
  40. data/build-matrix.rb +0 -71
@@ -68,4 +68,15 @@ class ExpectationListTest < Mocha::TestCase
68
68
  assert_same expectation1, expectation_list.match_allowing_invocation(:my_method)
69
69
  end
70
70
 
71
+ def test_should_combine_two_expectation_lists_into_one
72
+ expectation_list1 = ExpectationList.new
73
+ expectation_list2 = ExpectationList.new
74
+ expectation1 = Expectation.new(nil, :my_method)
75
+ expectation2 = Expectation.new(nil, :my_method)
76
+ expectation_list1.add(expectation1)
77
+ expectation_list2.add(expectation2)
78
+ expectation_list = expectation_list1 + expectation_list2
79
+ assert_equal [expectation1, expectation2], expectation_list.to_a
80
+ end
81
+
71
82
  end
@@ -1,6 +1,7 @@
1
1
  require File.expand_path('../../../test_helper', __FILE__)
2
2
 
3
3
  require 'mocha/parameter_matchers/responds_with'
4
+ require 'mocha/parameter_matchers/object'
4
5
  require 'mocha/inspect'
5
6
 
6
7
  class RespondsWithTest < Mocha::TestCase
@@ -17,6 +18,12 @@ class RespondsWithTest < Mocha::TestCase
17
18
  assert !matcher.matches?(['bar'])
18
19
  end
19
20
 
21
+ def test_should_match_parameter_responding_with_nested_responds_with_matcher
22
+ matcher = responds_with(:foo, responds_with(:bar, 'baz'))
23
+ object = Class.new { def foo; Class.new { def bar; 'baz'; end }.new; end }.new
24
+ assert matcher.matches?([object])
25
+ end
26
+
20
27
  def test_should_describe_matcher
21
28
  matcher = responds_with(:foo, :bar)
22
29
  assert_equal 'responds_with(:foo, :bar)', matcher.mocha_inspect
@@ -0,0 +1,66 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+ require 'mocha/receivers'
3
+
4
+ class ObjectReceiverTest < Mocha::TestCase
5
+ include Mocha
6
+
7
+ class FakeObject < Struct.new(:mocha)
8
+ def is_a?(klass)
9
+ false
10
+ end
11
+ end
12
+
13
+ class FakeClass < Struct.new(:superclass, :mocha)
14
+ def is_a?(klass)
15
+ klass == Class
16
+ end
17
+ end
18
+
19
+ def test_mocks_returns_mock_for_object
20
+ object = FakeObject.new(:mocha)
21
+ receiver = ObjectReceiver.new(object)
22
+ assert_equal [:mocha], receiver.mocks
23
+ end
24
+
25
+ def test_mocks_returns_mocks_for_class_and_its_superclasses
26
+ grandparent = FakeClass.new(nil, :grandparent_mocha)
27
+ parent = FakeClass.new(grandparent, :parent_mocha)
28
+ klass = FakeClass.new(parent, :mocha)
29
+ receiver = ObjectReceiver.new(klass)
30
+ assert_equal [:mocha, :parent_mocha, :grandparent_mocha], receiver.mocks
31
+ end
32
+ end
33
+
34
+ class AnyInstanceReceiverTest < Mocha::TestCase
35
+ include Mocha
36
+
37
+ class FakeAnyInstanceClass
38
+ attr_reader :superclass
39
+
40
+ def initialize(superclass, mocha)
41
+ @superclass, @mocha = superclass, mocha
42
+ end
43
+
44
+ def any_instance
45
+ Struct.new(:mocha).new(@mocha)
46
+ end
47
+ end
48
+
49
+ def test_mocks_returns_mocks_for_class_and_its_superclasses
50
+ grandparent = FakeAnyInstanceClass.new(nil, :grandparent_mocha)
51
+ parent = FakeAnyInstanceClass.new(grandparent, :parent_mocha)
52
+ klass = FakeAnyInstanceClass.new(parent, :mocha)
53
+ receiver = AnyInstanceReceiver.new(klass)
54
+ assert_equal [:mocha, :parent_mocha, :grandparent_mocha], receiver.mocks
55
+ end
56
+ end
57
+
58
+ class DefaultReceiverTest < Mocha::TestCase
59
+ include Mocha
60
+
61
+ def test_mocks_returns_mock
62
+ mock = :mocha
63
+ receiver = DefaultReceiver.new(mock)
64
+ assert_equal [:mocha], receiver.mocks
65
+ end
66
+ end
@@ -1,11 +1,11 @@
1
1
  <script src="/javascripts/app.js" type="text/javascript" charset="utf-8"></script>
2
2
 
3
- <script type="text/javascript">
4
- var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
5
- document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
6
- </script>
7
- <script type="text/javascript">
8
- try {
9
- var pageTracker = _gat._getTracker("<%= ENV['GOOGLE_ANALYTICS_WEB_PROPERTY_ID'] %>");
10
- pageTracker._trackPageview();
11
- } catch(err) {}</script>
3
+ <script>
4
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
5
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
6
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
7
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
8
+
9
+ ga('create', '<%= ENV['GOOGLE_ANALYTICS_WEB_PROPERTY_ID'] %>', 'gofreerange.com');
10
+ ga('send', 'pageview');
11
+ </script>
metadata CHANGED
@@ -1,115 +1,101 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mocha
3
- version: !ruby/object:Gem::Version
4
- hash: 39
5
- prerelease:
6
- segments:
7
- - 0
8
- - 14
9
- - 0
10
- version: 0.14.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.alpha
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - James Mead
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2013-05-14 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ~>
26
- - !ruby/object:Gem::Version
27
- hash: 29
28
- segments:
29
- - 0
30
- - 0
31
- - 1
32
- version: 0.0.1
33
- version_requirements: *id001
11
+ date: 2013-12-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
34
14
  name: metaclass
35
- prerelease: false
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.1
36
20
  type: :runtime
37
- - !ruby/object:Gem::Dependency
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
47
- version_requirements: *id002
48
- name: rake
49
21
  prerelease: false
50
- type: :development
51
- - !ruby/object:Gem::Dependency
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ~>
56
- - !ruby/object:Gem::Version
57
- hash: 29
58
- segments:
59
- - 0
60
- - 0
61
- - 1
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
62
26
  version: 0.0.1
63
- version_requirements: *id003
64
- name: introspection
65
- prerelease: false
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
66
34
  type: :development
67
- - !ruby/object:Gem::Dependency
68
- requirement: &id004 !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
71
38
  - - ">="
72
- - !ruby/object:Gem::Version
73
- hash: 3
74
- segments:
75
- - 0
76
- version: "0"
77
- version_requirements: *id004
78
- name: yard
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: introspection
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.1
48
+ type: :development
79
49
  prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
80
62
  type: :development
81
- - !ruby/object:Gem::Dependency
82
- requirement: &id005 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ~>
86
- - !ruby/object:Gem::Version
87
- hash: 1
88
- segments:
89
- - 1
90
- version: "1"
91
- version_requirements: *id005
92
- name: redcarpet
93
63
  prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: redcarpet
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1'
94
76
  type: :development
95
- description: Mocking and stubbing library with JMock/SchMock syntax, which allows mocking and stubbing of methods on real (non-mock) classes.
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1'
83
+ description: Mocking and stubbing library with JMock/SchMock syntax, which allows
84
+ mocking and stubbing of methods on real (non-mock) classes.
96
85
  email: mocha-developer@googlegroups.com
97
86
  executables: []
98
-
99
87
  extensions: []
100
-
101
88
  extra_rdoc_files: []
102
-
103
- files:
104
- - .gemtest
105
- - .yardopts
89
+ files:
90
+ - ".gemtest"
91
+ - ".yardopts"
106
92
  - COPYING.md
107
93
  - Gemfile
108
94
  - MIT-LICENSE.md
109
95
  - README.md
110
96
  - RELEASE.md
111
97
  - Rakefile
112
- - build-matrix.rb
98
+ - bin/build-matrix
113
99
  - gemfiles/Gemfile.minitest.1.3.0
114
100
  - gemfiles/Gemfile.minitest.1.4.0
115
101
  - gemfiles/Gemfile.minitest.1.4.1
@@ -138,6 +124,8 @@ files:
138
124
  - lib/mocha/configuration.rb
139
125
  - lib/mocha/debug.rb
140
126
  - lib/mocha/deprecation.rb
127
+ - lib/mocha/detection/mini_test.rb
128
+ - lib/mocha/detection/test_unit.rb
141
129
  - lib/mocha/exception_raiser.rb
142
130
  - lib/mocha/expectation.rb
143
131
  - lib/mocha/expectation_error.rb
@@ -175,6 +163,7 @@ files:
175
163
  - lib/mocha/is_a.rb
176
164
  - lib/mocha/logger.rb
177
165
  - lib/mocha/method_matcher.rb
166
+ - lib/mocha/mini_test.rb
178
167
  - lib/mocha/mock.rb
179
168
  - lib/mocha/mockery.rb
180
169
  - lib/mocha/module_method.rb
@@ -207,6 +196,7 @@ files:
207
196
  - lib/mocha/parameter_matchers/yaml_equivalent.rb
208
197
  - lib/mocha/parameters_matcher.rb
209
198
  - lib/mocha/pretty_parameters.rb
199
+ - lib/mocha/receivers.rb
210
200
  - lib/mocha/return_values.rb
211
201
  - lib/mocha/sequence.rb
212
202
  - lib/mocha/setup.rb
@@ -215,6 +205,7 @@ files:
215
205
  - lib/mocha/standalone.rb
216
206
  - lib/mocha/state_machine.rb
217
207
  - lib/mocha/stubbing_error.rb
208
+ - lib/mocha/test_unit.rb
218
209
  - lib/mocha/thrower.rb
219
210
  - lib/mocha/unexpected_invocation.rb
220
211
  - lib/mocha/version.rb
@@ -244,6 +235,7 @@ files:
244
235
  - test/acceptance/return_value_test.rb
245
236
  - test/acceptance/sequence_test.rb
246
237
  - test/acceptance/states_test.rb
238
+ - test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb
247
239
  - test/acceptance/stub_any_instance_method_test.rb
248
240
  - test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb
249
241
  - test/acceptance/stub_class_method_defined_on_class_test.rb
@@ -276,7 +268,9 @@ files:
276
268
  - test/acceptance/stubbing_on_non_mock_object_test.rb
277
269
  - test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb
278
270
  - test/acceptance/throw_test.rb
271
+ - test/acceptance/unexpected_invocation_test.rb
279
272
  - test/acceptance/unstubbing_test.rb
273
+ - test/assertions.rb
280
274
  - test/deprecation_disabler.rb
281
275
  - test/execution_point.rb
282
276
  - test/integration/mini_test_test.rb
@@ -331,6 +325,7 @@ files:
331
325
  - test/unit/parameter_matchers/stub_matcher.rb
332
326
  - test/unit/parameter_matchers/yaml_equivalent_test.rb
333
327
  - test/unit/parameters_matcher_test.rb
328
+ - test/unit/receivers_test.rb
334
329
  - test/unit/return_values_test.rb
335
330
  - test/unit/sequence_test.rb
336
331
  - test/unit/single_return_value_test.rb
@@ -341,39 +336,28 @@ files:
341
336
  - test/unit/yield_parameters_test.rb
342
337
  - yard-templates/default/layout/html/google_analytics.erb
343
338
  - yard-templates/default/layout/html/setup.rb
344
- has_rdoc: yard
345
339
  homepage: http://gofreerange.com/mocha/docs
346
340
  licenses: []
347
-
341
+ metadata: {}
348
342
  post_install_message:
349
343
  rdoc_options: []
350
-
351
- require_paths:
344
+ require_paths:
352
345
  - lib
353
- required_ruby_version: !ruby/object:Gem::Requirement
354
- none: false
355
- requirements:
346
+ required_ruby_version: !ruby/object:Gem::Requirement
347
+ requirements:
356
348
  - - ">="
357
- - !ruby/object:Gem::Version
358
- hash: 3
359
- segments:
360
- - 0
361
- version: "0"
362
- required_rubygems_version: !ruby/object:Gem::Requirement
363
- none: false
364
- requirements:
349
+ - !ruby/object:Gem::Version
350
+ version: '0'
351
+ required_rubygems_version: !ruby/object:Gem::Requirement
352
+ requirements:
365
353
  - - ">="
366
- - !ruby/object:Gem::Version
367
- hash: 3
368
- segments:
369
- - 0
370
- version: "0"
354
+ - !ruby/object:Gem::Version
355
+ version: '0'
371
356
  requirements: []
372
-
373
357
  rubyforge_project: mocha
374
- rubygems_version: 1.6.2
358
+ rubygems_version: 2.2.0
375
359
  signing_key:
376
360
  specification_version: 3
377
361
  summary: Mocking and stubbing library
378
362
  test_files: []
379
-
363
+ has_rdoc: yard
@@ -1,71 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- def execute(*commands)
4
- commands.each do |command|
5
- system(command)
6
- unless $?.success?
7
- message = [
8
- "Executing shell command failed.",
9
- " Command: #{command}",
10
- " Status: #{$?.exitstatus}"
11
- ].join("\n")
12
- raise message
13
- end
14
- end
15
- end
16
-
17
- def reset_bundle
18
- execute(
19
- "rm -rf .bundle/gems",
20
- "rm -rf gemfiles/.bundle/gems",
21
- "rm -f *.lock",
22
- "rm -f gemfiles/*.lock"
23
- )
24
- end
25
-
26
- def with_rbenv(command)
27
- %{export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; #{command}}
28
- end
29
-
30
- def run(gemfile, task = "test")
31
- ENV["BUNDLE_GEMFILE"] = gemfile
32
- ENV["MOCHA_OPTIONS"] = "debug"
33
- ENV["MOCHA_NO_DOCS"] = "true"
34
- reset_bundle
35
- execute(
36
- with_rbenv("bundle install --gemfile=#{gemfile}"),
37
- with_rbenv("bundle exec rake #{task}")
38
- )
39
- end
40
-
41
- EXCLUDED_RUBY_193_GEMFILES = [
42
- "gemfiles/Gemfile.minitest.1.3.0",
43
- "gemfiles/Gemfile.minitest.1.4.0",
44
- "gemfiles/Gemfile.minitest.1.4.1",
45
- "gemfiles/Gemfile.minitest.1.4.2"
46
- ]
47
-
48
- RUBY_VERSIONS = ["1.8.7-p352", "1.9.3-p125-perf"]
49
-
50
- RUBY_VERSIONS.each do |ruby_version|
51
- execute("rbenv local #{ruby_version}")
52
- reset_bundle
53
- run("Gemfile")
54
- execute("rbenv local --unset")
55
- end
56
-
57
- RUBY_VERSIONS.each do |ruby_version|
58
- execute("rbenv local #{ruby_version}")
59
- ["test-unit", "minitest"].each do |test_library|
60
- reset_bundle
61
- (Dir["gemfiles/Gemfile.#{test_library}.*"] + ["Gemfile"]).each do |gemfile|
62
- ruby_version_without_patch = ruby_version.split("-")[0]
63
- next if (ruby_version_without_patch == "1.9.3") && EXCLUDED_RUBY_193_GEMFILES.include?(gemfile)
64
- next if (ruby_version_without_patch == "1.8.7") && (gemfile == "Gemfile") && (test_library == "minitest")
65
- p [ruby_version_without_patch, test_library, gemfile]
66
- ENV['MOCHA_RUN_INTEGRATION_TESTS'] = test_library
67
- run(gemfile)
68
- end
69
- end
70
- execute("rbenv local --unset")
71
- end