transpec 1.9.1 → 1.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +5 -0
- data/README.md +4 -4
- data/README.md.erb +5 -12
- data/lib/transpec/converter.rb +5 -0
- data/lib/transpec/syntax/expect.rb +6 -2
- data/lib/transpec/syntax/have.rb +3 -5
- data/lib/transpec/syntax/have/source_builder.rb +24 -2
- data/lib/transpec/syntax/mixin/expect_base.rb +15 -25
- data/lib/transpec/syntax/mixin/matcher_owner.rb +43 -0
- data/lib/transpec/syntax/mixin/owned_matcher.rb +4 -0
- data/lib/transpec/syntax/mixin/should_base.rb +8 -26
- data/lib/transpec/syntax/{operator_matcher.rb → operator.rb} +5 -4
- data/lib/transpec/syntax/raise_error.rb +3 -12
- data/lib/transpec/syntax/receive.rb +0 -2
- data/lib/transpec/version.rb +1 -1
- data/spec/transpec/converter_spec.rb +26 -3
- data/spec/transpec/syntax/expect_spec.rb +64 -10
- data/spec/transpec/syntax/have_spec.rb +58 -0
- data/spec/transpec/syntax/oneliner_should_spec.rb +3 -3
- data/spec/transpec/syntax/{operator_matcher_spec.rb → operator_spec.rb} +2 -2
- data/spec/transpec/syntax/raise_error_spec.rb +44 -101
- data/spec/transpec/syntax/should_spec.rb +3 -3
- data/tasks/readme.rake +15 -1
- metadata +6 -6
- data/lib/transpec/syntax/mixin/have_matcher_owner.rb +0 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a34ff8e04af60263124c8b388b44b5784ceba70f
|
4
|
+
data.tar.gz: a00f6ffbf41aab7e020aedd0487837279557e039
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8258e12de1f9553ac0a89f32e05c061c529dbda6d7e7877b46356359f7bdd6899ee2eebe527bbcce7b4f72a8031b91ace460b06fc8662215f711930277f05401
|
7
|
+
data.tar.gz: aeafa19c49cf9fa8dfe031c13118681dff4351fa56a1279117f878af27a033ff8620b2ec316ca49cf03caee2396ce326c719d9275f156927558139278bb6f700
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
## Development
|
4
4
|
|
5
|
+
## v1.9.2
|
6
|
+
|
7
|
+
* Fix a bug where `expect(method_returns_collection :some_arg).to have(2).items` was converted to `expect(method_returns_collection :some_arg.size).to eq(2)` ([#43](https://github.com/yujinakayama/transpec/issues/43))
|
8
|
+
* Fix false positive conversion of `raise_error` with `with_message` ([#41](https://github.com/yujinakayama/transpec/issues/41))
|
9
|
+
|
5
10
|
## v1.9.1
|
6
11
|
|
7
12
|
* Fix crash on `expect(obj).to non_matcher_object` in dynamic analysis ([#39](https://github.com/yujinakayama/transpec/issues/39))
|
data/README.md
CHANGED
@@ -404,7 +404,7 @@ The one-liner (implicit receiver) `should`:
|
|
404
404
|
* Is provided by `rspec-core` gem.
|
405
405
|
* Is _not_ deprecated in RSpec 3.
|
406
406
|
* Does _not_ have the issue with delegate/proxy objects.
|
407
|
-
* There's the alternative syntax [`is_expected.to`](#one-liner-expectations) since RSpec 2.99.beta2
|
407
|
+
* There's the alternative syntax [`is_expected.to`](#one-liner-expectations) since RSpec 2.99.beta2.
|
408
408
|
|
409
409
|
## Supported Conversions
|
410
410
|
|
@@ -453,7 +453,7 @@ expect(obj).to_not matcher # with `--negative-form to_not`
|
|
453
453
|
|
454
454
|
### One-liner expectations
|
455
455
|
|
456
|
-
**This conversion is available only if your project's RSpec is `2.99.0.beta2`
|
456
|
+
**This conversion is available only if your project's RSpec is `2.99.0.beta2` or later.**
|
457
457
|
|
458
458
|
Targets:
|
459
459
|
|
@@ -802,7 +802,7 @@ Will be converted to:
|
|
802
802
|
allow(obj).to receive(:message)
|
803
803
|
|
804
804
|
# Conversion from `stub_chain` to `receive_message_chain` is available
|
805
|
-
# only if the target project's RSpec is 3.0.0.beta2
|
805
|
+
# only if the target project's RSpec is 3.0.0.beta2 or later
|
806
806
|
allow(obj).to receive_message_chain(:foo, :bar, :baz)
|
807
807
|
|
808
808
|
allow_any_instance_of(Klass).to receive(:message)
|
@@ -1079,7 +1079,7 @@ Here's an excerpt from [the warning](https://github.com/rspec/rspec-core/blob/7d
|
|
1079
1079
|
|
1080
1080
|
### Custom matcher DSL
|
1081
1081
|
|
1082
|
-
**This conversion is available only if your project's RSpec is `3.0.0.beta2`
|
1082
|
+
**This conversion is available only if your project's RSpec is `3.0.0.beta2` or later.**
|
1083
1083
|
|
1084
1084
|
Targets:
|
1085
1085
|
|
data/README.md.erb
CHANGED
@@ -401,20 +401,13 @@ The one-liner (implicit receiver) `should`:
|
|
401
401
|
* Is provided by `rspec-core` gem.
|
402
402
|
* Is _not_ deprecated in RSpec 3.
|
403
403
|
* Does _not_ have the issue with delegate/proxy objects.
|
404
|
-
* There's the alternative syntax [`is_expected.to`](#one-liner-expectations) since RSpec 2.99.beta2
|
404
|
+
* There's the alternative syntax [`is_expected.to`](#one-liner-expectations) since RSpec 2.99.beta2.
|
405
405
|
|
406
406
|
## Supported Conversions
|
407
407
|
|
408
408
|
<%=
|
409
|
-
|
410
|
-
sections = readme.each_line.slice_before(/^## /)
|
411
|
-
|
412
|
-
supported_conversions_section = sections.find do |section|
|
413
|
-
section.first.include?('Supported Conversions')
|
414
|
-
end
|
415
|
-
|
409
|
+
supported_conversions_section = select_sections(readme, 2, 'Supported Conversions').first
|
416
410
|
table_of_contents(supported_conversions_section, 3)
|
417
|
-
|
418
411
|
%>
|
419
412
|
|
420
413
|
### Standard expectations
|
@@ -440,7 +433,7 @@ expect(obj).to_not matcher # with `--negative-form to_not`
|
|
440
433
|
|
441
434
|
### One-liner expectations
|
442
435
|
|
443
|
-
**This conversion is available only if your project's RSpec is `<%= Transpec::RSpecVersion.oneliner_is_expected_available_version %>`
|
436
|
+
**This conversion is available only if your project's RSpec is `<%= Transpec::RSpecVersion.oneliner_is_expected_available_version %>` or later.**
|
444
437
|
|
445
438
|
Targets:
|
446
439
|
|
@@ -773,7 +766,7 @@ Will be converted to:
|
|
773
766
|
allow(obj).to receive(:message)
|
774
767
|
|
775
768
|
# Conversion from `stub_chain` to `receive_message_chain` is available
|
776
|
-
# only if the target project's RSpec is <%= Transpec::RSpecVersion.receive_message_chain_available_version %>
|
769
|
+
# only if the target project's RSpec is <%= Transpec::RSpecVersion.receive_message_chain_available_version %> or later
|
777
770
|
allow(obj).to receive_message_chain(:foo, :bar, :baz)
|
778
771
|
|
779
772
|
allow_any_instance_of(Klass).to receive(:message)
|
@@ -1031,7 +1024,7 @@ Here's an excerpt from [the warning](https://github.com/rspec/rspec-core/blob/7d
|
|
1031
1024
|
|
1032
1025
|
### Custom matcher DSL
|
1033
1026
|
|
1034
|
-
**This conversion is available only if your project's RSpec is `<%= Transpec::RSpecVersion.non_should_matcher_protocol_available_version %>`
|
1027
|
+
**This conversion is available only if your project's RSpec is `<%= Transpec::RSpecVersion.non_should_matcher_protocol_available_version %>` or later.**
|
1035
1028
|
|
1036
1029
|
Targets:
|
1037
1030
|
|
data/lib/transpec/converter.rb
CHANGED
@@ -55,6 +55,7 @@ module Transpec
|
|
55
55
|
end
|
56
56
|
|
57
57
|
process_have(should.have_matcher)
|
58
|
+
process_raise_error(should.raise_error_matcher)
|
58
59
|
end
|
59
60
|
|
60
61
|
def process_oneliner_should(oneliner_should)
|
@@ -76,10 +77,13 @@ module Transpec
|
|
76
77
|
elsif @configuration.convert_oneliner? && @rspec_version.oneliner_is_expected_available?
|
77
78
|
oneliner_should.expectize!(negative_form, parenthesize)
|
78
79
|
end
|
80
|
+
|
81
|
+
process_raise_error(oneliner_should.raise_error_matcher)
|
79
82
|
end
|
80
83
|
|
81
84
|
def process_expect(expect)
|
82
85
|
process_have(expect.have_matcher)
|
86
|
+
process_raise_error(expect.raise_error_matcher)
|
83
87
|
process_messaging_host(expect.receive_matcher)
|
84
88
|
end
|
85
89
|
|
@@ -144,6 +148,7 @@ module Transpec
|
|
144
148
|
end
|
145
149
|
|
146
150
|
def process_raise_error(raise_error)
|
151
|
+
return unless raise_error
|
147
152
|
if @configuration.convert_deprecated_method?
|
148
153
|
raise_error.remove_error_specification_with_negative_expectation!
|
149
154
|
end
|
@@ -2,12 +2,16 @@
|
|
2
2
|
|
3
3
|
require 'transpec/syntax'
|
4
4
|
require 'transpec/syntax/mixin/expect_base'
|
5
|
-
require 'transpec/syntax/
|
5
|
+
require 'transpec/syntax/have'
|
6
|
+
require 'transpec/syntax/raise_error'
|
6
7
|
|
7
8
|
module Transpec
|
8
9
|
class Syntax
|
9
10
|
class Expect < Syntax
|
10
|
-
include Mixin::ExpectBase
|
11
|
+
include Mixin::ExpectBase
|
12
|
+
|
13
|
+
add_matcher Have
|
14
|
+
add_matcher RaiseError
|
11
15
|
|
12
16
|
def self.target_method?(receiver_node, method_name)
|
13
17
|
receiver_node.nil? && [:expect, :expect_any_instance_of].include?(method_name)
|
data/lib/transpec/syntax/have.rb
CHANGED
@@ -22,8 +22,6 @@ module Transpec
|
|
22
22
|
# for String (String responds to #size).
|
23
23
|
QUERY_METHOD_PRIORITIES = [:size, :count, :length].freeze
|
24
24
|
|
25
|
-
attr_reader :expectation
|
26
|
-
|
27
25
|
def self.target_method?(receiver_node, method_name)
|
28
26
|
receiver_node.nil? &&
|
29
27
|
[:have, :have_exactly, :have_at_least, :have_at_most].include?(method_name)
|
@@ -95,9 +93,9 @@ module Transpec
|
|
95
93
|
QUERY_METHOD_PRIORITIES.first
|
96
94
|
end
|
97
95
|
|
98
|
-
def replacement_subject_source(
|
99
|
-
|
100
|
-
source_builder.replacement_subject_source(
|
96
|
+
def replacement_subject_source(base_subject = nil)
|
97
|
+
base_subject ||= expectation.subject_node
|
98
|
+
source_builder.replacement_subject_source(base_subject)
|
101
99
|
end
|
102
100
|
|
103
101
|
def size_source
|
@@ -13,8 +13,13 @@ module Transpec
|
|
13
13
|
@size_source = size_source
|
14
14
|
end
|
15
15
|
|
16
|
-
def replacement_subject_source(
|
17
|
-
source =
|
16
|
+
def replacement_subject_source(base_subject)
|
17
|
+
source = case base_subject
|
18
|
+
when String then base_subject
|
19
|
+
when AST::Node then base_subject_source(base_subject)
|
20
|
+
else fail "Invalid base subject #{base_subject}"
|
21
|
+
end
|
22
|
+
|
18
23
|
if have.subject_is_owner_of_collection?
|
19
24
|
if have.collection_accessor_is_private?
|
20
25
|
source << ".send(#{have.collection_accessor.inspect}"
|
@@ -26,9 +31,26 @@ module Transpec
|
|
26
31
|
source << ".#{have.collection_accessor}#{collection_accessor_args_parentheses_source}"
|
27
32
|
end
|
28
33
|
end
|
34
|
+
|
29
35
|
source << ".#{have.query_method}"
|
30
36
|
end
|
31
37
|
|
38
|
+
def base_subject_source(node)
|
39
|
+
if node.send_type? && (arg_node = node.children[2])
|
40
|
+
left_of_arg_source = node.loc.selector.end.join(arg_node.loc.expression.begin).source
|
41
|
+
|
42
|
+
if left_of_arg_source.match(/\A\s*\Z/)
|
43
|
+
source = node.loc.expression.begin.join(node.loc.selector.end).source
|
44
|
+
source << '('
|
45
|
+
source << arg_node.loc.expression.begin.join(node.loc.expression.end).source
|
46
|
+
source << ')'
|
47
|
+
return source
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
node.loc.expression.source
|
52
|
+
end
|
53
|
+
|
32
54
|
def replacement_matcher_source(parenthesize_arg = true)
|
33
55
|
case have.expectation.current_syntax_type
|
34
56
|
when :should
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'active_support/concern'
|
4
4
|
require 'transpec/syntax/mixin/send'
|
5
|
+
require 'transpec/syntax/mixin/matcher_owner'
|
5
6
|
require 'transpec/syntax/receive'
|
6
7
|
require 'transpec/util'
|
7
8
|
|
@@ -10,17 +11,10 @@ module Transpec
|
|
10
11
|
module Mixin
|
11
12
|
module ExpectBase
|
12
13
|
extend ActiveSupport::Concern
|
13
|
-
include Send
|
14
|
+
include Send, MatcherOwner
|
14
15
|
|
15
16
|
included do
|
16
|
-
|
17
|
-
if Receive.dynamic_analysis_target_node?(matcher_node)
|
18
|
-
create_receive_matcher.register_request_for_dynamic_analysis(rewriter)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
alias_method :subject_node, :arg_node
|
23
|
-
alias_method :to_node, :parent_node
|
17
|
+
add_matcher Receive
|
24
18
|
end
|
25
19
|
|
26
20
|
def current_syntax_type
|
@@ -36,6 +30,18 @@ module Transpec
|
|
36
30
|
to_method_name == :to
|
37
31
|
end
|
38
32
|
|
33
|
+
def subject_node
|
34
|
+
arg_node || parent_node
|
35
|
+
end
|
36
|
+
|
37
|
+
def to_node
|
38
|
+
if parent_node.block_type? && parent_node.children.first.equal?(node)
|
39
|
+
parent_node.parent_node
|
40
|
+
else
|
41
|
+
parent_node
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
39
45
|
def matcher_node
|
40
46
|
to_arg_node = to_node.children[2]
|
41
47
|
Util.each_forward_chained_node(to_arg_node, :include_origin)
|
@@ -49,22 +55,6 @@ module Transpec
|
|
49
55
|
def subject_range
|
50
56
|
subject_node.loc.expression
|
51
57
|
end
|
52
|
-
|
53
|
-
def receive_matcher
|
54
|
-
return @receive_matcher if instance_variable_defined?(:@receive_matcher)
|
55
|
-
|
56
|
-
@receive_matcher ||= if Receive.conversion_target_node?(matcher_node, @runtime_data)
|
57
|
-
create_receive_matcher
|
58
|
-
else
|
59
|
-
nil
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
private
|
64
|
-
|
65
|
-
def create_receive_matcher
|
66
|
-
Receive.new(matcher_node, self, @source_rewriter, @runtime_data, @report)
|
67
|
-
end
|
68
58
|
end
|
69
59
|
end
|
70
60
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'active_support/concern'
|
4
|
+
|
5
|
+
module Transpec
|
6
|
+
class Syntax
|
7
|
+
module Mixin
|
8
|
+
module MatcherOwner
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
module ClassMethods
|
12
|
+
def add_matcher(matcher_class) # rubocop:disable MethodLength
|
13
|
+
matcher_accessor_name = "#{matcher_class.snake_case_name}_matcher"
|
14
|
+
matcher_ivar_name = "@#{matcher_accessor_name}"
|
15
|
+
matcher_creator_name = "create_#{matcher_class.snake_case_name}"
|
16
|
+
|
17
|
+
define_dynamic_analysis_request do |rewriter|
|
18
|
+
if matcher_class.dynamic_analysis_target_node?(matcher_node)
|
19
|
+
send(matcher_creator_name).register_request_for_dynamic_analysis(rewriter)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
define_method(matcher_accessor_name) do
|
24
|
+
if instance_variable_defined?(matcher_ivar_name)
|
25
|
+
return instance_variable_get(matcher_ivar_name)
|
26
|
+
end
|
27
|
+
|
28
|
+
if matcher_class.conversion_target_node?(matcher_node, @runtime_data)
|
29
|
+
instance_variable_set(matcher_ivar_name, send(matcher_creator_name))
|
30
|
+
else
|
31
|
+
instance_variable_set(matcher_ivar_name, nil)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
define_method(matcher_creator_name) do
|
36
|
+
matcher_class.new(matcher_node, self, @source_rewriter, @runtime_data, @report)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -2,8 +2,10 @@
|
|
2
2
|
|
3
3
|
require 'active_support/concern'
|
4
4
|
require 'transpec/syntax/mixin/send'
|
5
|
-
require 'transpec/syntax/mixin/
|
6
|
-
require 'transpec/syntax/
|
5
|
+
require 'transpec/syntax/mixin/matcher_owner'
|
6
|
+
require 'transpec/syntax/have'
|
7
|
+
require 'transpec/syntax/operator'
|
8
|
+
require 'transpec/syntax/raise_error'
|
7
9
|
require 'transpec/util'
|
8
10
|
|
9
11
|
module Transpec
|
@@ -11,14 +13,12 @@ module Transpec
|
|
11
13
|
module Mixin
|
12
14
|
module ShouldBase
|
13
15
|
extend ActiveSupport::Concern
|
14
|
-
include Send,
|
16
|
+
include Send, MatcherOwner
|
15
17
|
|
16
18
|
included do
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
19
|
+
add_matcher Have
|
20
|
+
add_matcher Operator
|
21
|
+
add_matcher RaiseError
|
22
22
|
end
|
23
23
|
|
24
24
|
def positive?
|
@@ -41,24 +41,6 @@ module Transpec
|
|
41
41
|
selector_range.join(expression_range.end)
|
42
42
|
end
|
43
43
|
end
|
44
|
-
|
45
|
-
def operator_matcher
|
46
|
-
return @operator_matcher if instance_variable_defined?(:@operator_matcher)
|
47
|
-
|
48
|
-
@operator_matcher ||= begin
|
49
|
-
if OperatorMatcher.conversion_target_node?(matcher_node, @runtime_data)
|
50
|
-
create_operator_matcher
|
51
|
-
else
|
52
|
-
nil
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
def create_operator_matcher
|
60
|
-
OperatorMatcher.new(matcher_node, @source_rewriter, @runtime_data, @report)
|
61
|
-
end
|
62
44
|
end
|
63
45
|
end
|
64
46
|
end
|
@@ -2,14 +2,15 @@
|
|
2
2
|
|
3
3
|
require 'transpec/syntax'
|
4
4
|
require 'transpec/syntax/mixin/send'
|
5
|
+
require 'transpec/syntax/mixin/owned_matcher'
|
5
6
|
require 'transpec/util'
|
6
7
|
require 'ast'
|
7
8
|
|
8
9
|
module Transpec
|
9
10
|
class Syntax
|
10
|
-
class
|
11
|
+
class Operator < Syntax
|
11
12
|
extend ::AST::Sexp
|
12
|
-
include Mixin::Send, Util
|
13
|
+
include Mixin::Send, Mixin::OwnedMatcher, Util
|
13
14
|
|
14
15
|
OPERATORS = [:==, :===, :<, :<=, :>, :>=, :=~].freeze
|
15
16
|
BE_NODE = s(:send, nil, :be)
|
@@ -32,14 +33,14 @@ module Transpec
|
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
|
-
def initialize(node, source_rewriter = nil, runtime_data = nil, report = nil)
|
36
|
+
def initialize(node, expectation, source_rewriter = nil, runtime_data = nil, report = nil)
|
36
37
|
operator_node = if node == BE_NODE
|
37
38
|
node.parent_node
|
38
39
|
else
|
39
40
|
node
|
40
41
|
end
|
41
42
|
|
42
|
-
super(operator_node, source_rewriter, runtime_data, report)
|
43
|
+
super(operator_node, expectation, source_rewriter, runtime_data, report)
|
43
44
|
end
|
44
45
|
|
45
46
|
def convert_operator!(parenthesize_arg = true)
|
@@ -2,18 +2,19 @@
|
|
2
2
|
|
3
3
|
require 'transpec/syntax'
|
4
4
|
require 'transpec/syntax/mixin/send'
|
5
|
+
require 'transpec/syntax/mixin/owned_matcher'
|
5
6
|
|
6
7
|
module Transpec
|
7
8
|
class Syntax
|
8
9
|
class RaiseError < Syntax
|
9
|
-
include Mixin::Send
|
10
|
+
include Mixin::Send, Mixin::OwnedMatcher
|
10
11
|
|
11
12
|
def self.target_method?(receiver_node, method_name)
|
12
13
|
receiver_node.nil? && method_name == :raise_error
|
13
14
|
end
|
14
15
|
|
15
16
|
def remove_error_specification_with_negative_expectation!
|
16
|
-
return if positive?
|
17
|
+
return if expectation.positive?
|
17
18
|
|
18
19
|
_receiver_node, _method_name, *arg_nodes = *node
|
19
20
|
return if arg_nodes.empty?
|
@@ -23,16 +24,6 @@ module Transpec
|
|
23
24
|
register_record
|
24
25
|
end
|
25
26
|
|
26
|
-
def positive?
|
27
|
-
@node.each_ancestor_node do |ancestor_node|
|
28
|
-
next unless ancestor_node.send_type?
|
29
|
-
expectation_method_name = ancestor_node.children[1]
|
30
|
-
return [:should, :to].include?(expectation_method_name)
|
31
|
-
end
|
32
|
-
|
33
|
-
false
|
34
|
-
end
|
35
|
-
|
36
27
|
private
|
37
28
|
|
38
29
|
def register_record
|
data/lib/transpec/version.rb
CHANGED
@@ -121,7 +121,8 @@ module Transpec
|
|
121
121
|
end
|
122
122
|
|
123
123
|
describe '#process_should' do
|
124
|
-
let(:should_object) { double('should_object').as_null_object }
|
124
|
+
let(:should_object) { double('should_object', raise_error_matcher: raise_error_object).as_null_object }
|
125
|
+
let(:raise_error_object) { double('raise_error_object').as_null_object }
|
125
126
|
|
126
127
|
context 'when Configuration#convert_should? is true' do
|
127
128
|
before { configuration.convert_should = true }
|
@@ -212,10 +213,16 @@ module Transpec
|
|
212
213
|
converter.process_should(should_object)
|
213
214
|
end
|
214
215
|
end
|
216
|
+
|
217
|
+
it 'invokes #process_raise_error with its #raise_error_matcher' do
|
218
|
+
converter.should_receive(:process_raise_error).with(raise_error_object)
|
219
|
+
converter.process_should(should_object)
|
220
|
+
end
|
215
221
|
end
|
216
222
|
|
217
223
|
describe '#process_oneliner_should' do
|
218
|
-
let(:should_object) { double('oneliner_should_object').as_null_object }
|
224
|
+
let(:should_object) { double('oneliner_should_object', raise_error_matcher: raise_error_object).as_null_object }
|
225
|
+
let(:raise_error_object) { double('raise_error_object').as_null_object }
|
219
226
|
|
220
227
|
shared_examples 'does nothing' do
|
221
228
|
it 'does nothing' do
|
@@ -363,11 +370,22 @@ module Transpec
|
|
363
370
|
end
|
364
371
|
end
|
365
372
|
end
|
373
|
+
|
374
|
+
it 'invokes #process_raise_error with its #raise_error_matcher' do
|
375
|
+
converter.should_receive(:process_raise_error).with(raise_error_object)
|
376
|
+
converter.process_oneliner_should(should_object)
|
377
|
+
end
|
366
378
|
end
|
367
379
|
|
368
380
|
describe '#process_expect' do
|
369
|
-
let(:expect_object)
|
381
|
+
let(:expect_object) do
|
382
|
+
double('expect_object',
|
383
|
+
receive_matcher: receive_object,
|
384
|
+
raise_error_matcher: raise_error_object
|
385
|
+
).as_null_object
|
386
|
+
end
|
370
387
|
let(:receive_object) { double('receive_object').as_null_object }
|
388
|
+
let(:raise_error_object) { double('raise_error_object').as_null_object }
|
371
389
|
|
372
390
|
context 'when Configuration#convert_have_items? is true' do
|
373
391
|
before { configuration.convert_have_items = true }
|
@@ -409,6 +427,11 @@ module Transpec
|
|
409
427
|
converter.should_receive(:process_any_instance_block).with(receive_object)
|
410
428
|
converter.process_expect(expect_object)
|
411
429
|
end
|
430
|
+
|
431
|
+
it 'invokes #process_raise_error with its #raise_error_matcher' do
|
432
|
+
converter.should_receive(:process_raise_error).with(raise_error_object)
|
433
|
+
converter.process_expect(expect_object)
|
434
|
+
end
|
412
435
|
end
|
413
436
|
|
414
437
|
describe '#process_allow' do
|
@@ -10,19 +10,73 @@ module Transpec
|
|
10
10
|
include_context 'syntax object', Expect, :expect_object
|
11
11
|
|
12
12
|
describe '#subject_node' do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
context 'when the subject is a normal argument' do
|
14
|
+
let(:source) do
|
15
|
+
<<-END
|
16
|
+
describe 'example' do
|
17
|
+
it 'is empty' do
|
18
|
+
expect(subject).to be_empty
|
19
|
+
end
|
18
20
|
end
|
19
|
-
|
20
|
-
|
21
|
+
END
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns the subject node' do
|
25
|
+
method_name = expect_object.subject_node.children[1]
|
26
|
+
method_name.should == :subject
|
27
|
+
end
|
21
28
|
end
|
22
29
|
|
23
|
-
|
24
|
-
|
25
|
-
|
30
|
+
context 'when the subject is a block' do
|
31
|
+
let(:source) do
|
32
|
+
<<-END
|
33
|
+
describe 'example' do
|
34
|
+
it 'raises error' do
|
35
|
+
expect { do_something }.to raise_error
|
36
|
+
end
|
37
|
+
end
|
38
|
+
END
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'returns the block node' do
|
42
|
+
expect_object.subject_node.should be_block_type
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#to_node' do
|
48
|
+
context 'when the subject is a normal argument' do
|
49
|
+
let(:source) do
|
50
|
+
<<-END
|
51
|
+
describe 'example' do
|
52
|
+
it 'is empty' do
|
53
|
+
expect(subject).to be_empty
|
54
|
+
end
|
55
|
+
end
|
56
|
+
END
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'returns #to node' do
|
60
|
+
method_name = expect_object.to_node.children[1]
|
61
|
+
method_name.should == :to
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'when the subject is a block' do
|
66
|
+
let(:source) do
|
67
|
+
<<-END
|
68
|
+
describe 'example' do
|
69
|
+
it 'raises error' do
|
70
|
+
expect { do_something }.to raise_error
|
71
|
+
end
|
72
|
+
end
|
73
|
+
END
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'returns #to node' do
|
77
|
+
method_name = expect_object.to_node.children[1]
|
78
|
+
method_name.should == :to
|
79
|
+
end
|
26
80
|
end
|
27
81
|
end
|
28
82
|
|
@@ -1049,6 +1049,64 @@ module Transpec
|
|
1049
1049
|
end
|
1050
1050
|
end
|
1051
1051
|
|
1052
|
+
context 'when it is `expect(method_returns_collection :some_arg).to have(2).items` form' do
|
1053
|
+
let(:source) do
|
1054
|
+
<<-END
|
1055
|
+
describe 'example' do
|
1056
|
+
it 'has 2 items' do
|
1057
|
+
expect(method_returns_collection :some_arg).to have(2).items
|
1058
|
+
end
|
1059
|
+
end
|
1060
|
+
END
|
1061
|
+
end
|
1062
|
+
|
1063
|
+
let(:expected_source) do
|
1064
|
+
<<-END
|
1065
|
+
describe 'example' do
|
1066
|
+
it 'has 2 items' do
|
1067
|
+
expect(method_returns_collection(:some_arg).size).to eq(2)
|
1068
|
+
end
|
1069
|
+
end
|
1070
|
+
END
|
1071
|
+
end
|
1072
|
+
|
1073
|
+
let(:have_object) { expect_object.have_matcher }
|
1074
|
+
|
1075
|
+
it 'converts into `expect(method_returns_collection(:some_arg).size).to eq(2)` form' do
|
1076
|
+
have_object.convert_to_standard_expectation!
|
1077
|
+
rewritten_source.should == expected_source
|
1078
|
+
end
|
1079
|
+
end
|
1080
|
+
|
1081
|
+
context 'when it is `expect(method_returns_collection(:some_arg) { do_something }).to have(2).items` form' do
|
1082
|
+
let(:source) do
|
1083
|
+
<<-END
|
1084
|
+
describe 'example' do
|
1085
|
+
it 'has 2 items' do
|
1086
|
+
expect(method_returns_collection(:some_arg) { do_something }).to have(2).items
|
1087
|
+
end
|
1088
|
+
end
|
1089
|
+
END
|
1090
|
+
end
|
1091
|
+
|
1092
|
+
let(:expected_source) do
|
1093
|
+
<<-END
|
1094
|
+
describe 'example' do
|
1095
|
+
it 'has 2 items' do
|
1096
|
+
expect(method_returns_collection(:some_arg) { do_something }.size).to eq(2)
|
1097
|
+
end
|
1098
|
+
end
|
1099
|
+
END
|
1100
|
+
end
|
1101
|
+
|
1102
|
+
let(:have_object) { expect_object.have_matcher }
|
1103
|
+
|
1104
|
+
it 'converts into `expect(method_returns_collection(:some_arg) { do_something }.size).to eq(2)` form' do
|
1105
|
+
have_object.convert_to_standard_expectation!
|
1106
|
+
rewritten_source.should == expected_source
|
1107
|
+
end
|
1108
|
+
end
|
1109
|
+
|
1052
1110
|
context 'when it is `it { should have(2).items }` form' do
|
1053
1111
|
let(:source) do
|
1054
1112
|
<<-END
|
@@ -70,8 +70,8 @@ module Transpec
|
|
70
70
|
END
|
71
71
|
end
|
72
72
|
|
73
|
-
it 'returns an instance of
|
74
|
-
should be_an(
|
73
|
+
it 'returns an instance of Operator' do
|
74
|
+
should be_an(Operator)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -146,7 +146,7 @@ module Transpec
|
|
146
146
|
END
|
147
147
|
end
|
148
148
|
|
149
|
-
it 'invokes
|
149
|
+
it 'invokes Operator#convert_operator!' do
|
150
150
|
should_object.operator_matcher.should_receive(:convert_operator!)
|
151
151
|
should_object.expectize!
|
152
152
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
|
-
require 'transpec/syntax/
|
4
|
+
require 'transpec/syntax/operator'
|
5
5
|
require 'transpec/syntax/should'
|
6
6
|
|
7
7
|
module Transpec
|
8
8
|
class Syntax
|
9
|
-
describe
|
9
|
+
describe Operator do
|
10
10
|
include ::AST::Sexp
|
11
11
|
include_context 'parsed objects'
|
12
12
|
include_context 'syntax object', Should, :should_object
|
@@ -2,133 +2,58 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
require 'transpec/syntax/raise_error'
|
5
|
+
require 'transpec/syntax/should'
|
6
|
+
require 'transpec/syntax/expect'
|
5
7
|
|
6
8
|
module Transpec
|
7
9
|
class Syntax
|
8
10
|
describe RaiseError do
|
9
11
|
include_context 'parsed objects'
|
10
|
-
include_context 'syntax object',
|
12
|
+
include_context 'syntax object', Should, :should_object
|
13
|
+
include_context 'syntax object', Expect, :expect_object
|
11
14
|
|
12
15
|
let(:record) { raise_error_object.report.records.first }
|
13
16
|
|
14
|
-
describe '#
|
15
|
-
|
16
|
-
|
17
|
-
context 'when it is `lambda { }.should raise_error` form' do
|
18
|
-
let(:source) do
|
19
|
-
<<-END
|
20
|
-
describe 'example' do
|
21
|
-
it 'raises error' do
|
22
|
-
lambda { do_something }.should raise_error
|
23
|
-
end
|
24
|
-
end
|
25
|
-
END
|
26
|
-
end
|
27
|
-
|
28
|
-
it { should be_true }
|
29
|
-
end
|
30
|
-
|
31
|
-
context 'when it is `expect { }.to raise_error` form' do
|
32
|
-
let(:source) do
|
33
|
-
<<-END
|
34
|
-
describe 'example' do
|
35
|
-
it 'raises error' do
|
36
|
-
expect { do_something }.to raise_error
|
37
|
-
end
|
38
|
-
end
|
39
|
-
END
|
40
|
-
end
|
41
|
-
|
42
|
-
it { should be_true }
|
43
|
-
end
|
44
|
-
|
45
|
-
context 'when it is `lambda { }.should raise_error { |error| ... }` form' do
|
46
|
-
let(:source) do
|
47
|
-
<<-END
|
48
|
-
describe 'example' do
|
49
|
-
it 'raises error' do
|
50
|
-
lambda { do_something }.should raise_error { |error| do_anything }
|
51
|
-
end
|
52
|
-
end
|
53
|
-
END
|
54
|
-
end
|
55
|
-
|
56
|
-
it { should be_true }
|
57
|
-
end
|
58
|
-
|
59
|
-
context 'when it is `expect { }.to raise_error { |error| ... }` form' do
|
60
|
-
let(:source) do
|
61
|
-
<<-END
|
62
|
-
describe 'example' do
|
63
|
-
it 'raises error' do
|
64
|
-
expect { do_something }.to raise_error { |error| do_anything }
|
65
|
-
end
|
66
|
-
end
|
67
|
-
END
|
68
|
-
end
|
69
|
-
|
70
|
-
it { should be_true }
|
17
|
+
describe '#remove_error_specification_with_negative_expectation!' do
|
18
|
+
before do
|
19
|
+
raise_error_object.remove_error_specification_with_negative_expectation!
|
71
20
|
end
|
72
21
|
|
73
|
-
context 'when it is `lambda { }.
|
22
|
+
context 'when it is `lambda { }.should raise_error(SpecificErrorClass)` form' do
|
74
23
|
let(:source) do
|
75
24
|
<<-END
|
76
25
|
describe 'example' do
|
77
|
-
it '
|
78
|
-
lambda { do_something }.
|
26
|
+
it 'raises SpecificErrorClass' do
|
27
|
+
lambda { do_something }.should raise_error(SpecificErrorClass)
|
79
28
|
end
|
80
29
|
end
|
81
30
|
END
|
82
31
|
end
|
83
32
|
|
84
|
-
|
85
|
-
end
|
33
|
+
let(:raise_error_object) { should_object.raise_error_matcher }
|
86
34
|
|
87
|
-
|
88
|
-
|
89
|
-
<<-END
|
90
|
-
describe 'example' do
|
91
|
-
it 'does not raise error' do
|
92
|
-
expect { do_something }.not_to raise_error
|
93
|
-
end
|
94
|
-
end
|
95
|
-
END
|
35
|
+
it 'does nothing' do
|
36
|
+
rewritten_source.should == source
|
96
37
|
end
|
97
38
|
|
98
|
-
it
|
99
|
-
|
100
|
-
|
101
|
-
context 'when it is `expect { }.to_not raise_error` form' do
|
102
|
-
let(:source) do
|
103
|
-
<<-END
|
104
|
-
describe 'example' do
|
105
|
-
it 'does not raise error' do
|
106
|
-
expect { do_something }.to_not raise_error
|
107
|
-
end
|
108
|
-
end
|
109
|
-
END
|
39
|
+
it 'reports nothing' do
|
40
|
+
raise_error_object.report.records.should be_empty
|
110
41
|
end
|
111
|
-
|
112
|
-
it { should be_false }
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
describe '#remove_error_specification_with_negative_expectation!' do
|
117
|
-
before do
|
118
|
-
raise_error_object.remove_error_specification_with_negative_expectation!
|
119
42
|
end
|
120
43
|
|
121
|
-
context 'when it is `
|
44
|
+
context 'when it is `expect { }.to raise_error(SpecificErrorClass)` form' do
|
122
45
|
let(:source) do
|
123
46
|
<<-END
|
124
47
|
describe 'example' do
|
125
48
|
it 'raises SpecificErrorClass' do
|
126
|
-
|
49
|
+
expect { do_something }.to raise_error(SpecificErrorClass)
|
127
50
|
end
|
128
51
|
end
|
129
52
|
END
|
130
53
|
end
|
131
54
|
|
55
|
+
let(:raise_error_object) { expect_object.raise_error_matcher }
|
56
|
+
|
132
57
|
it 'does nothing' do
|
133
58
|
rewritten_source.should == source
|
134
59
|
end
|
@@ -138,17 +63,19 @@ module Transpec
|
|
138
63
|
end
|
139
64
|
end
|
140
65
|
|
141
|
-
context 'when it is `
|
66
|
+
context 'when it is `lambda { }.should raise_error(SpecificErrorClass) { |error| ... }` form' do
|
142
67
|
let(:source) do
|
143
68
|
<<-END
|
144
69
|
describe 'example' do
|
145
70
|
it 'raises SpecificErrorClass' do
|
146
|
-
|
71
|
+
lambda { do_something }.should raise_error(SpecificErrorClass) { |error| do_anything }
|
147
72
|
end
|
148
73
|
end
|
149
74
|
END
|
150
75
|
end
|
151
76
|
|
77
|
+
let(:raise_error_object) { should_object.raise_error_matcher }
|
78
|
+
|
152
79
|
it 'does nothing' do
|
153
80
|
rewritten_source.should == source
|
154
81
|
end
|
@@ -158,17 +85,19 @@ module Transpec
|
|
158
85
|
end
|
159
86
|
end
|
160
87
|
|
161
|
-
context 'when it is `
|
88
|
+
context 'when it is `expect { }.to raise_error(SpecificErrorClass) { |error| ... }` form' do
|
162
89
|
let(:source) do
|
163
90
|
<<-END
|
164
91
|
describe 'example' do
|
165
92
|
it 'raises SpecificErrorClass' do
|
166
|
-
|
93
|
+
expect { do_something }.to raise_error(SpecificErrorClass) { |error| do_anything }
|
167
94
|
end
|
168
95
|
end
|
169
96
|
END
|
170
97
|
end
|
171
98
|
|
99
|
+
let(:raise_error_object) { expect_object.raise_error_matcher }
|
100
|
+
|
172
101
|
it 'does nothing' do
|
173
102
|
rewritten_source.should == source
|
174
103
|
end
|
@@ -178,17 +107,19 @@ module Transpec
|
|
178
107
|
end
|
179
108
|
end
|
180
109
|
|
181
|
-
context 'when it is `expect { }.to raise_error(SpecificErrorClass)
|
110
|
+
context 'when it is `expect { }.to raise_error(SpecificErrorClass).with_message(message)` form' do
|
182
111
|
let(:source) do
|
183
112
|
<<-END
|
184
113
|
describe 'example' do
|
185
|
-
it 'raises SpecificErrorClass' do
|
186
|
-
expect { do_something }.to raise_error(SpecificErrorClass)
|
114
|
+
it 'raises SpecificErrorClass with message' do
|
115
|
+
expect { do_something }.to raise_error(SpecificErrorClass).with_message(message)
|
187
116
|
end
|
188
117
|
end
|
189
118
|
END
|
190
119
|
end
|
191
120
|
|
121
|
+
let(:raise_error_object) { expect_object.raise_error_matcher }
|
122
|
+
|
192
123
|
it 'does nothing' do
|
193
124
|
rewritten_source.should == source
|
194
125
|
end
|
@@ -219,6 +150,8 @@ module Transpec
|
|
219
150
|
END
|
220
151
|
end
|
221
152
|
|
153
|
+
let(:raise_error_object) { should_object.raise_error_matcher }
|
154
|
+
|
222
155
|
it 'converts into `lambda { }.should_not raise_error` form' do
|
223
156
|
rewritten_source.should == expected_source
|
224
157
|
end
|
@@ -251,6 +184,8 @@ module Transpec
|
|
251
184
|
END
|
252
185
|
end
|
253
186
|
|
187
|
+
let(:raise_error_object) { expect_object.raise_error_matcher }
|
188
|
+
|
254
189
|
it 'converts into `expect { }.not_to raise_error` form' do
|
255
190
|
rewritten_source.should == expected_source
|
256
191
|
end
|
@@ -277,6 +212,8 @@ module Transpec
|
|
277
212
|
END
|
278
213
|
end
|
279
214
|
|
215
|
+
let(:raise_error_object) { expect_object.raise_error_matcher }
|
216
|
+
|
280
217
|
it 'converts into `expect { }.to_not raise_error` form' do
|
281
218
|
rewritten_source.should == expected_source
|
282
219
|
end
|
@@ -309,6 +246,8 @@ module Transpec
|
|
309
246
|
END
|
310
247
|
end
|
311
248
|
|
249
|
+
let(:raise_error_object) { expect_object.raise_error_matcher }
|
250
|
+
|
312
251
|
it 'converts into `expect { }.not_to raise_error` form' do
|
313
252
|
rewritten_source.should == expected_source
|
314
253
|
end
|
@@ -341,6 +280,8 @@ module Transpec
|
|
341
280
|
END
|
342
281
|
end
|
343
282
|
|
283
|
+
let(:raise_error_object) { expect_object.raise_error_matcher }
|
284
|
+
|
344
285
|
it 'converts into `expect { }.not_to raise_error` form' do
|
345
286
|
rewritten_source.should == expected_source
|
346
287
|
end
|
@@ -373,6 +314,8 @@ module Transpec
|
|
373
314
|
END
|
374
315
|
end
|
375
316
|
|
317
|
+
let(:raise_error_object) { expect_object.raise_error_matcher }
|
318
|
+
|
376
319
|
it 'converts into `expect { }.not_to raise_error` form' do
|
377
320
|
rewritten_source.should == expected_source
|
378
321
|
end
|
@@ -93,8 +93,8 @@ module Transpec
|
|
93
93
|
END
|
94
94
|
end
|
95
95
|
|
96
|
-
it 'returns an instance of
|
97
|
-
should be_an(
|
96
|
+
it 'returns an instance of Operator' do
|
97
|
+
should be_an(Operator)
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -179,7 +179,7 @@ module Transpec
|
|
179
179
|
END
|
180
180
|
end
|
181
181
|
|
182
|
-
it 'invokes
|
182
|
+
it 'invokes Operator#convert_operator!' do
|
183
183
|
should_object.operator_matcher.should_receive(:convert_operator!)
|
184
184
|
should_object.expectize!
|
185
185
|
end
|
data/tasks/readme.rake
CHANGED
@@ -28,8 +28,18 @@ def generate_readme
|
|
28
28
|
erb.result(binding)
|
29
29
|
end
|
30
30
|
|
31
|
+
def select_sections(content, header_level, *section_names)
|
32
|
+
header_pattern = pattern_for_header_level(header_level)
|
33
|
+
sections = content.each_line.slice_before(header_pattern)
|
34
|
+
|
35
|
+
sections.select do |section|
|
36
|
+
header_line = section.first
|
37
|
+
section_names.any? { |name| header_line.include?(name) }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
31
41
|
def table_of_contents(lines, header_level)
|
32
|
-
header_pattern =
|
42
|
+
header_pattern = pattern_for_header_level(header_level)
|
33
43
|
|
34
44
|
titles = lines.map do |line|
|
35
45
|
next unless line.match(header_pattern)
|
@@ -41,3 +51,7 @@ def table_of_contents(lines, header_level)
|
|
41
51
|
"* [#{title}](#{anchor})"
|
42
52
|
end.join("\n")
|
43
53
|
end
|
54
|
+
|
55
|
+
def pattern_for_header_level(level)
|
56
|
+
/^#{'#' * level}[^#]/
|
57
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: transpec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuji Nakayama
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -268,7 +268,7 @@ files:
|
|
268
268
|
- lib/transpec/syntax/mixin/any_instance_block.rb
|
269
269
|
- lib/transpec/syntax/mixin/expect_base.rb
|
270
270
|
- lib/transpec/syntax/mixin/expectizable.rb
|
271
|
-
- lib/transpec/syntax/mixin/
|
271
|
+
- lib/transpec/syntax/mixin/matcher_owner.rb
|
272
272
|
- lib/transpec/syntax/mixin/messaging_host.rb
|
273
273
|
- lib/transpec/syntax/mixin/monkey_patch.rb
|
274
274
|
- lib/transpec/syntax/mixin/monkey_patch_any_instance.rb
|
@@ -278,7 +278,7 @@ files:
|
|
278
278
|
- lib/transpec/syntax/mixin/should_base.rb
|
279
279
|
- lib/transpec/syntax/mixin/useless_and_return.rb
|
280
280
|
- lib/transpec/syntax/oneliner_should.rb
|
281
|
-
- lib/transpec/syntax/
|
281
|
+
- lib/transpec/syntax/operator.rb
|
282
282
|
- lib/transpec/syntax/raise_error.rb
|
283
283
|
- lib/transpec/syntax/receive.rb
|
284
284
|
- lib/transpec/syntax/rspec_configure.rb
|
@@ -320,7 +320,7 @@ files:
|
|
320
320
|
- spec/transpec/syntax/matcher_definition_spec.rb
|
321
321
|
- spec/transpec/syntax/method_stub_spec.rb
|
322
322
|
- spec/transpec/syntax/oneliner_should_spec.rb
|
323
|
-
- spec/transpec/syntax/
|
323
|
+
- spec/transpec/syntax/operator_spec.rb
|
324
324
|
- spec/transpec/syntax/raise_error_spec.rb
|
325
325
|
- spec/transpec/syntax/receive_spec.rb
|
326
326
|
- spec/transpec/syntax/rspec_configure_spec.rb
|
@@ -391,7 +391,7 @@ test_files:
|
|
391
391
|
- spec/transpec/syntax/matcher_definition_spec.rb
|
392
392
|
- spec/transpec/syntax/method_stub_spec.rb
|
393
393
|
- spec/transpec/syntax/oneliner_should_spec.rb
|
394
|
-
- spec/transpec/syntax/
|
394
|
+
- spec/transpec/syntax/operator_spec.rb
|
395
395
|
- spec/transpec/syntax/raise_error_spec.rb
|
396
396
|
- spec/transpec/syntax/receive_spec.rb
|
397
397
|
- spec/transpec/syntax/rspec_configure_spec.rb
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'active_support/concern'
|
4
|
-
require 'transpec/syntax/have'
|
5
|
-
|
6
|
-
module Transpec
|
7
|
-
class Syntax
|
8
|
-
module Mixin
|
9
|
-
module HaveMatcherOwner
|
10
|
-
extend ActiveSupport::Concern
|
11
|
-
|
12
|
-
included do
|
13
|
-
define_dynamic_analysis_request do |rewriter|
|
14
|
-
if Have.dynamic_analysis_target_node?(matcher_node)
|
15
|
-
create_have_matcher.register_request_for_dynamic_analysis(rewriter)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def have_matcher # rubocop:disable PredicateName
|
21
|
-
return @have_matcher if instance_variable_defined?(:@have_matcher)
|
22
|
-
|
23
|
-
@have_matcher ||= if Have.conversion_target_node?(matcher_node, @runtime_data)
|
24
|
-
create_have_matcher
|
25
|
-
else
|
26
|
-
nil
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def create_have_matcher
|
33
|
-
Have.new(matcher_node, self, @source_rewriter, @runtime_data, @report)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|