rspec-tabular 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 483bca4b95a802d69210f78aeb918ad99bdb851e
4
- data.tar.gz: 771dd74270e1df31d71a5346dfabdab385353267
3
+ metadata.gz: ee50d259d8af00fb9385f088ca5939d5bb822484
4
+ data.tar.gz: bd4ce1fc3fc7b2588687f09a6a4392dd8e030737
5
5
  SHA512:
6
- metadata.gz: dd0f48b87d6a961d50b64bd83dcb8d19252d0071f5c0d1117cf606a7dd66046ed0b5ea48fd97b516a280f64325d6d331265babca775a904d909eebfd76604f38
7
- data.tar.gz: b4c2419006cba9d7a8b21d1008f2fca08056a9a8b978067a69cc9cc3247c4094ff26c2ecaf9fad8dc3c0d1287ccba69454098d56dd699907bf533de2d49ee946
6
+ metadata.gz: 5a841fd6aeaf03e823254bf19c35dbc1bcb1e90cfb1e72d52bbdc79d09e409520f8ecdc9411b211072d09ed1cbff31778adf95f90737faa3a6ce2b579fc6f92e
7
+ data.tar.gz: 4afad9b46e45f1d210d4c9c018e47f32bb055fe5ebc32eb6fb6e077f133462ceab2a58eaf7912d942e479b5e9a7c9f88b3a2b9b88cba2ecc5d3ec80aa03b056c
@@ -0,0 +1,14 @@
1
+ require: rubocop-rspec
2
+
3
+ Metrics/LineLength:
4
+ Max: 100
5
+
6
+ Metrics/MethodLength:
7
+ Max: 20
8
+
9
+ RSpec/EmptyExampleGroup:
10
+ Enabled: false
11
+
12
+ Metrics/BlockLength:
13
+ Exclude:
14
+ - spec/**/*
@@ -1,3 +1,24 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0.0
3
+ - 2.1
4
+ - 2.2
5
+ - 2.3
6
+ - 2.4
7
+ - 2.5
8
+ - ruby-head
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: ruby-head
12
+ - rvm: 2.4
13
+ os: osx
14
+ os:
15
+ - linux
16
+ - osx
17
+ sudo: false
18
+ before_script:
19
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-darwin-amd64 > ./cc-test-reporter ; fi
20
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter ; fi
21
+ - chmod +x ./cc-test-reporter
22
+ - ./cc-test-reporter before-build
23
+ after_script:
24
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
+
7
+ ## 0.0.2 - 2018-08-19
8
+ ### Changed
9
+ - support checking Exception class and message in the same row
10
+ - catch exceptions when checking side effects, instead of raising the exception
11
+
12
+ ## 0.0.1 - 2015-10-01
13
+ ### Added
14
+ - Everything! This is the initial release with a lot of basic functionality.
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in rspec-tabular.gemspec
data/README.md CHANGED
@@ -1,10 +1,9 @@
1
1
  # Rspec::Tabular
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/rspec-tabular.svg)](http://badge.fury.io/rb/rspec-tabular)
4
- [![Dependency Status](https://gemnasium.com/sugarcrm/rspec-tabular.svg)](https://gemnasium.com/sugarcrm/rspec-tabular)
5
4
  [![Build Status](https://travis-ci.org/sugarcrm/rspec-tabular.svg?branch=master)](https://travis-ci.org/sugarcrm/rspec-tabular)
6
- [![Coverage Status](http://img.shields.io/coveralls/sugarcrm/rspec-tabular/master.svg)](https://coveralls.io/r/sugarcrm/rspec-tabular)
7
5
  [![Code Climate](https://codeclimate.com/github/sugarcrm/rspec-tabular/badges/gpa.svg)](https://codeclimate.com/github/sugarcrm/rspec-tabular)
6
+ [![Test Coverage](https://codeclimate.com/github/sugarcrm/rspec-tabular/badges/coverage.svg)](https://codeclimate.com/github/sugarcrm/rspec-tabular/coverage)
8
7
  [![Inline docs](http://inch-ci.org/github/sugarcrm/rspec-tabular.svg)](http://inch-ci.org/github/sugarcrm/rspec-tabular)
9
8
  [![License](http://img.shields.io/badge/license-Apache2-green.svg?style=flat)](LICENSE)
10
9
 
@@ -28,7 +27,102 @@ Or install it yourself as:
28
27
 
29
28
  ## Usage
30
29
 
31
- TODO: Write usage instructions here
30
+ Here is an overall example using the rspec, followed by some more details of
31
+ the specified scenarios:
32
+
33
+ The input values which are specified are exposed as *let* values, so they can
34
+ be used in both the subject inputs or in stub/double expectations specified in
35
+ a before block.
36
+
37
+ ```
38
+ describe '#thing' do
39
+ subject { subject.thing(input1, input2) }
40
+ before ( stub_model(ThingyModel, name: input3) }
41
+
42
+ let(:expected_value) { :expected_value }
43
+
44
+ inputs :input1, :input2, :input3
45
+ it_with 'value1', 'value2', 'value3', nil
46
+ it_with 'value4', 'value5', 'value6', true
47
+ it_with 'value7', 'value8', 'value9', 'foobar'
48
+ specify_with 'value1', 'value2', 'value3', 'foobar'
49
+ it_with( 'value1', 'value2', 'value3' ) { is_expected.to eq(expected_value) }
50
+ specify_with( 'value1', 'value2', 'value3' ) { expect(subject).to eq(expected_value) }
51
+
52
+ its_with :method, 'value1', 'value2', 'value3', 'something'
53
+
54
+ raise_error_with 'bad1', 'bad2', 'bad3', 'error'
55
+ raise_error_with 'bad4', 'bad5', 'bad6', TestException
56
+ raise_error_with 'bad4', 'bad5', 'bad6', TestException, 'error'
57
+
58
+ side_effects_with 'value4', 'value5', 'value6'
59
+ ```
60
+
61
+ *specify_with* is an alias to *it_with*, therefore they both have the same
62
+ behaviour.
63
+
64
+ Please remember inputs or expected result values MUST be literal values, and cannot be
65
+ values memoized with let, because the let values are not evaluated soon enough.
66
+ You can use let values in the expectations if they are specified in a block.
67
+ (e.g., { is_expected.to eq(expected_value) })
68
+
69
+
70
+ ### Equivalencies
71
+
72
+ Each of the tabular statements has an equivlanet non-tabular example to which
73
+ is corresponds.
74
+
75
+ ```
76
+ it_with 'value1', 'value2', 'value3', nil
77
+
78
+ # Equivalent to:
79
+ context do
80
+ let(:input1) { 'value1' }
81
+ let(:input2) { 'value2' }
82
+ let(:input3) { 'value3' }
83
+
84
+ it { expected.to be_nil }
85
+ end
86
+ ```
87
+
88
+ ```
89
+ it_with( 'value1', 'value2', 'value3' ) { is_expected.to eq(expected_value) }
90
+
91
+ # Equivalent to:
92
+ context do
93
+ let(:input1) { 'value1' }
94
+ let(:input2) { 'value2' }
95
+ let(:input3) { 'value3' }
96
+
97
+ it { is_expected.to eq('expected') } }
98
+ end
99
+ ```
100
+
101
+ ```
102
+ raise_error_with 'bad4', 'bad5', 'bad6', TestException, 'error'
103
+
104
+ # Equivalent to:
105
+ context do
106
+ let(:input1) { 'bad4' }
107
+ let(:input2) { 'bad5' }
108
+ let(:input3) { 'bad6' }
109
+
110
+ specify { expect { subject }.to raise_error(TestException, 'error') }
111
+ end
112
+ ```
113
+
114
+ ```
115
+ side_effects_with 'value4', 'value5', 'value6'
116
+
117
+ # Equivalent to:
118
+ context do
119
+ let(:input1) { 'value4' }
120
+ let(:input2) { 'value5' }
121
+ let(:input3) { 'value6' }
122
+
123
+ specify { subject } }
124
+ end
125
+ ```
32
126
 
33
127
  ## Development
34
128
 
@@ -38,8 +132,12 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
38
132
 
39
133
  ## Contributing
40
134
 
41
- 1. Fork it ( https://github.com/[my-github-username]/rspec-tabular/fork )
135
+ 1. Fork it ( https://github.com/sugarcrm/rspec-tabular/fork )
42
136
  2. Create your feature branch (`git checkout -b my-new-feature`)
43
137
  3. Commit your changes (`git commit -am 'Add some feature'`)
44
138
  4. Push to the branch (`git push origin my-new-feature`)
45
139
  5. Create a new Pull Request
140
+
141
+ ## License
142
+
143
+ Copyright 2015 [SugarCRM Inc.](http://sugarcrm.com), released under the Apache2 License.
data/Rakefile CHANGED
@@ -1,7 +1,40 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  require 'bundler/gem_tasks'
3
4
  require 'rspec/core/rake_task'
5
+ require 'rubocop/rake_task'
6
+ require 'bundler/audit/task'
7
+ require 'pathname'
8
+ require 'license_finder'
9
+ require 'English'
10
+
11
+ RSpec::Core::RakeTask.new(:spec) do |task|
12
+ task.rspec_opts = '--warnings'
13
+ end
14
+
15
+ RuboCop::RakeTask.new(:rubocop) do |task|
16
+ rubocop_report_pathname =
17
+ Pathname(Rake.application.original_dir).join('tmp', 'rubocop.txt')
18
+ rubocop_report_pathname.dirname.mkpath
19
+ task.requires << 'rubocop-rspec'
20
+ task.options =
21
+ %w[
22
+ --display-cop-names
23
+ --extra-details
24
+ --display-style-guide
25
+ --fail-level error
26
+ --format progress
27
+ --format simple --out
28
+ ].push(rubocop_report_pathname.to_s)
29
+ end
30
+
31
+ Bundler::Audit::Task.new
32
+
33
+ desc 'Check dependency licenses'
34
+ task :license_finder do
35
+ puts `license_finder --quiet --format text`
4
36
 
5
- RSpec::Core::RakeTask.new(:spec)
37
+ abort('LicenseFinder failed') unless $CHILD_STATUS.success?
38
+ end
6
39
 
7
- task default: :spec
40
+ task default: %i[spec rubocop bundle:audit license_finder]
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'rspec-tabular'
@@ -1,122 +1,100 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rspec/tabular/version'
2
4
 
3
- # This module will allow examples to be specified in a more clean tabular
4
- # manner.
5
- #
6
- # The same tests can be executed using standard lets, context and examples
7
- # but this will streamline how they are expressed. An example of this is:
8
- #
9
- # @example
10
- # describe 'a thing' do
11
- # context { let(:input1) { 'value1' } ; let(:input2) { 'value2' } ; let(:input3) { 'value3' } ; it { should be false } }
12
- # context { let(:input1) { 'value4' } ; let(:input2) { 'value5' } ; let(:input3) { 'value6' } ; it { should be true } }
13
- # context { let(:input1) { 'value7' } ; let(:input2) { 'value8' } ; let(:input3) { 'value9' } ; it { should eq('foobar') } }
14
- # context { let(:input1) { 'value4' } ; let(:input2) { 'value5' } ; let(:input3) { 'value6' } ; its(:method) { should eq('something') } }
15
- # context { let(:input1) { 'bad1' } ; let(:input2) { 'bad2' } ; let(:input3) { 'bad3' } ; specify { expect { subject }.to raise_error('error') }
16
- # context { let(:input1) { 'bad4' } ; let(:input2) { 'bad5' } ; let(:input3) { 'bad6' } ; specify { expect { subject }.to raise_error(TestException) }
17
- # context { let(:input1) { 'value4' } ; let(:input2) { 'value5' } ; let(:input3) { 'value6' } ; specify { helper_method.should eq('expected') } }
18
- # context { let(:input1) { 'value4' } ; let(:input2) { 'value5' } ; let(:input3) { 'value6' } ; specify { subject } }
19
- # end
20
- #
21
- # Which works but is not very DRY, and has a great deal of boiler plate code.
22
- # This module can improve that with the following helper methods:
23
- #
24
- # * inputs - defines the list of values for the example
25
- # * it_with
26
- # * its_with
27
- # * raise_error_with
28
- # * specify_with
29
- # * side_effects_with - like specify_with but assumes a block of '{ subject }'
30
- #
31
- # Limitations:
32
- # - inputs can only be simple types, and cannot use values defined by let
33
- #
34
- # @example
35
- # describe 'a thing with explicit blocks' do
36
- # subject { subject.thing(input1, input2) }
37
- # before ( stub_model(ThingyModel, name: input3) }
38
- #
39
- # inputs( :input1, :input2, :input3)
40
- # it_with( 'value1', 'value2', 'value3') { should be false }
41
- # it_with( 'value4', 'value5', 'value6') { should be true }
42
- # it_with( 'value4', 'value5', 'value6') { should eq('foobar') }
43
- #
44
- # its_with(:method, 'value4', 'value5', 'value6') { should eq('something') }
45
- #
46
- # specify( 'value1', 'value2', 'value3' ) { helper_method.should eq('expected')
47
- # end
48
- #
49
- # describe 'a thing with implicit shoulds' do
50
- # subject { subject.thing(input1, input2) }
51
- # before ( stub_model(ThingyModel, name: input3) }
52
- #
53
- # inputs :input1, :input2, :input3
54
- # it_with 'value1', 'value2', 'value3', nil
55
- # it_with 'value4', 'value5', 'value6', true
56
- # it_with 'value7', 'value8', 'value9', 'foobar'
57
- #
58
- # its_with :method, 'value1', 'value2', 'value3', 'something'
59
- #
60
- # raise_error_with 'bad1', 'bad2', 'bad3', 'error'
61
- # raise_error_with 'bad4', 'bad5', 'bad6', TestException
62
- #
63
- # side_effects_with 'value4', 'value5', 'value6'
64
- # end
65
- #
66
- # Inputs can also be specified as block arguments. I am not sure if this is
67
- # really useful, it might be deprecated in the future.
68
- #
69
- # @example
70
- # describe 'a thing', :inputs => [:input1, :input2, :input3] do
71
- # subject { subject.thing(input1, input2) }
72
- # before ( stub_model(ThingyModel, name: input3) }
73
- #
74
- # it_with('value1', 'value2', 'value3') { should be false }
75
- # end
76
5
  module Rspec
6
+ # rubocop:disable all
7
+
8
+ # This module will allow examples to be specified in a more clean tabular
9
+ # manner.
10
+ #
11
+ # The same tests can be executed using standard lets, context and examples
12
+ # but this will streamline how they are expressed. An example of this is:
13
+ #
14
+ # @example
15
+ # describe 'a thing' do
16
+ # context { let(:input1) { 'value1' } ; let(:input2) { 'value2' } ; let(:input3) { 'value3' } ; it { should be false } }
17
+ # context { let(:input1) { 'value4' } ; let(:input2) { 'value5' } ; let(:input3) { 'value6' } ; it { should be true } }
18
+ # context { let(:input1) { 'value7' } ; let(:input2) { 'value8' } ; let(:input3) { 'value9' } ; it { should eq('foobar') } }
19
+ # context { let(:input1) { 'value4' } ; let(:input2) { 'value5' } ; let(:input3) { 'value6' } ; its(:method) { should eq('something') } }
20
+ # context { let(:input1) { 'bad1' } ; let(:input2) { 'bad2' } ; let(:input3) { 'bad3' } ; specify { expect { subject }.to raise_error('error') }
21
+ # context { let(:input1) { 'bad4' } ; let(:input2) { 'bad5' } ; let(:input3) { 'bad6' } ; specify { expect { subject }.to raise_error(TestException) }
22
+ # context { let(:input1) { 'value4' } ; let(:input2) { 'value5' } ; let(:input3) { 'value6' } ; specify { helper_method.should eq('expected') } }
23
+ # context { let(:input1) { 'value4' } ; let(:input2) { 'value5' } ; let(:input3) { 'value6' } ; specify { subject } }
24
+ # end
25
+ #
26
+ # Which works but is not very DRY, and has a great deal of boiler plate code.
27
+ # This module can improve that with the following helper methods:
28
+ #
29
+ # * inputs - defines the list of values for the example
30
+ # * it_with
31
+ # * its_with
32
+ # * raise_error_with
33
+ # * specify_with
34
+ # * side_effects_with - like specify_with but assumes a block of '{ subject }'
35
+ #
36
+ # Limitations:
37
+ # - inputs can only be simple types, and cannot use values defined by let
38
+ #
39
+ # @example
40
+ # describe 'a thing with explicit blocks' do
41
+ # subject { subject.thing(input1, input2) }
42
+ # before ( stub_model(ThingyModel, name: input3) }
43
+ #
44
+ # inputs( :input1, :input2, :input3)
45
+ # it_with( 'value1', 'value2', 'value3') { should be false }
46
+ # it_with( 'value4', 'value5', 'value6') { should be true }
47
+ # it_with( 'value4', 'value5', 'value6') { should eq('foobar') }
48
+ #
49
+ # its_with(:method, 'value4', 'value5', 'value6') { should eq('something') }
50
+ #
51
+ # specify_with( 'value1', 'value2', 'value3' ) { helper_method.should eq('expected') }
52
+ # end
53
+ #
54
+ # describe 'a thing with implicit shoulds' do
55
+ # subject { subject.thing(input1, input2) }
56
+ # before ( stub_model(ThingyModel, name: input3) }
57
+ #
58
+ # inputs :input1, :input2, :input3
59
+ # it_with 'value1', 'value2', 'value3', nil
60
+ # it_with 'value4', 'value5', 'value6', true
61
+ # it_with 'value7', 'value8', 'value9', 'foobar'
62
+ #
63
+ # its_with :method, 'value1', 'value2', 'value3', 'something'
64
+ #
65
+ # raise_error_with 'bad1', 'bad2', 'bad3', 'error'
66
+ # raise_error_with 'bad4', 'bad5', 'bad6', TestException
67
+ # raise_error_with 'bad4', 'bad5', 'bad6', TestException, 'error'
68
+ #
69
+ # side_effects_with 'value4', 'value5', 'value6'
70
+ # end
71
+ #
72
+ # Inputs can also be specified as block arguments. I am not sure if this is
73
+ # really useful, it might be deprecated in the future.
74
+ #
75
+ # @example
76
+ # describe 'a thing', :inputs => [:input1, :input2, :input3] do
77
+ # subject { subject.thing(input1, input2) }
78
+ # before ( stub_model(ThingyModel, name: input3) }
79
+ #
80
+ # it_with('value1', 'value2', 'value3') { should be false }
81
+ # end
82
+
83
+ # rubocop:enable all
77
84
  module Tabular
78
85
  def inputs(*args)
79
86
  metadata[:inputs] ||= args
80
87
  end
81
88
 
82
- # Alias for it_with
83
- def specify_with(*args, &block)
84
- it_with(*args, &block)
85
- end
86
-
87
- # Example with an implicit subject execution
88
- def side_effects_with(*args)
89
- it_with(*args) { subject }
90
- end
91
-
92
- def raise_error_with(*args, expected_exception)
93
- it_with(*args) { expect { subject }.to raise_error(expected_exception) }
94
- end
95
-
96
89
  def it_with(*input_values, &block)
97
90
  if block.nil? && (metadata[:inputs].size == input_values.size - 1)
98
91
  expected_value = input_values.pop
99
- block =
100
- if expected_value.nil?
101
- proc { should be_nil }
102
- elsif expected_value.is_a?(TrueClass) || expected_value.is_a?(FalseClass)
103
- proc { is_expected.to be expected_value }
104
- else
105
- proc { should eq(expected_value) }
106
- end
92
+ block = proc { is_expected.to eq(expected_value) }
107
93
  end
108
94
 
109
95
  context("with #{Hash[metadata[:inputs].zip input_values]}") do
110
- def should(matcher = nil, message = nil)
111
- RSpec::Expectations::PositiveExpectationHandler.handle_matcher(subject, matcher, message)
112
- end
113
-
114
- def should_not(matcher = nil, message = nil)
115
- RSpec::Expectations::NegativeExpectationHandler.handle_matcher(subject, matcher, message)
116
- end
117
-
118
96
  metadata[:inputs].each_index do |i|
119
- key = metadata[:inputs][i]
97
+ key = metadata[:inputs][i]
120
98
  let(key) { input_values[i] }
121
99
  end
122
100
 
@@ -124,6 +102,27 @@ module Rspec
124
102
  end
125
103
  end
126
104
 
105
+ alias specify_with it_with
106
+
107
+ # Example with an implicit subject execution
108
+ def side_effects_with(*args)
109
+ it_with(*args) do
110
+ begin
111
+ subject
112
+ rescue Exception # rubocop:disable Lint/HandleExceptions, Lint/RescueException
113
+ end
114
+ end
115
+ end
116
+
117
+ def raise_error_with(*args)
118
+ raise_error_args = args
119
+ it_with_args = raise_error_args.slice!(0, metadata[:inputs].size)
120
+
121
+ it_with(*it_with_args) do
122
+ expect { subject }.to raise_error(*raise_error_args)
123
+ end
124
+ end
125
+
127
126
  def its_with(attribute, *input_values, &block)
128
127
  if block.nil? && (metadata[:inputs].size == input_values.size - 1)
129
128
  expected_value = input_values.pop
@@ -142,16 +141,20 @@ module Rspec
142
141
  end
143
142
  end
144
143
 
145
- def should(matcher = nil, message = nil)
146
- RSpec::Expectations::PositiveExpectationHandler.handle_matcher(__its_subject, matcher, message)
144
+ def should(matcher = nil, message = nil) # rubocop:disable Lint/NestedMethodDefinition
145
+ RSpec::Expectations::PositiveExpectationHandler.handle_matcher(
146
+ __its_subject, matcher, message
147
+ )
147
148
  end
148
149
 
149
- def should_not(matcher = nil, message = nil)
150
- RSpec::Expectations::NegativeExpectationHandler.handle_matcher(__its_subject, matcher, message)
150
+ def should_not(matcher = nil, message = nil) # rubocop:disable Lint/NestedMethodDefinition
151
+ RSpec::Expectations::NegativeExpectationHandler.handle_matcher(
152
+ __its_subject, matcher, message
153
+ )
151
154
  end
152
155
 
153
156
  metadata[:inputs].each_index do |i|
154
- key = metadata[:inputs][i]
157
+ key = metadata[:inputs][i]
155
158
  let(key) { input_values[i] }
156
159
  end
157
160
 
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rspec
2
4
  module Tabular
3
- VERSION = '0.1.0'
5
+ VERSION = '0.2.0'
4
6
  end
5
7
  end
@@ -1,5 +1,6 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'rspec/tabular/version'
5
6
 
@@ -9,16 +10,31 @@ Gem::Specification.new do |spec|
9
10
  spec.authors = ['Andrew Sullivan Cant']
10
11
  spec.email = ['acant@sugarcrm.com']
11
12
 
12
- spec.summary = %q{RSpec extension for writing tabular examples.}
13
- spec.description = %q{RSpec DSL which makes is easier and cleaner to write tabular examples.}
13
+ spec.summary = 'RSpec extension for writing tabular examples.'
14
+ spec.description = 'RSpec DSL which makes is easier and cleaner to write tabular examples.'
14
15
  spec.homepage = 'http://github.com/sugarcrm/rspec-tabular'
16
+ spec.license = 'Apache-2.0'
15
17
 
16
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
+ f.match(%r{^(test|spec|features)/})
20
+ end
21
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
23
  spec.require_paths = ['lib']
19
24
 
25
+ spec.required_ruby_version = '>= 2.1.0'
26
+
20
27
  spec.add_runtime_dependency 'rspec-core', '>= 2.99.0'
21
- spec.add_development_dependency 'bundler', '~> 1.9'
28
+
29
+ spec.add_development_dependency 'bundler', '~> 1.7'
22
30
  spec.add_development_dependency 'rake', '~> 10.0'
23
31
  spec.add_development_dependency 'rspec', '~> 2.99.0'
32
+
33
+ # Dependencies whose APIs we do not really depend upon, and can be upgraded
34
+ # without limiting.
35
+ spec.add_development_dependency 'bundler-audit'
36
+ spec.add_development_dependency 'license_finder'
37
+ spec.add_development_dependency 'rubocop'
38
+ spec.add_development_dependency 'rubocop-rspec'
39
+ spec.add_development_dependency 'simplecov'
24
40
  end
metadata CHANGED
@@ -1,71 +1,141 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-tabular
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Sullivan Cant
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-01 00:00:00.000000000 Z
11
+ date: 2018-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-core
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 2.99.0
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
26
  version: 2.99.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.9'
33
+ version: '1.7'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.9'
40
+ version: '1.7'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 2.99.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 2.99.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler-audit
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: license_finder
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
69
139
  description: RSpec DSL which makes is easier and cleaner to write tabular examples.
70
140
  email:
71
141
  - acant@sugarcrm.com
@@ -73,20 +143,24 @@ executables: []
73
143
  extensions: []
74
144
  extra_rdoc_files: []
75
145
  files:
76
- - .gitignore
77
- - .rspec
78
- - .travis.yml
146
+ - ".gitignore"
147
+ - ".rspec"
148
+ - ".rubocop.yml"
149
+ - ".travis.yml"
150
+ - CHANGELOG.md
79
151
  - Gemfile
80
152
  - LICENSE
81
153
  - README.md
82
154
  - Rakefile
83
155
  - bin/console
84
156
  - bin/setup
157
+ - doc/dependency_decisions.yml
85
158
  - lib/rspec/tabular.rb
86
159
  - lib/rspec/tabular/version.rb
87
160
  - rspec-tabular.gemspec
88
161
  homepage: http://github.com/sugarcrm/rspec-tabular
89
- licenses: []
162
+ licenses:
163
+ - Apache-2.0
90
164
  metadata: {}
91
165
  post_install_message:
92
166
  rdoc_options: []
@@ -94,17 +168,17 @@ require_paths:
94
168
  - lib
95
169
  required_ruby_version: !ruby/object:Gem::Requirement
96
170
  requirements:
97
- - - '>='
171
+ - - ">="
98
172
  - !ruby/object:Gem::Version
99
- version: '0'
173
+ version: 2.1.0
100
174
  required_rubygems_version: !ruby/object:Gem::Requirement
101
175
  requirements:
102
- - - '>='
176
+ - - ">="
103
177
  - !ruby/object:Gem::Version
104
178
  version: '0'
105
179
  requirements: []
106
180
  rubyforge_project:
107
- rubygems_version: 2.0.14
181
+ rubygems_version: 2.6.11
108
182
  signing_key:
109
183
  specification_version: 4
110
184
  summary: RSpec extension for writing tabular examples.