rspec 0.6.3 → 0.6.4
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/CHANGES +28 -3
- data/EXAMPLES.rd +2 -16
- data/README +5 -2
- data/Rakefile +8 -4
- data/bin/spec +1 -0
- data/examples/custom_formatter.rb +2 -1
- data/examples/helper_method_spec.rb +12 -0
- data/examples/{mocking_spec.rb → mocking_example.rb} +0 -0
- data/examples/{bdd_framework_spec.rb → predicate_example.rb} +0 -0
- data/examples/stubbing_example.rb +28 -0
- data/lib/spec.rb +2 -1
- data/lib/spec/expectations.rb +7 -0
- data/lib/spec/expectations/diff.rb +56 -0
- data/lib/spec/expectations/exceptions.rb +6 -0
- data/lib/spec/expectations/expectations.rb +19 -0
- data/lib/spec/expectations/have_helper.rb +41 -0
- data/lib/spec/expectations/helper.rb +4 -0
- data/lib/spec/expectations/should_base.rb +52 -0
- data/lib/spec/expectations/should_helper.rb +93 -0
- data/lib/spec/expectations/should_negator.rb +71 -0
- data/lib/spec/{api → expectations}/sugar.rb +8 -8
- data/lib/spec/mocks.rb +5 -0
- data/lib/spec/{api/mocks → mocks}/argument_expectation.rb +1 -1
- data/lib/spec/{api → mocks}/exceptions.rb +3 -5
- data/lib/spec/{api/mocks → mocks}/message_expectation.rb +15 -9
- data/lib/spec/{api/mocks → mocks}/mock.rb +44 -26
- data/lib/spec/{api/mocks → mocks}/order_group.rb +1 -1
- data/lib/spec/runner/backtrace_tweaker.rb +4 -1
- data/lib/spec/runner/execution_context.rb +13 -4
- data/lib/spec/runner/formatter/base_text_formatter.rb +26 -13
- data/lib/spec/runner/formatter/html_formatter.rb +1 -1
- data/lib/spec/runner/option_parser.rb +6 -2
- data/lib/spec/runner/specification.rb +2 -2
- data/lib/spec/test_to_spec/ruby2ruby.rb +1 -1
- data/lib/spec/version.rb +1 -1
- data/test/spec/expectations/arbitrary_operator_test.rb +55 -0
- data/test/spec/expectations/arbitrary_predicate_test.rb +163 -0
- data/test/spec/{api/helper → expectations}/containment_test.rb +2 -2
- data/test/spec/expectations/diff_test.rb +62 -0
- data/test/spec/{api/helper → expectations}/identity_test.rb +2 -2
- data/test/spec/{api/helper → expectations}/object_equality_test.rb +2 -2
- data/test/spec/{api/helper → expectations}/raising_test.rb +5 -5
- data/test/spec/{api/helper → expectations}/regex_matching_test.rb +6 -6
- data/test/spec/{api/helper → expectations}/should_have_test.rb +11 -2
- data/test/spec/{api/helper → expectations}/should_satisfy_test.rb +2 -4
- data/test/spec/{api → expectations}/sugar_test.rb +8 -8
- data/test/spec/expectations/supported_symbols_test.rb +33 -0
- data/test/spec/{api/helper → expectations}/throwing_test.rb +2 -2
- data/test/spec/{api/helper → expectations}/true_false_special_case_test.rb +2 -2
- data/test/spec/{api/helper → expectations}/typing_test.rb +2 -2
- data/test/spec/{api/mocks → mocks}/mock_arg_constraints_test.rb +4 -4
- data/test/spec/{api/mocks → mocks}/mock_counts_test.rb +2 -2
- data/test/spec/{api/mocks → mocks}/mock_ordering_test.rb +2 -2
- data/test/spec/{api/mocks → mocks}/mock_test.rb +22 -7
- data/test/spec/{api/mocks → mocks}/null_object_test.rb +8 -2
- data/test/spec/runner/backtrace_tweaker_test.rb +21 -19
- data/test/spec/runner/context_matching_test.rb +2 -2
- data/test/spec/runner/context_runner_test.rb +6 -6
- data/test/spec/runner/context_test.rb +1 -1
- data/test/spec/runner/execution_context_test.rb +22 -5
- data/test/spec/runner/formatter/failure_dump_test.rb +7 -7
- data/test/spec/runner/option_parser_test.rb +20 -0
- data/test/spec/runner/reporter_test.rb +3 -3
- data/test/spec/runner/specification_test.rb +3 -3
- data/test/spec/test_to_spec/sexp_transformer_assertion_test.rb +4 -4
- data/test/spec/test_to_spec/sexp_transformer_test.rb +1 -1
- data/test/spec/test_to_spec/testfiles/test_unit_api_test.rb +2 -2
- data/test/test_classes.rb +21 -1
- data/test/test_helper.rb +1 -1
- data/vendor/selenium/README.txt +23 -0
- data/vendor/selenium/find_rspecs_home_page.rb +23 -0
- data/vendor/selenium/rspec_selenium.rb +33 -0
- data/vendor/watir/README.txt +32 -0
- data/vendor/watir/find_rspecs_home_page.rb +21 -0
- data/vendor/watir/find_rspecs_home_page.txt +15 -0
- data/vendor/watir/rspec_watir.rb +45 -0
- metadata +52 -41
- data/examples/airport_spec.rb +0 -33
- data/examples/custom_method_spec.rb +0 -24
- data/examples/sugar_spec.rb +0 -14
- data/lib/spec/api.rb +0 -8
- data/lib/spec/api/expectations.rb +0 -17
- data/lib/spec/api/helper.rb +0 -4
- data/lib/spec/api/helper/diff.rb +0 -54
- data/lib/spec/api/helper/have_helper.rb +0 -40
- data/lib/spec/api/helper/should_base.rb +0 -31
- data/lib/spec/api/helper/should_helper.rb +0 -93
- data/lib/spec/api/helper/should_negator.rb +0 -72
- data/test/spec/api/helper/arbitrary_predicate_test.rb +0 -112
- data/test/spec/api/helper/diff_test.rb +0 -60
@@ -1,7 +1,7 @@
|
|
1
1
|
module Spec
|
2
2
|
module Runner
|
3
3
|
class Specification
|
4
|
-
|
4
|
+
|
5
5
|
def initialize(name, &block)
|
6
6
|
@name = name
|
7
7
|
@block = block
|
@@ -38,7 +38,7 @@ module Spec
|
|
38
38
|
def add_mock(mock)
|
39
39
|
@mocks << mock
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
def matches_matcher?(matcher)
|
43
43
|
matcher.matches? @name
|
44
44
|
end
|
@@ -60,7 +60,6 @@ class Method
|
|
60
60
|
|
61
61
|
end
|
62
62
|
|
63
|
-
|
64
63
|
class RubyToRuby < SexpProcessor
|
65
64
|
|
66
65
|
def self.translate(klass, method=nil)
|
@@ -75,6 +74,7 @@ class RubyToRuby < SexpProcessor
|
|
75
74
|
|
76
75
|
def initialize
|
77
76
|
super
|
77
|
+
@block_params = false
|
78
78
|
@indent = " "
|
79
79
|
self.auto_shift_type = true
|
80
80
|
self.strict = true
|
data/lib/spec/version.rb
CHANGED
@@ -0,0 +1,55 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Expectations
|
5
|
+
module Helper
|
6
|
+
|
7
|
+
class ArbitraryOperatorTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
# == arg
|
10
|
+
|
11
|
+
def test_should_pass_when_equals_operator_passes
|
12
|
+
assert_nothing_raised do
|
13
|
+
(2+2).should == 4
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_should_fail_when_equals_operator_fails
|
18
|
+
assert_raise(ExpectationNotMetError) do
|
19
|
+
(2+2).should == 5
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# =~ arg
|
24
|
+
|
25
|
+
def test_should_pass_when_match_operator_passes
|
26
|
+
assert_nothing_raised do
|
27
|
+
"foo".should =~ /oo/
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_should_fail_when_match_operator_fails
|
32
|
+
assert_raise(ExpectationNotMetError) do
|
33
|
+
"fu".should =~ /oo/
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# < and >
|
38
|
+
|
39
|
+
def test_should_pass_when_comparison_passes
|
40
|
+
assert_nothing_raised do
|
41
|
+
3.should_be < 4
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_should_fail_when_comparison_fails
|
46
|
+
assert_raise(ExpectationNotMetError) do
|
47
|
+
3.should_be > 4
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Expectations
|
5
|
+
module Helper
|
6
|
+
|
7
|
+
class ShouldBeArbitraryPredicateTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
# should_be_<predicate>
|
10
|
+
|
11
|
+
def test_should_pass_when_predicate_returns_true
|
12
|
+
mock = HandCodedMock.new(true)
|
13
|
+
assert_nothing_raised do
|
14
|
+
mock.should_be_funny
|
15
|
+
end
|
16
|
+
mock.__verify
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_should_fail_when_predicate_returns_false
|
20
|
+
mock = HandCodedMock.new(false)
|
21
|
+
assert_raise(ExpectationNotMetError) do
|
22
|
+
mock.should_be_funny
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_should_fail_when_predicate_returns_nil
|
27
|
+
mock = HandCodedMock.new(nil)
|
28
|
+
assert_raise(ExpectationNotMetError) do
|
29
|
+
mock.should_be_funny
|
30
|
+
end
|
31
|
+
mock.__verify
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_should_fail_when_method_returns_something_other_than_true_false_or_nil
|
35
|
+
mock = HandCodedMock.new(5)
|
36
|
+
assert_nothing_raised do
|
37
|
+
mock.should_be_funny
|
38
|
+
end
|
39
|
+
mock.__verify
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_should_raise_when_target_does_not_respond_to_predicate
|
43
|
+
assert_raise(NoMethodError) do
|
44
|
+
5.should_be_funny
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# should_be_funny(args)
|
49
|
+
|
50
|
+
def test_should_pass_when_predicate_accepts_args_and_returns_true
|
51
|
+
mock = HandCodedMock.new(true)
|
52
|
+
assert_nothing_raised do
|
53
|
+
mock.should_be_hungry(1, 2, 3)
|
54
|
+
end
|
55
|
+
mock.__verify
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_should_fail_when_predicate_accepts_args_and_returns_false
|
59
|
+
mock = HandCodedMock.new(false)
|
60
|
+
assert_raise(ExpectationNotMetError) do
|
61
|
+
mock.should_be_hungry(1, 2, 3)
|
62
|
+
end
|
63
|
+
mock.__verify
|
64
|
+
end
|
65
|
+
|
66
|
+
# should_exist => exists?
|
67
|
+
|
68
|
+
def test_should_support_plural_form
|
69
|
+
mock = HandCodedMock.new(true)
|
70
|
+
assert_nothing_raised do
|
71
|
+
mock.should_exist
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_should_support_multi_word_predicates_with_should
|
76
|
+
assert_nothing_raised do
|
77
|
+
HandCodedMock.new(true).should_multi_word_predicate
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_should_support_multi_word_predicates_with_should_be
|
82
|
+
assert_nothing_raised do
|
83
|
+
HandCodedMock.new(true).should_be_multi_word_predicate
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
class ShouldNotBeArbitraryPredicateTest < Test::Unit::TestCase
|
90
|
+
|
91
|
+
# should_not_be_funny
|
92
|
+
|
93
|
+
def test_should_pass_when_predicate_returns_false
|
94
|
+
mock = HandCodedMock.new(false)
|
95
|
+
assert_nothing_raised do
|
96
|
+
mock.should_not_be_funny
|
97
|
+
end
|
98
|
+
mock.__verify
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_should_fail_when_predicate_returns_true
|
102
|
+
mock = HandCodedMock.new(true)
|
103
|
+
assert_raise(ExpectationNotMetError) do
|
104
|
+
mock.should_not_be_funny
|
105
|
+
end
|
106
|
+
mock.__verify
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_should_pass_when_predicate_returns_nil
|
110
|
+
mock = HandCodedMock.new(nil)
|
111
|
+
assert_nothing_raised do
|
112
|
+
mock.should_not_be_funny
|
113
|
+
end
|
114
|
+
mock.__verify
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_should_fail_when_method_returns_something_other_than_true_false_or_nil
|
118
|
+
mock = HandCodedMock.new(5)
|
119
|
+
assert_raise(ExpectationNotMetError) do
|
120
|
+
mock.should_not_be_funny
|
121
|
+
end
|
122
|
+
mock.__verify
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_should_raise_when_target_does_not_respond_to_predicate
|
126
|
+
assert_raise(NoMethodError) do
|
127
|
+
5.should_not_be_funny
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
# should_be_funny(args)
|
132
|
+
|
133
|
+
def test_should_fail_when_predicate_accepts_args_and_returns_true
|
134
|
+
mock = HandCodedMock.new(true)
|
135
|
+
assert_raise(ExpectationNotMetError) do
|
136
|
+
mock.should_not_be_hungry(1, 2, 3)
|
137
|
+
end
|
138
|
+
mock.__verify
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_should_pass_when_predicate_accepts_args_and_returns_false
|
142
|
+
mock = HandCodedMock.new(false)
|
143
|
+
assert_nothing_raised do
|
144
|
+
mock.should_not_be_hungry(1, 2, 3)
|
145
|
+
end
|
146
|
+
mock.__verify
|
147
|
+
end
|
148
|
+
|
149
|
+
def test_should_support_multi_word_predicates_with_should
|
150
|
+
assert_nothing_raised do
|
151
|
+
HandCodedMock.new(false).should_not_multi_word_predicate
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_should_support_multi_word_predicates_with_should_be
|
156
|
+
assert_nothing_raised do
|
157
|
+
HandCodedMock.new(false).should_not_be_multi_word_predicate
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Expectations
|
5
|
+
class DiffTest < Test::Unit::TestCase
|
6
|
+
def test_should_output_unified_diff_of_two_strings
|
7
|
+
expected = <<-EOF
|
8
|
+
foo
|
9
|
+
bar
|
10
|
+
zap
|
11
|
+
this
|
12
|
+
is
|
13
|
+
soo
|
14
|
+
very
|
15
|
+
very
|
16
|
+
equal
|
17
|
+
insert
|
18
|
+
a
|
19
|
+
line
|
20
|
+
EOF
|
21
|
+
|
22
|
+
actual = <<-EOF
|
23
|
+
foo
|
24
|
+
zap
|
25
|
+
bar
|
26
|
+
this
|
27
|
+
is
|
28
|
+
soo
|
29
|
+
very
|
30
|
+
very
|
31
|
+
equal
|
32
|
+
insert
|
33
|
+
a
|
34
|
+
another
|
35
|
+
line
|
36
|
+
EOF
|
37
|
+
|
38
|
+
expected_diff = <<-EOF
|
39
|
+
|
40
|
+
|
41
|
+
@@ -1,6 +1,6 @@
|
42
|
+
foo
|
43
|
+
-bar
|
44
|
+
zap
|
45
|
+
+bar
|
46
|
+
this
|
47
|
+
is
|
48
|
+
soo
|
49
|
+
@@ -9,5 +9,6 @@
|
50
|
+
equal
|
51
|
+
insert
|
52
|
+
a
|
53
|
+
+another
|
54
|
+
line
|
55
|
+
EOF
|
56
|
+
|
57
|
+
diff = ShouldBase.new.diff_as_string(expected, actual)
|
58
|
+
assert_equal expected_diff, diff
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require File.dirname(__FILE__) + '
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
2
|
|
3
3
|
module Spec
|
4
|
-
module
|
4
|
+
module Expectations
|
5
5
|
module Helper
|
6
6
|
class ShouldRaiseTest < Test::Unit::TestCase
|
7
7
|
|
@@ -18,7 +18,7 @@ module Spec
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_should_fail_when_exact_exception_is_raised_with_wrong_message
|
21
|
-
assert_raises(Spec::
|
21
|
+
assert_raises(Spec::Expectations::ExpectationNotMetError) do
|
22
22
|
lambda { raise StandardError.new("chunky bacon") }.should_raise StandardError, "rotten tomatoes"
|
23
23
|
end
|
24
24
|
end
|
@@ -55,7 +55,7 @@ module Spec
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def test_should_faile_when_exact_exception_is_raised_with_message
|
58
|
-
assert_raises(Spec::
|
58
|
+
assert_raises(Spec::Expectations::ExpectationNotMetError) do
|
59
59
|
lambda { raise StandardError.new("abc") }.should_not_raise StandardError, "abc"
|
60
60
|
end
|
61
61
|
end
|
@@ -97,7 +97,7 @@ module Spec
|
|
97
97
|
def TODOtest_should_understand_raised_with_message_matching
|
98
98
|
lambda do
|
99
99
|
raise 'Hello'
|
100
|
-
end.should_raise(StandardError).with.message.matching
|
100
|
+
end.should_raise(StandardError).with.message.matching(/ello/)
|
101
101
|
end
|
102
102
|
|
103
103
|
end
|
@@ -1,19 +1,19 @@
|
|
1
|
-
require File.dirname(__FILE__) + '
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
2
|
|
3
3
|
module Spec
|
4
|
-
module
|
4
|
+
module Expectations
|
5
5
|
module Helper
|
6
6
|
class ShouldMatchTest < Test::Unit::TestCase
|
7
7
|
|
8
8
|
def test_should_not_raise_when_objects_match
|
9
9
|
assert_nothing_raised do
|
10
|
-
"hi aslak".should_match
|
10
|
+
"hi aslak".should_match(/aslak/)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_should_raise_when_objects_do_not_match
|
15
15
|
assert_raise(ExpectationNotMetError) do
|
16
|
-
"hi aslak".should_match
|
16
|
+
"hi aslak".should_match(/steve/)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -21,13 +21,13 @@ module Spec
|
|
21
21
|
class ShouldNotMatchTest < Test::Unit::TestCase
|
22
22
|
def test_should_not_raise_when_objects_do_not_match
|
23
23
|
assert_nothing_raised do
|
24
|
-
"hi aslak".should_not_match
|
24
|
+
"hi aslak".should_not_match(/steve/)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_should_raise_when_objects_match
|
29
29
|
assert_raise(ExpectationNotMetError) do
|
30
|
-
"hi aslak".should_not_match
|
30
|
+
"hi aslak".should_not_match(/aslak/)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require File.dirname(__FILE__) + '
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
2
|
|
3
3
|
module Spec
|
4
|
-
module
|
4
|
+
module Expectations
|
5
5
|
module Helper
|
6
6
|
class ShouldHaveTest < Test::Unit::TestCase
|
7
7
|
|
@@ -56,6 +56,15 @@ module Spec
|
|
56
56
|
@owner.should_have_exactly(3).items_in_collection_with_size_method
|
57
57
|
end
|
58
58
|
end
|
59
|
+
|
60
|
+
def test_should_not_raise_when_expecting_actual_size_with_args
|
61
|
+
assert_nothing_raised do
|
62
|
+
@owner.should_have(3).items_for('a')
|
63
|
+
@owner.should_have_exactly(3).items_for('a')
|
64
|
+
@owner.should_have(1).items_for('b')
|
65
|
+
@owner.should_have_exactly(1).items_for('b')
|
66
|
+
end
|
67
|
+
end
|
59
68
|
end
|
60
69
|
|
61
70
|
class ShouldHaveAtLeastTest < Test::Unit::TestCase
|