synthesis 0.0.14 → 0.0.15

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.
data/README CHANGED
@@ -42,7 +42,7 @@ To use with Test::Unit and Mocha, ignoring Array and Hash:
42
42
 
43
43
  Synthesis::Task.new do |t|
44
44
  t.pattern = 'test/unit/**/*_test.rb'
45
- t.ignored = %w[Array, Hash]
45
+ t.ignored = [Array, Hash]
46
46
  end
47
47
 
48
48
  To use with RSpec, running all specs in the <tt>spec</tt> directory:
@@ -63,6 +63,25 @@ To use with Expectations, redirecting output to a file
63
63
  t.out = File.new "synthesis.test.txt", "a"
64
64
  end
65
65
 
66
+ == Utilities
67
+
68
+ === mock_instance
69
+
70
+ require "synthesis/util/mock_instance"
71
+ foo_mock = Foo.mock_instance(arg_one, arg_2)
72
+
73
+ This is equivalent, but without calling the real <tt>initialize</tt>, to:
74
+
75
+ foo_mock = Foo.new
76
+ Foo.expects(:new).with(arg_one, arg_two).returns(foo_mock)
77
+
78
+ Or, in the case of RSpec, it is equivalent to:
79
+
80
+ foo_mock = Foo.new
81
+ Foo.should_receive(:new).with(arg_one, arg_two).and_return(foo_mock)
82
+
83
+ Either <tt>"mocha_standalone"</tt> or <tt>"spec/mocks"</tt> need to be required before using <tt>mock_instance</tt>.
84
+
66
85
  == Known Issues
67
86
 
68
87
  Reporting the location (filename and line number) of tested/untested expectations doesn't work as intended with the Expectations adapter.
data/Rakefile CHANGED
@@ -37,7 +37,7 @@ end
37
37
 
38
38
  Synthesis::Task.new do |t|
39
39
  t.pattern = 'test_project/mocha/test/*_test.rb'
40
- t.ignored = %w[Array Hash]
40
+ t.ignored = [Array, Hash]
41
41
  # t.out = File.new('synthesis.test.txt', 'a')
42
42
  end
43
43
 
@@ -56,42 +56,9 @@ task :publish_rdoc do
56
56
  Rake::SshDirPublisher.new("gmalamid@rubyforge.org", "/var/www/gforge-projects/synthesis", "doc").upload
57
57
  end
58
58
 
59
- namespace :svn do
60
- task :st do
61
- puts %x[svn st]
62
- end
63
-
64
- task :up do
65
- puts %x[svn up]
66
- end
67
-
68
- task :add do
69
- %x[svn st].split(/\n/).each do |line|
70
- trimmed_line = line.delete('?').lstrip
71
- if line[0,1] =~ /\?/
72
- %x[svn add #{trimmed_line}]
73
- puts %[added #{trimmed_line}]
74
- end
75
- end
76
- end
77
-
78
- task :delete do
79
- %x[svn st].split(/\n/).each do |line|
80
- trimmed_line = line.delete('!').lstrip
81
- if line[0,1] =~ /\!/
82
- %x[svn rm #{trimmed_line}]
83
- puts %[removed #{trimmed_line}]
84
- end
85
- end
86
- end
87
-
88
- desc "Run before checking in"
89
- task :pc => %w[svn:add svn:delete svn:up default svn:st]
90
- end
91
-
92
59
  gem_spec = Gem::Specification.new do |s|
93
60
  s.name = 'synthesis'
94
- s.version = '0.0.14'
61
+ s.version = '0.0.15'
95
62
  s.platform = Gem::Platform::RUBY
96
63
  s.rubyforge_project = "synthesis"
97
64
  s.summary, s.description = 'A tool for Synthesized Testing'
@@ -8,14 +8,19 @@ module Synthesis
8
8
  def record_expected_argument_types_on(method_name)
9
9
  @original_with = method_name
10
10
 
11
- class_eval <<-end_eval
12
- alias intercepted_#{@original_with} #{@original_with}
11
+ class_eval do
12
+ alias_method "intercepted_#{method_name}", method_name
13
13
 
14
- def #{@original_with}(*expected_parameters, &matching_block)
14
+ define_method(:get_method_name) {method_name}
15
+
16
+ def temp_method(*expected_parameters, &matching_block)
15
17
  synthesis_expectation.args = expected_parameters if synthesis_expectation
16
- intercepted_#{@original_with}(*expected_parameters, &matching_block)
18
+ send("intercepted_#{get_method_name}", *expected_parameters, &matching_block)
17
19
  end
18
- end_eval
20
+
21
+ alias_method method_name, :temp_method
22
+ undef temp_method
23
+ end
19
24
  end
20
25
 
21
26
  # Intercept the mock object framework's expectation method for declaring a mocked
@@ -23,29 +28,30 @@ module Synthesis
23
28
  def record_expected_return_values_on(method_name)
24
29
  @original_returns = method_name
25
30
 
26
- class_eval <<-end_eval
27
- alias intercepted_#{@original_returns} #{@original_returns}
28
-
29
- def #{@original_returns}(*values)
30
- mock_expectation = intercepted_#{@original_returns}(*values)
31
+ class_eval do
32
+ alias_method "intercepted_#{method_name}", method_name
33
+
34
+ define_method(method_name) do |*values|
35
+ mock_expectation = send("intercepted_#{method_name}", *values)
31
36
  synthesis_expectation.add_return_values(*values) if synthesis_expectation
32
37
  mock_expectation
33
38
  end
34
- end_eval
39
+ end
35
40
  end
36
41
 
37
42
  # Restore the original methods ExpectationInterceptor has rewritten and
38
43
  # undefine their intercepted counterparts. Undefine the synthesis_expectation
39
44
  # accessors.
40
45
  def stop_intercepting!
41
- class_eval <<-end_eval
42
- alias #{@original_with} intercepted_#{@original_with}
43
- alias #{@original_returns} intercepted_#{@original_returns}
44
- undef intercepted_#{@original_with}
45
- undef intercepted_#{@original_returns}
46
- undef synthesis_expectation
47
- undef synthesis_expectation=
48
- end_eval
46
+ with_method, returns_method = @original_with, @original_returns
47
+ class_eval do
48
+ alias_method with_method, "intercepted_#{with_method}"
49
+ alias_method returns_method, "intercepted_#{returns_method}"
50
+ remove_method "intercepted_#{with_method}"
51
+ remove_method "intercepted_#{returns_method}"
52
+ remove_method :synthesis_expectation
53
+ remove_method :synthesis_expectation=
54
+ end
49
55
  end
50
56
 
51
57
  # Classes extending ExpectationInterceptor will have a synthesis_expectation
@@ -8,25 +8,26 @@ module Synthesis
8
8
  def record_expectations_on(method_name)
9
9
  @original_expects = method_name
10
10
 
11
- class_eval <<-end_eval
12
- alias intercepted_#{@original_expects} #{@original_expects}
11
+ class_eval do
12
+ alias_method "intercepted_#{method_name}", method_name
13
13
 
14
- def #{@original_expects}(meth)
14
+ define_method(method_name) do |meth|
15
15
  s_expectation = ExpectationRecord.add_expectation(self, meth, caller[0])
16
- m_expectation = intercepted_#{@original_expects}(meth)
16
+ m_expectation = send("intercepted_#{method_name}", meth)
17
17
  m_expectation.synthesis_expectation = s_expectation
18
18
  m_expectation
19
19
  end
20
- end_eval
20
+ end
21
21
  end
22
22
 
23
23
  # Restore the original methods ExpectationRecordEnabled has rewritten and
24
24
  # undefine their intercepted counterparts.
25
25
  def stop_recording!
26
- class_eval <<-end_eval
27
- alias #{@original_expects} intercepted_#{@original_expects}
28
- undef intercepted_#{@original_expects}
29
- end_eval
26
+ method_name = @original_expects
27
+ class_eval do
28
+ alias_method method_name, "intercepted_#{method_name}"
29
+ remove_method "intercepted_#{method_name}"
30
+ end
30
31
  end
31
32
  end
32
33
  end
@@ -0,0 +1,7 @@
1
+ if defined? Mocha
2
+ require File.dirname(__FILE__) + "/mock_instance/mocha"
3
+ elsif defined? Spec
4
+ require File.dirname(__FILE__) + "/mock_instance/rspec"
5
+ else
6
+ raise "Either mocha_standalone or spec/mocks must be required before you can use mock_instance"
7
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synthesis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Caborn, George Malamidis
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-21 00:00:00 +01:00
12
+ date: 2008-05-25 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -43,6 +43,7 @@ files:
43
43
  - lib/synthesis/task.rb
44
44
  - lib/synthesis/util/mock_instance/mocha.rb
45
45
  - lib/synthesis/util/mock_instance/rspec.rb
46
+ - lib/synthesis/util/mock_instance.rb
46
47
  - lib/synthesis.rb
47
48
  - test/synthesis/adapter/mocha/expectation_record_test.rb
48
49
  - test/synthesis/adapter/mocha/helper.rb