synthesis 0.1.4 → 0.1.5
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 +1 -1
- data/Rakefile +3 -18
- data/lib/synthesis/adapter/mocha.rb +1 -0
- data/lib/synthesis/adapter/rspec.rb +1 -0
- data/lib/synthesis/expectation_interceptor.rb +13 -0
- data/lib/synthesis/expectation_record.rb +4 -0
- data/lib/synthesis/task.rb +1 -1
- data/test/synthesis/expectation_record_test.rb +7 -0
- data/test_project/expectations/test/storage_test.rb +3 -0
- data/test_project/mocha/test/storage_test.rb +7 -0
- data/test_project/rspec/storage_spec.rb +5 -0
- data/test_project/test_project.rb +4 -0
- metadata +3 -3
data/README
CHANGED
@@ -32,7 +32,7 @@ By default, Synthesis outputs to +STDOUT+, but output can be redirected to alter
|
|
32
32
|
|
33
33
|
Synthesis can be setup to ignore certain classes or modules when collecting expectations for verification.
|
34
34
|
|
35
|
-
If +pattern+ is not specified, it will default to <tt>test
|
35
|
+
If +pattern+ is not specified, it will default to <tt>test/**/*_test.rb</tt>
|
36
36
|
|
37
37
|
== Usage examples
|
38
38
|
|
data/Rakefile
CHANGED
@@ -5,6 +5,8 @@ require 'rake/rdoctask'
|
|
5
5
|
require 'rake/contrib/sshpublisher'
|
6
6
|
require File.dirname(__FILE__) + "/lib/synthesis/task"
|
7
7
|
|
8
|
+
load 'synthesis.gemspec'
|
9
|
+
|
8
10
|
task :default => :test
|
9
11
|
|
10
12
|
desc "Run all tests"
|
@@ -56,24 +58,7 @@ task :publish_rdoc do
|
|
56
58
|
Rake::SshDirPublisher.new("gmalamid@rubyforge.org", "/var/www/gforge-projects/synthesis", "doc").upload
|
57
59
|
end
|
58
60
|
|
59
|
-
|
60
|
-
s.name = 'synthesis'
|
61
|
-
s.version = '0.1.4'
|
62
|
-
s.platform = Gem::Platform::RUBY
|
63
|
-
s.rubyforge_project = "synthesis"
|
64
|
-
s.summary, s.description = 'A tool for Synthesized Testing'
|
65
|
-
s.authors = 'Stuart Caborn, George Malamidis'
|
66
|
-
s.email = 'george@nutrun.com'
|
67
|
-
s.homepage = 'http://synthesis.rubyforge.org'
|
68
|
-
s.has_rdoc = true
|
69
|
-
s.rdoc_options += ['--quiet', '--title', 'Synthesis', '--main', 'README', '--inline-source']
|
70
|
-
s.extra_rdoc_files = ['README', 'COPYING']
|
71
|
-
excluded = FileList['etc/*']
|
72
|
-
# s.test_files = FileList['test/**/*_test.rb']
|
73
|
-
s.files = FileList['**/*.rb', 'COPYING', 'README', 'Rakefile'] - excluded
|
74
|
-
end
|
75
|
-
|
76
|
-
Rake::GemPackageTask.new(gem_spec) do |t|
|
61
|
+
Rake::GemPackageTask.new(GEMSPEC) do |t|
|
77
62
|
t.need_zip = false
|
78
63
|
t.need_tar = false
|
79
64
|
end
|
@@ -19,6 +19,7 @@ module Synthesis
|
|
19
19
|
Mocha::Expectation.record_expected_arguments_on(:with)
|
20
20
|
Mocha::Expectation.record_expected_return_values_on(:returns)
|
21
21
|
Mocha::Expectation.record_expected_return_values_on(:raises)
|
22
|
+
Mocha::Expectation.remove_expectation_on(:never)
|
22
23
|
end
|
23
24
|
|
24
25
|
def stop_collecting_expectations
|
@@ -23,6 +23,7 @@ module Synthesis
|
|
23
23
|
Spec::Mocks::MessageExpectation.record_expected_arguments_on(:with)
|
24
24
|
Spec::Mocks::MessageExpectation.record_expected_return_values_on(:and_return)
|
25
25
|
Spec::Mocks::MessageExpectation.record_expected_return_values_on(:and_raise)
|
26
|
+
Spec::Mocks::MessageExpectation.remove_expectation_on(:never)
|
26
27
|
end
|
27
28
|
|
28
29
|
def stop_collecting_expectations
|
@@ -39,6 +39,19 @@ module Synthesis
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
def remove_expectation_on(method_name)
|
43
|
+
(@original_methods ||= []) << method_name
|
44
|
+
|
45
|
+
class_eval do
|
46
|
+
alias_method "intercepted_#{method_name}", method_name
|
47
|
+
|
48
|
+
define_method(method_name) do |*values|
|
49
|
+
Synthesis::ExpectationRecord.remove(synthesis_expectation) if synthesis_expectation
|
50
|
+
send("intercepted_#{method_name}")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
42
55
|
# Restore the original methods ExpectationInterceptor has rewritten and
|
43
56
|
# undefine their intercepted counterparts. Undefine the synthesis_expectation
|
44
57
|
# accessors.
|
data/lib/synthesis/task.rb
CHANGED
@@ -78,5 +78,12 @@ module Synthesis
|
|
78
78
|
ExpectationRecord.record_invocations
|
79
79
|
ExpectationRecord.expectations.each { |val| assert(!val.is_a?(Array)) }
|
80
80
|
end
|
81
|
+
|
82
|
+
def test_removes_expectation
|
83
|
+
c = Class.new { def foo; end }
|
84
|
+
expectation = ExpectationRecord.add_expectation(c, :foo, :track)
|
85
|
+
ExpectationRecord.remove(expectation)
|
86
|
+
assert_equal(0, ExpectationRecord.expectations.size)
|
87
|
+
end
|
81
88
|
end
|
82
89
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require "test/unit"
|
2
2
|
require "fileutils"
|
3
3
|
require File.dirname(__FILE__) + "/../../test_project"
|
4
|
+
require "rubygems"
|
5
|
+
require "mocha"
|
4
6
|
|
5
7
|
class StorageTest < Test::Unit::TestCase
|
6
8
|
def test_saves_to_file
|
@@ -21,4 +23,9 @@ class StorageTest < Test::Unit::TestCase
|
|
21
23
|
def test_ok_raises_problem_when_not_given_ok
|
22
24
|
assert_raise(Problem) { Storage.new("").ok_or_problem(:not_ok) }
|
23
25
|
end
|
26
|
+
|
27
|
+
def test_never_called
|
28
|
+
storage = Storage.new("")
|
29
|
+
storage.expects(:never_call_me).never
|
30
|
+
end
|
24
31
|
end
|
@@ -22,4 +22,9 @@ describe Storage do
|
|
22
22
|
it "should raise problem when not give :ok" do
|
23
23
|
proc { Storage.new("").ok_or_problem(:not_ok) }.should raise_error(Problem)
|
24
24
|
end
|
25
|
+
|
26
|
+
it "should never call" do
|
27
|
+
storage = Storage.new("")
|
28
|
+
storage.should_receive(:never_call_me).never
|
29
|
+
end
|
25
30
|
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.1.
|
4
|
+
version: 0.1.5
|
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-
|
12
|
+
date: 2008-07-03 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements: []
|
101
101
|
|
102
102
|
rubyforge_project: synthesis
|
103
|
-
rubygems_version: 1.
|
103
|
+
rubygems_version: 1.2.0
|
104
104
|
signing_key:
|
105
105
|
specification_version: 2
|
106
106
|
summary: A tool for Synthesized Testing
|