rspec-parameterized 0.1.0 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d776a568792d33ea0eaa01f39705ca68cff76078
4
- data.tar.gz: fdbb572188d277665e6dd1f6d163464c6cb26425
3
+ metadata.gz: 24dea93292aa96d393a92768be187af611221e77
4
+ data.tar.gz: 68e63fb870c354828faf43f206bec637409fe720
5
5
  SHA512:
6
- metadata.gz: 46bd4b1d00517f8cc4a68fe57e31615ec2495d6cb28c6e0c384aa40d5494debe0518ed531eeafbea37cde2c5dfa80f0d2ec18ea9a5a9e2aaead35a7e98e2582f
7
- data.tar.gz: d7c3acaff5f7e3cf2f9878d58022399bdf0107892cfe0dd65dfd5a7ffab00a116c6b3dc7940be9c0b8633e62e16664d11b146b27abb87bdaeb3baffefa53750c
6
+ metadata.gz: 628f3013962c640461b7924e464b53a756baaf2d1a609662b72b8492daa7947eb565229bcff5eca7aa84a0713afe4d9b88c5d9ab8ec796ee40be6e7c590c48a5
7
+ data.tar.gz: c3d753b0284206cf8e659078a153cce04cdecbaa786c3592ce644a0c7e969a2373b00f7bbb39928d0114f67051c476aef6ce06c5c2eab31cf2b0886e50cfb20f
data/.gitignore CHANGED
@@ -15,3 +15,6 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+
19
+ gemfiles/*.lock
20
+ gemfiles/.bundle
data/.travis.yml CHANGED
@@ -2,6 +2,11 @@ rvm:
2
2
  - 1.9.3
3
3
  - 2.0
4
4
  - 2.1
5
+
6
+ gemfile:
7
+ - gemfiles/rspec2.gemfile
8
+ - gemfiles/rspec3.gemfile
9
+
5
10
  matrix:
6
11
  allow_failures:
7
12
  - rvm: 1.9.3
data/README.md CHANGED
@@ -2,21 +2,39 @@
2
2
 
3
3
  Support simple parameterized test syntax in rspec.
4
4
 
5
- describe "plus" do
6
- where(:a, :b, :answer) do
7
- [
8
- [1 , 2 , 3],
9
- [5 , 8 , 13],
10
- [0 , 0 , 0]
11
- ]
12
- end
13
-
14
- with_them do
15
- it "should do additions" do
16
- (a + b).should == answer
17
- end
18
- end
5
+ ```ruby
6
+ describe "plus" do
7
+ where(:a, :b, :answer) do
8
+ [
9
+ [1 , 2 , 3],
10
+ [5 , 8 , 13],
11
+ [0 , 0 , 0]
12
+ ]
13
+ end
14
+
15
+ with_them do
16
+ it "should do additions" do
17
+ (a + b).should == answer
19
18
  end
19
+ end
20
+ end
21
+
22
+ describe "plus" do
23
+ using RSpec::Parameterized::TableSyntax
24
+
25
+ where(:a, :b, :answer) do
26
+ 1 | 2 | 3
27
+ 5 | 8 | 13
28
+ 0 | 0 | 0
29
+ end
30
+
31
+ with_them do
32
+ it "should do additions" do
33
+ (a + b).should == answer
34
+ end
35
+ end
36
+ end
37
+ ```
20
38
 
21
39
  I was inspired by [udzura's mock](https://gist.github.com/1881139).
22
40
 
data/Rakefile CHANGED
@@ -6,6 +6,23 @@ begin
6
6
  require 'rspec/core/rake_task'
7
7
  RSpec::Core::RakeTask.new(:spec) do |spec|
8
8
  spec.pattern = 'spec/**/*_spec.rb'
9
- spec.rspec_opts = ['-cfs']
9
+ spec.rspec_opts = ['-c -f d']
10
+ end
11
+ end
12
+
13
+ namespace :spec do
14
+ %w(rspec2 rspec3).each do |gemfile|
15
+ desc "Run Tests by #{gemfile}.gemfile"
16
+ task gemfile do
17
+ sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle install --path .bundle"
18
+ sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle exec rake -t spec"
19
+ end
20
+ end
21
+
22
+ desc "Run All Tests"
23
+ task :all do
24
+ %w(rspec2 rspec3).each do |gemfile|
25
+ Rake::Task["spec:#{gemfile}"].invoke
26
+ end
10
27
  end
11
28
  end
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem "rspec", "~> 2.14"
4
+
5
+ gemspec path: "../"
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem "rspec", ">= 3.0.0.rc1", "< 3.1"
4
+
5
+ gemspec path: "../"
@@ -5,8 +5,9 @@ require 'proc_to_ast'
5
5
 
6
6
  module RSpec
7
7
  module Parameterized
8
- module ExampleGroupMethods
8
+ autoload :TableSyntax, 'rspec/parameterized/table_syntax'
9
9
 
10
+ module ExampleGroupMethods
10
11
  # capsulize parameter attributes
11
12
  class Parameter
12
13
  attr_reader :arg_names, :table_format, :block
@@ -18,7 +19,7 @@ module RSpec
18
19
 
19
20
  # Set parameters to be bound in specs under this example group.
20
21
  #
21
- # ## Example
22
+ # ## Example1
22
23
  #
23
24
  # where(:a, :b, :answer) do
24
25
  # [
@@ -28,6 +29,14 @@ module RSpec
28
29
  # ]
29
30
  # end
30
31
  #
32
+ # ## Example2
33
+ # using RSpec::Parameterized::TableSyntax
34
+ # where(:a, :b, :answer) do
35
+ # 1 | 2 | 3 >
36
+ # 5 | 8 | 13 >
37
+ # 0 | 0 | 0
38
+ # end
39
+ #
31
40
  def where(*args, &b)
32
41
  set_parameters(args, false, &b)
33
42
  end
@@ -117,10 +126,6 @@ module RSpec
117
126
  instance.instance_eval(source_fragment)
118
127
  end
119
128
 
120
- def ruby2ruby
121
- @ruby2ruby ||= Ruby2Ruby.new
122
- end
123
-
124
129
  def define_cases(parameter, *args, &block)
125
130
  instance = new # for evaluate let methods.
126
131
  if defined?(self.superclass::LetDefinitions)
@@ -130,7 +135,8 @@ module RSpec
130
135
  if parameter.table_format
131
136
  param_sets = separate_table_like_block(parameter.block)
132
137
  else
133
- param_sets = instance.instance_eval(&parameter.block)
138
+ extracted = instance.instance_eval(&parameter.block)
139
+ param_sets = extracted.is_a?(Array) ? extracted : extracted.to_params
134
140
  end
135
141
 
136
142
  # for only one parameters
@@ -0,0 +1,49 @@
1
+ module RSpec
2
+ module Parameterized
3
+ class Table
4
+ attr_reader :last_row
5
+
6
+ def initialize
7
+ @rows = []
8
+ @last_row = nil
9
+ end
10
+
11
+ def add_row(row)
12
+ unless @rows.find {|r| r.object_id == row.object_id}
13
+ @rows << row
14
+ @last_row = row
15
+ end
16
+ self
17
+ end
18
+
19
+ def add_param_to_last_row(param)
20
+ last_row.add_param(param)
21
+ self
22
+ end
23
+ alias :| :add_param_to_last_row
24
+
25
+ def to_a
26
+ @rows.map(&:to_a)
27
+ end
28
+ alias :to_params :to_a
29
+
30
+ class Row
31
+ def initialize(param)
32
+ @params = [param]
33
+ end
34
+
35
+ def add_param(param)
36
+ @params << param
37
+ end
38
+
39
+ def to_a
40
+ @params
41
+ end
42
+
43
+ def to_params
44
+ [@params]
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,43 @@
1
+ require 'binding_of_caller'
2
+ require 'rspec/parameterized/table'
3
+
4
+ module RSpec
5
+ module Parameterized
6
+ module TableSyntaxImplement
7
+ def |(other)
8
+ where_binding = binding.of_caller(1) # get where block binding
9
+ caller_instance = eval("self", where_binding) # get caller instance (ExampleGroup)
10
+
11
+ if caller_instance.instance_variable_defined?(:@__parameter_table)
12
+ table = caller_instance.instance_variable_get(:@__parameter_table)
13
+ else
14
+ table = RSpec::Parameterized::Table.new
15
+ caller_instance.instance_variable_set(:@__parameter_table, table)
16
+ end
17
+
18
+ row = Table::Row.new(self)
19
+ table.add_row(row)
20
+ row.add_param(other)
21
+ table
22
+ end
23
+ end
24
+
25
+ module TableSyntax
26
+ refine Object do
27
+ include TableSyntaxImplement
28
+ end
29
+
30
+ refine Fixnum do
31
+ include TableSyntaxImplement
32
+ end
33
+
34
+ refine Bignum do
35
+ include TableSyntaxImplement
36
+ end
37
+
38
+ refine Array do
39
+ include TableSyntaxImplement
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module Parameterized
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
@@ -9,10 +9,11 @@ Gem::Specification.new do |gem|
9
9
  I was inspired by [udzura's mock](https://gist.github.com/1881139).}
10
10
  gem.homepage = ""
11
11
 
12
- gem.add_dependency('rspec', '~> 2.13')
12
+ gem.add_dependency('rspec', '>= 2.13', '< 4')
13
13
  gem.add_dependency('parser')
14
14
  gem.add_dependency('unparser')
15
15
  gem.add_dependency('proc_to_ast')
16
+ gem.add_dependency('binding_of_caller')
16
17
  gem.add_development_dependency('rake')
17
18
 
18
19
  gem.files = `git ls-files`.split($\)
@@ -22,13 +22,13 @@ describe RSpec::Parameterized do
22
22
 
23
23
  with_them do
24
24
  it "should do additions" do
25
- (a + b).should == answer
25
+ expect(a + b).to eq answer
26
26
  end
27
27
  end
28
28
 
29
- with_them :pending do
29
+ with_them pending: "PENDING" do
30
30
  it "should do additions" do
31
- (a + b).should == answer
31
+ expect(a + b).to == answer
32
32
  end
33
33
  end
34
34
  end
@@ -50,7 +50,6 @@ describe RSpec::Parameterized do
50
50
  end
51
51
  end
52
52
 
53
-
54
53
  describe "table separated with pipe" do
55
54
  where_table(:a, :b, :answer) do
56
55
  1 | 2 | 3
@@ -60,7 +59,41 @@ describe RSpec::Parameterized do
60
59
 
61
60
  with_them do
62
61
  it "a plus b is answer" do
63
- (a + b).should == answer
62
+ expect(a + b).to eq answer
63
+ end
64
+ end
65
+ end
66
+
67
+ if RUBY_VERSION >= "2.1"
68
+ describe "table separated with pipe (using TableSyntax)" do
69
+ using RSpec::Parameterized::TableSyntax
70
+
71
+ where(:a, :b, :answer) do
72
+ 1 | 2 | 3
73
+ "hello " | "world" | "hello world"
74
+ [1, 2, 3] | [4, 5, 6] | [1, 2, 3, 4, 5, 6]
75
+ end
76
+
77
+ with_them do
78
+ it "a plus b is answer" do
79
+ expect(a + b).to eq answer
80
+ end
81
+ end
82
+ end
83
+
84
+ describe "table separated with pipe and lambda parameter (using TableSyntax)" do
85
+ using RSpec::Parameterized::TableSyntax
86
+
87
+ where(:a, :b, :matcher) do
88
+ 1 | 2 | -> { eq(3) }
89
+ "hello " | "world" | -> { eq("hello world") }
90
+ [1, 2, 3] | [4, 5, 6] | -> { be_a(Array) }
91
+ end
92
+
93
+ with_them do
94
+ it "a plus b is answer" do
95
+ expect(a + b).to instance_exec(&matcher)
96
+ end
64
97
  end
65
98
  end
66
99
  end
@@ -68,13 +101,13 @@ describe RSpec::Parameterized do
68
101
  context "when the where block is after with_them" do
69
102
  with_them do
70
103
  it "should do additions" do
71
- (a + b).should == answer
104
+ expect(a + b).to eq answer
72
105
  end
73
106
  end
74
107
 
75
108
  with_them do
76
109
  subject { a }
77
- it { should be_is_a Numeric }
110
+ it { should be_a Numeric }
78
111
  end
79
112
 
80
113
  where(:a, :b, :answer) do
@@ -89,7 +122,7 @@ describe RSpec::Parameterized do
89
122
  context "when the where block is between with_thems" do
90
123
  with_them do
91
124
  it "should do additions" do
92
- (a + b).should == answer
125
+ expect(a + b).to eq answer
93
126
  end
94
127
  end
95
128
 
@@ -103,7 +136,7 @@ describe RSpec::Parameterized do
103
136
 
104
137
  with_them do
105
138
  subject { a }
106
- it { should be_is_a Numeric }
139
+ it { should be_a Numeric }
107
140
  end
108
141
  end
109
142
 
@@ -114,7 +147,7 @@ describe RSpec::Parameterized do
114
147
 
115
148
  with_them do
116
149
  it 'can take an array of elements' do
117
- x.should == x
150
+ expect(x).to eq x
118
151
  end
119
152
  end
120
153
  end
@@ -126,7 +159,23 @@ describe RSpec::Parameterized do
126
159
 
127
160
  with_them do
128
161
  it "a plus b is answer" do
129
- (a + b).should == answer
162
+ expect(a + b).to eq answer
163
+ end
164
+ end
165
+ end
166
+
167
+ if RUBY_VERSION >= "2.1"
168
+ context "when the table has only a row (using TableSyntax)" do
169
+ using RSpec::Parameterized::TableSyntax
170
+
171
+ where(:a, :b, :answer) do
172
+ 1 | 2 | 3
173
+ end
174
+
175
+ with_them do
176
+ it "a plus b is answer" do
177
+ expect(a + b).to eq answer
178
+ end
130
179
  end
131
180
  end
132
181
  end
@@ -146,7 +195,7 @@ describe RSpec::Parameterized do
146
195
 
147
196
  with_them do
148
197
  it "a plus b is answer" do
149
- (a + b).should == answer
198
+ expect(a + b).to eq answer
150
199
  end
151
200
  end
152
201
  end
@@ -159,21 +208,40 @@ describe RSpec::Parameterized do
159
208
 
160
209
  with_them do
161
210
  it "a plus b is answer" do
162
- (a + b).should == answer
211
+ expect(a + b).to eq answer
212
+ end
213
+ end
214
+ end
215
+
216
+ if RUBY_VERSION >= "2.1"
217
+ describe "child 3 (Using TableSyntax)" do
218
+ using RSpec::Parameterized::TableSyntax
219
+
220
+ where(:a, :b, :answer) do
221
+ 1 | 2 | 3
222
+ five | eight | 13
223
+ end
224
+
225
+ with_them do
226
+ it "a plus b is answer" do
227
+ expect(a + b).to eq answer
228
+ end
163
229
  end
164
230
  end
165
231
  end
166
232
 
167
233
  let(:eq_matcher) { eq(13) }
168
234
  describe "child 3 (use matcher)" do
169
- where_table(:a, :b, :answer) do
170
- 1 | 2 | eq(3)
171
- five | eight | eq_matcher
235
+ where(:a, :b, :matcher) do
236
+ [
237
+ [1 , 2 , eq(3) ],
238
+ [five , eight , eq_matcher],
239
+ ]
172
240
  end
173
241
 
174
242
  with_them do
175
243
  it "a plus b is answer" do
176
- (a + b).should answer
244
+ expect(a + b).to matcher
177
245
  end
178
246
  end
179
247
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'rspec-parameterized'
2
2
 
3
3
  RSpec.configure do |config|
4
- config.treat_symbols_as_metadata_keys_with_true_values = true
5
4
  config.run_all_when_everything_filtered = true
6
5
  config.filter_run :current
7
6
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-parameterized
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tomykaira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-06 00:00:00.000000000 Z
11
+ date: 2014-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.13'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '4'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '2.13'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '4'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: parser
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +72,20 @@ dependencies:
66
72
  - - ">="
67
73
  - !ruby/object:Gem::Version
68
74
  version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: binding_of_caller
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
69
89
  - !ruby/object:Gem::Dependency
70
90
  name: rake
71
91
  requirement: !ruby/object:Gem::Requirement
@@ -94,8 +114,12 @@ files:
94
114
  - LICENSE
95
115
  - README.md
96
116
  - Rakefile
117
+ - gemfiles/rspec2.gemfile
118
+ - gemfiles/rspec3.gemfile
97
119
  - lib/rspec-parameterized.rb
98
120
  - lib/rspec/parameterized.rb
121
+ - lib/rspec/parameterized/table.rb
122
+ - lib/rspec/parameterized/table_syntax.rb
99
123
  - lib/rspec/parameterized/version.rb
100
124
  - rspec-parameterized.gemspec
101
125
  - spec/parametarized_spec.rb