flexmock 1.3.2 → 1.3.3

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 (62) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile.lock +9 -9
  3. data/Rakefile +3 -1
  4. data/lib/flexmock.rb +1 -1
  5. data/lib/flexmock/argument_matchers.rb +1 -1
  6. data/lib/flexmock/argument_types.rb +1 -2
  7. data/lib/flexmock/base.rb +2 -1
  8. data/lib/flexmock/call_record.rb +30 -0
  9. data/lib/flexmock/call_validator.rb +68 -0
  10. data/lib/flexmock/composite_expectation.rb +56 -0
  11. data/lib/flexmock/core.rb +30 -64
  12. data/lib/flexmock/core_class_methods.rb +1 -1
  13. data/lib/flexmock/default_framework_adapter.rb +1 -1
  14. data/lib/flexmock/deprecated_methods.rb +8 -3
  15. data/lib/flexmock/errors.rb +1 -1
  16. data/lib/flexmock/expectation.rb +7 -84
  17. data/lib/flexmock/expectation_builder.rb +133 -0
  18. data/lib/flexmock/expectation_director.rb +6 -4
  19. data/lib/flexmock/expectation_recorder.rb +42 -0
  20. data/lib/flexmock/extensions/active_record_model.rb +109 -0
  21. data/lib/flexmock/mock_builder.rb +139 -0
  22. data/lib/flexmock/mock_container.rb +13 -214
  23. data/lib/flexmock/noop.rb +1 -1
  24. data/lib/flexmock/ordering.rb +1 -2
  25. data/lib/flexmock/partial_mock.rb +95 -57
  26. data/lib/flexmock/rails.rb +1 -1
  27. data/lib/flexmock/recorder.rb +4 -3
  28. data/lib/flexmock/rspec.rb +1 -1
  29. data/lib/flexmock/rspec_spy_matcher.rb +4 -0
  30. data/lib/flexmock/spy_describers.rb +22 -5
  31. data/lib/flexmock/test_unit.rb +2 -40
  32. data/lib/flexmock/test_unit_integration.rb +4 -4
  33. data/lib/flexmock/test_unit_testcase_extensions.rb +49 -0
  34. data/lib/flexmock/undefined.rb +1 -1
  35. data/lib/flexmock/validators.rb +18 -12
  36. data/lib/flexmock/version.rb +1 -1
  37. data/test/based_partials_test.rb +1 -1
  38. data/test/container_methods_test.rb +1 -1
  39. data/test/default_framework_adapter_test.rb +1 -1
  40. data/test/demeter_mocking_test.rb +52 -2
  41. data/test/deprecated_methods_test.rb +1 -1
  42. data/test/examples_from_readme_test.rb +1 -1
  43. data/test/expectation_description_test.rb +1 -1
  44. data/test/extended_should_receive_test.rb +1 -1
  45. data/test/mock_builder_test.rb +68 -0
  46. data/test/naming_test.rb +1 -1
  47. data/test/new_instances_test.rb +1 -1
  48. data/test/partial_mock_test.rb +23 -6
  49. data/test/record_mode_test.rb +1 -1
  50. data/test/rspec_integration/integration_spec.rb +1 -1
  51. data/test/samples_test.rb +1 -2
  52. data/test/should_ignore_missing_test.rb +1 -1
  53. data/test/should_receive_test.rb +1 -1
  54. data/test/test_setup.rb +17 -0
  55. data/test/test_unit_integration/auto_test_unit_test.rb +1 -1
  56. data/test/tu_integration_test.rb +1 -1
  57. data/test/undefined_test.rb +1 -1
  58. metadata +52 -52
  59. data/TAGS +0 -1056
  60. data/lib/flexmock/composite.rb +0 -10
  61. data/lib/flexmock/rails/view_mocking.rb +0 -144
  62. data/test/rails_view_stub_test.rb +0 -145
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -0,0 +1,68 @@
1
+ require 'test/test_setup'
2
+
3
+ class MockBuilderTest < Test::Unit::TestCase
4
+ include FlexMock::TestCase
5
+
6
+ def assert_method_name(name)
7
+ assert_match(FlexMock::ExpectationBuilder::METHOD_NAME_RE, name)
8
+ end
9
+
10
+ def assert_not_method_name(name)
11
+ refute_match(FlexMock::ExpectationBuilder::METHOD_NAME_RE, name)
12
+ end
13
+
14
+ def test_valid_method_names
15
+ assert_method_name "foo"
16
+ assert_method_name "FooBar"
17
+ assert_method_name "_foo"
18
+ assert_method_name "__foo"
19
+ assert_method_name "___foo"
20
+ assert_method_name "_"
21
+ assert_method_name "foo_bar"
22
+ assert_method_name "foo__bar"
23
+ assert_method_name "foo_bar_"
24
+ assert_method_name "foo12"
25
+ assert_method_name "foo_bar_12"
26
+ assert_method_name "foo?"
27
+ assert_method_name "foo!"
28
+ assert_method_name "foo="
29
+ assert_method_name "+"
30
+ assert_method_name "-"
31
+ assert_method_name "*"
32
+ assert_method_name "/"
33
+ assert_method_name "&"
34
+ assert_method_name "|"
35
+ assert_method_name "^"
36
+ assert_method_name "~"
37
+ assert_method_name "=~"
38
+ assert_method_name "!~"
39
+ assert_method_name "`"
40
+ assert_method_name "!"
41
+ assert_method_name "**"
42
+ assert_method_name "+@"
43
+ assert_method_name "-@"
44
+ assert_method_name "=="
45
+ assert_method_name "!="
46
+ assert_method_name "==="
47
+ assert_method_name "<="
48
+ assert_method_name ">="
49
+ assert_method_name "<"
50
+ assert_method_name ">"
51
+ assert_method_name "<=>"
52
+ assert_method_name "[]"
53
+ assert_method_name "[]="
54
+ end
55
+
56
+ def test_invalid_method_names
57
+ assert_not_method_name ""
58
+ assert_not_method_name "1"
59
+ assert_not_method_name "1foo"
60
+ assert_not_method_name "foo!!"
61
+ assert_not_method_name "foo!?"
62
+ assert_not_method_name "foo?="
63
+ assert_not_method_name "foo@"
64
+ assert_not_method_name "++"
65
+ assert_not_method_name "!!"
66
+ assert_not_method_name "~="
67
+ end
68
+ end
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -41,9 +41,25 @@ class TestStubbing < Test::Unit::TestCase
41
41
  assert ! m.instance_variables.include?(:@flexmock_proxy.flexmock_as_name)
42
42
  end
43
43
 
44
- def test_stub_command_add_behavior_to_arbitrary_objects
44
+ def test_forcibly_removing_proxy_causes_failure
45
45
  obj = Object.new
46
- flexmock(obj).should_receive(:hi).once.and_return(:stub_hi)
46
+ flexmock(obj)
47
+ obj.instance_eval { @flexmock_proxy = nil }
48
+ assert_raises(RuntimeError, /missing.*proxy/i) do
49
+ obj.should_receive(:hi).and_return(:stub_hi)
50
+ end
51
+ end
52
+
53
+ def test_stub_command_add_behavior_to_arbitrary_objects_via_flexmock
54
+ obj = Object.new
55
+ flexmock(obj).should_receive(:hi).and_return(:stub_hi)
56
+ assert_equal :stub_hi, obj.hi
57
+ end
58
+
59
+ def test_stub_command_add_behavior_to_arbitrary_objects_post_flexmock
60
+ obj = Object.new
61
+ flexmock(obj)
62
+ obj.should_receive(:hi).and_return(:stub_hi)
47
63
  assert_equal :stub_hi, obj.hi
48
64
  end
49
65
 
@@ -64,7 +80,9 @@ class TestStubbing < Test::Unit::TestCase
64
80
 
65
81
  def test_multiple_stubs_on_the_same_object_reuse_the_same_partial_mock
66
82
  obj = Object.new
67
- assert_equal flexmock(obj), flexmock(obj)
83
+ a = flexmock(obj)
84
+ b = flexmock(obj)
85
+ assert_equal a.object_id, b.object_id
68
86
  end
69
87
 
70
88
  def test_stubbed_methods_can_invoke_original_behavior_directly
@@ -189,8 +207,7 @@ class TestStubbing < Test::Unit::TestCase
189
207
  assert out.is_a?(IO)
190
208
  out.puts "XYZ"
191
209
  end
192
- text = nil
193
- File.open("dummy.txt") { |f| text = f.read }
210
+ text = File.open("dummy.txt") { |f| f.read }
194
211
  assert_equal "XYZ\n", text
195
212
  ensure
196
213
  FileUtils.rm_f("dummy.txt")
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -126,7 +126,6 @@ class TestDefaults < Test::Unit::TestCase
126
126
 
127
127
  def test_something_where_bark_must_be_called_once
128
128
  @mock_dog.should_receive(:bark => "bow wow").once
129
-
130
129
  assert_equal "bow wow", @mock_dog.bark
131
130
  assert_equal :a_tail, @mock_dog.tail
132
131
  end
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -66,10 +66,27 @@ class FlexMock
66
66
  ex
67
67
  end
68
68
 
69
+ unless defined?(refute_match)
70
+ def refute_match(*args)
71
+ assert_no_match(*args)
72
+ end
73
+ end
74
+
69
75
  def assert_with_block(msg=nil)
70
76
  unless yield
71
77
  assert(false, msg || "Expected block to yield true")
72
78
  end
73
79
  end
80
+
81
+ def pending(msg="")
82
+ state = "PASSING"
83
+ begin
84
+ yield
85
+ rescue Exception => _
86
+ state = "FAILING"
87
+ end
88
+ where = caller.first.split(/:in/).first
89
+ puts "\n#{state} PENDING TEST (#{msg}) #{where}"
90
+ end
74
91
  end
75
92
  end
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #---
4
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
+ # Copyright 2003-2013 by Jim Weirich (jim.weirich@gmail.com).
5
5
  # All rights reserved.
6
6
 
7
7
  # Permission is granted for use, copying, modification, distribution,
metadata CHANGED
@@ -1,17 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flexmock
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
5
- prerelease:
4
+ version: 1.3.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jim Weirich
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-07 00:00:00.000000000 Z
11
+ date: 2014-01-20 00:00:00.000000000 Z
13
12
  dependencies: []
14
- description: ! "\n FlexMock is a extremely simple mock object class compatible\n
13
+ description: "\n FlexMock is a extremely simple mock object class compatible\n
15
14
  \ with the Test::Unit framework. Although the FlexMock's\n interface is
16
15
  simple, it is very flexible.\n "
17
16
  email: jim.weirich@gmail.com
@@ -55,29 +54,65 @@ files:
55
54
  - Gemfile.lock
56
55
  - README.md
57
56
  - Rakefile
58
- - TAGS
57
+ - doc/GoogleExample.rdoc
58
+ - doc/examples/rspec_examples_spec.rdoc
59
+ - doc/examples/test_unit_examples_test.rdoc
60
+ - doc/index.rdoc
61
+ - doc/releases/flexmock-0.4.0.rdoc
62
+ - doc/releases/flexmock-0.4.1.rdoc
63
+ - doc/releases/flexmock-0.4.2.rdoc
64
+ - doc/releases/flexmock-0.4.3.rdoc
65
+ - doc/releases/flexmock-0.5.0.rdoc
66
+ - doc/releases/flexmock-0.5.1.rdoc
67
+ - doc/releases/flexmock-0.6.0.rdoc
68
+ - doc/releases/flexmock-0.6.1.rdoc
69
+ - doc/releases/flexmock-0.6.2.rdoc
70
+ - doc/releases/flexmock-0.6.3.rdoc
71
+ - doc/releases/flexmock-0.6.4.rdoc
72
+ - doc/releases/flexmock-0.7.0.rdoc
73
+ - doc/releases/flexmock-0.7.1.rdoc
74
+ - doc/releases/flexmock-0.8.0.rdoc
75
+ - doc/releases/flexmock-0.8.2.rdoc
76
+ - doc/releases/flexmock-0.8.3.rdoc
77
+ - doc/releases/flexmock-0.8.4.rdoc
78
+ - doc/releases/flexmock-0.8.5.rdoc
79
+ - doc/releases/flexmock-0.9.0.rdoc
80
+ - doc/releases/flexmock-1.0.0.rdoc
81
+ - doc/releases/flexmock-1.0.3.rdoc
82
+ - doc/releases/flexmock-1.0.4.rdoc
83
+ - doc/releases/flexmock-1.1.0.rdoc
84
+ - doc/releases/flexmock-1.2.0.rdoc
85
+ - doc/releases/flexmock-1.3.0.rdoc
86
+ - doc/releases/flexmock-1.3.1.rdoc
87
+ - flexmock.blurb
88
+ - install.rb
59
89
  - lib/flexmock.rb
60
90
  - lib/flexmock/argument_matchers.rb
61
91
  - lib/flexmock/argument_matching.rb
62
92
  - lib/flexmock/argument_types.rb
63
93
  - lib/flexmock/base.rb
94
+ - lib/flexmock/call_record.rb
95
+ - lib/flexmock/call_validator.rb
64
96
  - lib/flexmock/class_extensions.rb
65
- - lib/flexmock/composite.rb
97
+ - lib/flexmock/composite_expectation.rb
66
98
  - lib/flexmock/core.rb
67
99
  - lib/flexmock/core_class_methods.rb
68
100
  - lib/flexmock/default_framework_adapter.rb
69
101
  - lib/flexmock/deprecated_methods.rb
70
102
  - lib/flexmock/errors.rb
71
103
  - lib/flexmock/expectation.rb
104
+ - lib/flexmock/expectation_builder.rb
72
105
  - lib/flexmock/expectation_director.rb
106
+ - lib/flexmock/expectation_recorder.rb
73
107
  - lib/flexmock/explicit_needed.rb
108
+ - lib/flexmock/extensions/active_record_model.rb
109
+ - lib/flexmock/mock_builder.rb
74
110
  - lib/flexmock/mock_container.rb
75
111
  - lib/flexmock/noop.rb
76
112
  - lib/flexmock/object_extensions.rb
77
113
  - lib/flexmock/ordering.rb
78
114
  - lib/flexmock/partial_mock.rb
79
115
  - lib/flexmock/rails.rb
80
- - lib/flexmock/rails/view_mocking.rb
81
116
  - lib/flexmock/recorder.rb
82
117
  - lib/flexmock/rspec.rb
83
118
  - lib/flexmock/rspec/configure.rb
@@ -87,6 +122,7 @@ files:
87
122
  - lib/flexmock/test_unit.rb
88
123
  - lib/flexmock/test_unit_assert_spy_called.rb
89
124
  - lib/flexmock/test_unit_integration.rb
125
+ - lib/flexmock/test_unit_testcase_extensions.rb
90
126
  - lib/flexmock/undefined.rb
91
127
  - lib/flexmock/validators.rb
92
128
  - lib/flexmock/version.rb
@@ -102,11 +138,11 @@ files:
102
138
  - test/expectation_description_test.rb
103
139
  - test/extended_should_receive_test.rb
104
140
  - test/flexmodel_test.rb
141
+ - test/mock_builder_test.rb
105
142
  - test/naming_test.rb
106
143
  - test/new_instances_test.rb
107
144
  - test/object_extensions_test.rb
108
145
  - test/partial_mock_test.rb
109
- - test/rails_view_stub_test.rb
110
146
  - test/record_mode_test.rb
111
147
  - test/redirect_error.rb
112
148
  - test/rspec_integration/integration_spec.rb
@@ -122,68 +158,32 @@ files:
122
158
  - test/test_unit_integration/minitest_teardown_test.rb
123
159
  - test/tu_integration_test.rb
124
160
  - test/undefined_test.rb
125
- - flexmock.blurb
126
- - install.rb
127
- - doc/index.rdoc
128
- - doc/GoogleExample.rdoc
129
- - doc/releases/flexmock-0.4.0.rdoc
130
- - doc/releases/flexmock-0.4.1.rdoc
131
- - doc/releases/flexmock-0.4.2.rdoc
132
- - doc/releases/flexmock-0.4.3.rdoc
133
- - doc/releases/flexmock-0.5.0.rdoc
134
- - doc/releases/flexmock-0.5.1.rdoc
135
- - doc/releases/flexmock-0.6.0.rdoc
136
- - doc/releases/flexmock-0.6.1.rdoc
137
- - doc/releases/flexmock-0.6.2.rdoc
138
- - doc/releases/flexmock-0.6.3.rdoc
139
- - doc/releases/flexmock-0.6.4.rdoc
140
- - doc/releases/flexmock-0.7.0.rdoc
141
- - doc/releases/flexmock-0.7.1.rdoc
142
- - doc/releases/flexmock-0.8.0.rdoc
143
- - doc/releases/flexmock-0.8.2.rdoc
144
- - doc/releases/flexmock-0.8.3.rdoc
145
- - doc/releases/flexmock-0.8.4.rdoc
146
- - doc/releases/flexmock-0.8.5.rdoc
147
- - doc/releases/flexmock-0.9.0.rdoc
148
- - doc/releases/flexmock-1.0.0.rdoc
149
- - doc/releases/flexmock-1.0.3.rdoc
150
- - doc/releases/flexmock-1.0.4.rdoc
151
- - doc/releases/flexmock-1.1.0.rdoc
152
- - doc/releases/flexmock-1.2.0.rdoc
153
- - doc/releases/flexmock-1.3.0.rdoc
154
- - doc/releases/flexmock-1.3.1.rdoc
155
- - doc/examples/rspec_examples_spec.rdoc
156
- - doc/examples/test_unit_examples_test.rdoc
157
161
  homepage: https://github.com/jimweirich/flexmock
158
162
  licenses: []
163
+ metadata: {}
159
164
  post_install_message:
160
165
  rdoc_options:
161
- - --title
166
+ - "--title"
162
167
  - FlexMock
163
- - --main
168
+ - "--main"
164
169
  - README.rdoc
165
- - --line-numbers
170
+ - "--line-numbers"
166
171
  require_paths:
167
172
  - lib
168
173
  required_ruby_version: !ruby/object:Gem::Requirement
169
- none: false
170
174
  requirements:
171
- - - ! '>='
175
+ - - ">="
172
176
  - !ruby/object:Gem::Version
173
177
  version: '0'
174
- segments:
175
- - 0
176
- hash: 1970361257981767370
177
178
  required_rubygems_version: !ruby/object:Gem::Requirement
178
- none: false
179
179
  requirements:
180
- - - ! '>='
180
+ - - ">="
181
181
  - !ruby/object:Gem::Version
182
182
  version: '0'
183
183
  requirements: []
184
184
  rubyforge_project:
185
- rubygems_version: 1.8.24
185
+ rubygems_version: 2.2.0
186
186
  signing_key:
187
- specification_version: 3
187
+ specification_version: 4
188
188
  summary: Simple and Flexible Mock Objects for Testing
189
189
  test_files: []