transpec 1.5.1 → 1.6.0

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.
@@ -35,7 +35,7 @@ module Transpec
35
35
  ]
36
36
  end
37
37
 
38
- [:one_liner_is_expected_available?].each do |method|
38
+ [:oneliner_is_expected_available?].each do |method|
39
39
  include_examples 'feature availability', method, [
40
40
  ['2.14.0', false],
41
41
  ['2.99.0.beta1', false],
@@ -59,7 +59,7 @@ module Transpec
59
59
  ]
60
60
  end
61
61
 
62
- [:receive_message_chain_available?].each do |method|
62
+ [:receive_message_chain_available?, :non_should_matcher_protocol_available?].each do |method|
63
63
  include_examples 'feature availability', method, [
64
64
  ['2.14.0', false],
65
65
  ['2.99.0.beta1', false],
@@ -45,54 +45,106 @@ module Transpec
45
45
  end
46
46
 
47
47
  1.times do
48
- in_normal_block
49
- end
48
+ in_block
49
+ end
50
+ end
51
+
52
+ feature 'Capybara DSL' do
53
+ background do
54
+ in_background
55
+ end
56
+
57
+ given(:foo) do
58
+ in_given
59
+ end
60
+
61
+ scenario 'some page shows something' do
62
+ in_scenario
63
+ end
64
+ end
65
+ END
66
+ end
67
+
68
+ [
69
+ [
70
+ 'send nil :top_level',
71
+ 'in top level',
72
+ []
73
+ ], [
74
+ 'send nil :in_before',
75
+ 'in before block in RSpec.configure',
76
+ [:rspec_configure, :each_before_after]
77
+ ], [
78
+ 'module',
79
+ 'at module definition in top level',
80
+ []
81
+ ], [
82
+ 'const nil :SomeModule',
83
+ 'at constant of module definition',
84
+ []
85
+ ], [
86
+ 'send nil :in_module',
87
+ 'in module',
88
+ [:module]
89
+ ], [
90
+ 'send nil :describe',
91
+ 'at #describe in module',
92
+ [:module]
93
+ ], [
94
+ 'def :some_method',
95
+ 'at method definition in #describe in module',
96
+ [:module, :example_group]
97
+ ], [
98
+ 'arg :some_arg',
99
+ 'at method argument in #describe in module',
100
+ [:module, :example_group, :def]
101
+ ], [
102
+ 'send nil :do_something',
103
+ 'in method in #describe in module',
104
+ [:module, :example_group, :def]
105
+ ], [
106
+ 'send nil :it',
107
+ 'at #it in #describe in module',
108
+ [:module, :example_group]
109
+ ], [
110
+ 'str "is 1"',
111
+ "at #it's description in #describe in module",
112
+ [:module, :example_group]
113
+ ], [
114
+ 'send nil :in_example',
115
+ '#it in #describe in module',
116
+ [:module, :example_group, :example]
117
+ ], [
118
+ 'send nil :in_block',
119
+ 'in normal block in #describe in module',
120
+ [:module]
121
+ ], [
122
+ 'send nil :in_background',
123
+ 'in #background block in #feature',
124
+ [:example_group, :each_before_after]
125
+ ], [
126
+ 'send nil :in_given',
127
+ 'in #given block in #feature',
128
+ [:example_group, :helper]
129
+ ], [
130
+ 'send nil :in_scenario',
131
+ 'in #scenario block in #feature',
132
+ [:example_group, :example]
133
+ ]
134
+ ].each do |target_node_id, description, expected_scopes|
135
+ context "when #{description}" do
136
+ let(:target_node) do
137
+ ast.each_node.find do |node|
138
+ node_id(node) == target_node_id
139
+ end
140
+ end
141
+
142
+ it "returns #{expected_scopes.inspect}" do
143
+ fail 'Target node is not found!' unless target_node
144
+
145
+ context_inspector = StaticContextInspector.new(target_node)
146
+ context_inspector.scopes.should == expected_scopes
50
147
  end
51
- END
52
- end
53
-
54
- it 'returns scope stack' do
55
- ast.each_node do |node|
56
- expected_scopes = begin
57
- case node_id(node)
58
- when 'send nil :top_level'
59
- []
60
- when 'send nil :in_before'
61
- [:rspec_configure, :each_before_after]
62
- when 'module'
63
- []
64
- when 'const nil :SomeModule'
65
- # [:module] # TODO
66
- when 'send nil :in_module'
67
- [:module]
68
- when 'send nil :describe'
69
- # [:module] # TODO
70
- when 'def :some_method'
71
- [:module, :example_group]
72
- when 'arg :some_arg'
73
- # [:module, :example_group] # TODO
74
- when 'send nil :do_something'
75
- [:module, :example_group, :def]
76
- when 'send nil :it'
77
- # [:module, :example_group] # TODO
78
- when 'str "is 1"'
79
- # [:module, :example_group] # TODO
80
- when 'send nil :in_example'
81
- [:module, :example_group, :example]
82
- when 'send nil :in_normal_block'
83
- [:module]
84
- end
85
- end
86
-
87
- # TODO: Some scope nodes have special child nodes
88
- # such as their arguments or their subject.
89
- # But from scope point of view, the child nodes are not in the parent's scope,
90
- # they should be in the next outer scope.
91
-
92
- next unless expected_scopes
93
-
94
- context_inspector = StaticContextInspector.new(node)
95
- context_inspector.scopes.should == expected_scopes
96
148
  end
97
149
  end
98
150
  end
@@ -0,0 +1,59 @@
1
+ # coding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require 'transpec/syntax/matcher_definition'
5
+
6
+ module Transpec
7
+ class Syntax
8
+ describe MatcherDefinition do
9
+ include_context 'parsed objects'
10
+ include_context 'syntax object', MatcherDefinition, :matcher_definition
11
+
12
+ let(:record) { matcher_definition.report.records.last }
13
+
14
+ describe '#convert_deprecated_method!' do
15
+ before do
16
+ matcher_definition.convert_deprecated_method!
17
+ end
18
+
19
+ [
20
+ [:match_for_should, :match],
21
+ [:match_for_should_not, :match_when_negated],
22
+ [:failure_message_for_should, :failure_message],
23
+ [:failure_message_for_should_not, :failure_message_when_negated]
24
+ ].each do |target_method, converted_method|
25
+ context "when it is `#{target_method} { }` form" do
26
+ let(:source) do
27
+ <<-END
28
+ RSpec::Matchers.define :be_awesome do |expected|
29
+ #{target_method} do |actual|
30
+ true
31
+ end
32
+ end
33
+ END
34
+ end
35
+
36
+ let(:expected_source) do
37
+ <<-END
38
+ RSpec::Matchers.define :be_awesome do |expected|
39
+ #{converted_method} do |actual|
40
+ true
41
+ end
42
+ end
43
+ END
44
+ end
45
+
46
+ it "converts into `#{converted_method} { }` form" do
47
+ rewritten_source.should == expected_source
48
+ end
49
+
50
+ it "adds record `#{target_method} { }` -> `#{converted_method} { }`" do
51
+ record.original_syntax.should == "#{target_method} { }"
52
+ record.converted_syntax.should == "#{converted_method} { }"
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
data/tasks/readme.rake CHANGED
@@ -2,10 +2,27 @@
2
2
 
3
3
  desc 'Generate README.md'
4
4
  task :readme do
5
+ File.write('README.md', generate_readme)
6
+ end
7
+
8
+ namespace :readme do
9
+ task :check do
10
+ unless File.read('README.md') == generate_readme
11
+ fail <<-END.gsub(/^\s+\|/, '').chomp
12
+ |README.md and README.md.erb are out of sync!
13
+ |If you need to modify the content of README.md:
14
+ | * Edit README.md.erb.
15
+ | * Run `bundle exec rake readme`.
16
+ | * Commit both files.
17
+ END
18
+ end
19
+ end
20
+ end
21
+
22
+ def generate_readme
5
23
  require 'erb'
6
24
  require 'transpec/cli'
7
25
 
8
26
  erb = ERB.new(File.read('README.md.erb'), nil, '-')
9
- content = erb.result(binding)
10
- File.write('README.md', content)
27
+ erb.result(binding)
11
28
  end
data/transpec.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_runtime_dependency 'parser', '~> 2.0'
23
+ spec.add_runtime_dependency 'parser', '~> 2.1'
24
24
  spec.add_runtime_dependency 'bundler', '~> 1.3'
25
25
  spec.add_runtime_dependency 'rainbow', '~> 1.1'
26
26
  spec.add_runtime_dependency 'json', '~> 1.8'
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.5.1
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji Nakayama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-18 00:00:00.000000000 Z
11
+ date: 2013-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '2.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -242,6 +242,7 @@ files:
242
242
  - lib/transpec/syntax/expect.rb
243
243
  - lib/transpec/syntax/have.rb
244
244
  - lib/transpec/syntax/its.rb
245
+ - lib/transpec/syntax/matcher_definition.rb
245
246
  - lib/transpec/syntax/method_stub.rb
246
247
  - lib/transpec/syntax/mixin/allow_no_message.rb
247
248
  - lib/transpec/syntax/mixin/any_instance.rb
@@ -285,6 +286,7 @@ files:
285
286
  - spec/transpec/syntax/expect_spec.rb
286
287
  - spec/transpec/syntax/have_spec.rb
287
288
  - spec/transpec/syntax/its_spec.rb
289
+ - spec/transpec/syntax/matcher_definition_spec.rb
288
290
  - spec/transpec/syntax/method_stub_spec.rb
289
291
  - spec/transpec/syntax/oneliner_should_spec.rb
290
292
  - spec/transpec/syntax/operator_matcher_spec.rb
@@ -353,6 +355,7 @@ test_files:
353
355
  - spec/transpec/syntax/expect_spec.rb
354
356
  - spec/transpec/syntax/have_spec.rb
355
357
  - spec/transpec/syntax/its_spec.rb
358
+ - spec/transpec/syntax/matcher_definition_spec.rb
356
359
  - spec/transpec/syntax/method_stub_spec.rb
357
360
  - spec/transpec/syntax/oneliner_should_spec.rb
358
361
  - spec/transpec/syntax/operator_matcher_spec.rb