rspec-its 1.3.1 → 2.0.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
  SHA256:
3
- metadata.gz: ede48c8c66058550c26cb470fbbc8a0e8cdc42693b2bd67a9996a5ef010c94a4
4
- data.tar.gz: b0bfe107c8683af7f7797ec123a9d4677da93b53364af49808bc7d8dc0c51d0e
3
+ metadata.gz: 3d1e500e46f3ca1f648ee76288e9ac19340ee6dfb42ac9f0714534f71fab3a46
4
+ data.tar.gz: 0f5b92bf819bf9c825e0776a8f4b53dcce9566db785188ae6b349a05b9afbd5c
5
5
  SHA512:
6
- metadata.gz: 5d0e4aa570b53ed61476c17a616d4b60dca827e78d74fff470b775b034502fbf5e22eb3bbecafae894833614d1f90b61f1aaf97ae32e83acf5a37d445118797e
7
- data.tar.gz: 7f032617d48bc1fe4e499f002583463b4c474fd1145fc7398c96696870a1d0b8694afc4bfd672219d411b70a35f6f5c9ee0d8552ef0508639161deee17d8a472
6
+ metadata.gz: 8fd88f4645fb0c2b3a81cca6fba3abdcee34eb50526af38a5a30d896e17d272756744bf0d2009b4862b4e9acc3d697855ba72370e88b8d02e593e87395f923bb
7
+ data.tar.gz: 27af6704b1e805eb8eebbd91797ee29c44f006384e0289c0526d92aafe07f06c613ac655551dac326049d105ddfb6876bcd110c844b87454d028ea8a04383e8c
@@ -9,86 +9,51 @@ on:
9
9
  branches:
10
10
  - '*'
11
11
  env:
12
- BRANCH: '3-12-maintenance'
13
12
  RSPEC_CI: true
14
13
  jobs:
14
+ rubocop:
15
+ name: Rubocop
16
+ runs-on: 'ubuntu-20.04'
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: '3.3'
22
+ - run: script/update_rubygems_and_install_bundler
23
+ - run: bundle install
24
+ - run: bundle exec rubocop -c .rubocop.yml
25
+
15
26
  test:
16
27
  name: Ruby ${{ matrix.ruby }} ${{ matrix.name_extra || '' }}
17
28
  runs-on: ${{ matrix.os || 'ubuntu-20.04' }}
18
29
  strategy:
19
30
  matrix:
20
31
  ruby:
32
+ - '3.4'
33
+ - '3.3'
21
34
  - '3.2'
22
35
  - '3.1'
23
36
  - '3.0'
24
- - 2.7
25
- - 2.6
26
- - 2.5
27
- - 2.4
28
- - 2.3
29
- - 2.2
30
- - 2.1.9
31
37
  env:
32
38
  -
33
39
  BRANCH: "main"
34
40
  include:
35
- - ruby: jruby-9.2.13.0
41
+ - ruby: '3.3'
42
+ name_extra: "against RSpec 3.13"
36
43
  env:
37
- JRUBY_OPTS: "--dev"
38
- # Compatibility builds
44
+ BRANCH: "3-13-maintenance"
39
45
  - ruby: '3.2'
40
- name_extra: "against RSpec 3.12"
46
+ name_extra: "against RSpec 3.13"
41
47
  env:
42
- BRANCH: "3-12-maintenance"
48
+ BRANCH: "3-13-maintenance"
43
49
  - ruby: '3.1'
44
- name_extra: "against RSpec 3.11"
45
- env:
46
- BRANCH: "3-11-maintenance"
47
- - ruby: '3.1'
48
- name_extra: "against RSpec 3.10"
49
- env:
50
- BRANCH: "3-10-maintenance"
51
- - ruby: '3.0'
52
- name_extra: "against RSpec 3.9"
53
- env:
54
- BRANCH: "3-9-maintenance"
55
- - ruby: '3.0'
56
- name_extra: "against RSpec 3.8"
57
- env:
58
- BRANCH: "3-8-maintenance"
59
- - ruby: '3.0'
60
- name_extra: "against RSpec 3.7"
61
- env:
62
- BRANCH: "3-7-maintenance"
63
- - ruby: '3.0'
64
- name_extra: "against RSpec 3.6"
65
- env:
66
- BRANCH: "3-6-maintenance"
67
- - ruby: '3.0'
68
- name_extra: "against RSpec 3.5"
50
+ name_extra: "against RSpec 3.13"
69
51
  env:
70
- BRANCH: "3-5-maintenance"
52
+ BRANCH: "3-13-maintenance"
71
53
  - ruby: '3.0'
72
- name_extra: "against RSpec 3.4"
54
+ name_extra: "against RSpec 3.13"
73
55
  env:
74
- BRANCH: "3-4-maintenance"
75
- - ruby: '3.0'
76
- name_extra: "against RSpec 3.3"
77
- env:
78
- BRANCH: "3-3-maintenance"
79
- - ruby: '3.0'
80
- name_extra: "against RSpec 3.2"
81
- env:
82
- BRANCH: "3-2-maintenance"
83
- - ruby: '3.0'
84
- name_extra: "against RSpec 3.1"
85
- env:
86
- BRANCH: "3-1-maintenance"
87
- - ruby: '3.0'
88
- name_extra: "against RSpec 3.0"
89
- env:
90
- BRANCH: "3-0-maintenance"
91
-
56
+ BRANCH: "3-13-maintenance"
92
57
  fail-fast: false
93
58
  continue-on-error: ${{ matrix.allow_failure || endsWith(matrix.ruby, 'head') }}
94
59
  env: ${{ matrix.env }}
@@ -99,33 +64,6 @@ jobs:
99
64
  bundler: ${{ matrix.bundler || 2 }}
100
65
  ruby-version: ${{ matrix.ruby }}
101
66
  - run: script/update_rubygems_and_install_bundler
102
- - run: bundle install --binstubs --standalone
103
- - run: script/test_all
104
-
105
- legacy:
106
- name: Legacy Ruby Builds (${{ matrix.container.version }})
107
- runs-on: ubuntu-20.04
108
- container:
109
- image: ${{ matrix.container.tag }}
110
- options: ${{ matrix.container.options || '--add-host github-complains-if-this-is-empty.com:127.0.0.1' }}
111
- strategy:
112
- fail-fast: false
113
- matrix:
114
- container:
115
- - version: "2.0"
116
- tag: ghcr.io/rspec/docker-ci:2.0.0
117
- - version: "1.9.3"
118
- tag: ghcr.io/rspec/docker-ci:1.9.3
119
- - version: "JRuby 1.7"
120
- tag: ghcr.io/rspec/docker-ci:jruby-1.7
121
- - version: "JRuby 9.1.17.0"
122
- tag: ghcr.io/rspec/docker-ci:jruby-9.1.17.0
123
- options: "--add-host rubygems.org:151.101.129.227 --add-host api.rubygems.org:151.101.129.227"
124
- env:
125
- ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
126
- LEGACY_CI: true
127
- JRUBY_OPTS: ${{ matrix.container.jruby_opts || '--dev' }}
128
- steps:
129
- - uses: actions/checkout@v3
130
- - run: script/legacy_setup.sh
67
+ - run: bundle install --standalone
68
+ - run: bundle binstubs --all
131
69
  - run: script/test_all
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ spec/reports
17
17
  test/tmp
18
18
  test/version_tmp
19
19
  tmp
20
+ bin/*
data/.rubocop.yml ADDED
@@ -0,0 +1,46 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ SuggestExtensions: false
4
+
5
+ Metrics/BlockLength:
6
+ Enabled: true
7
+ Exclude:
8
+ - spec/**/*_spec.rb
9
+
10
+ Layout/LineLength:
11
+ Max: 120
12
+
13
+ Lint/NestedMethodDefinition:
14
+ Exclude:
15
+ - lib/rspec/its.rb
16
+
17
+ Lint/SendWithMixinArgument:
18
+ Exclude:
19
+ - lib/rspec/its.rb
20
+
21
+ Metrics/AbcSize:
22
+ Exclude:
23
+ - lib/rspec/its.rb
24
+
25
+ Metrics/MethodLength:
26
+ Max: 25
27
+
28
+ Naming/PredicateName:
29
+ Exclude:
30
+ - lib/rspec/its.rb
31
+
32
+ Style/CaseEquality:
33
+ Exclude:
34
+ - lib/rspec/its/subject.rb
35
+
36
+ Style/SignalException:
37
+ Exclude:
38
+ - features/**/*.rb
39
+
40
+ Style/SpecialGlobalVars:
41
+ Exclude:
42
+ - rspec-its.gemspec
43
+
44
+ # We don't care about single vs double quotes.
45
+ Style/StringLiterals:
46
+ Enabled: false
data/Changelog.md CHANGED
@@ -1,3 +1,12 @@
1
+ ### 2.0.0 / 2024-11-04
2
+
3
+ Version 2.0.0 drops support for Ruby below 3, and changes the supported RSpec version to "main" and current release series.
4
+ (At the time of writing this is 3.13.x, but it means the current supported release only).
5
+
6
+ Breaking changes:
7
+
8
+ * Now uses `public_send` so that private methods will not be accidentally reachable. (James Ottaway #33, #101)
9
+
1
10
  ### 1.3.1 / 2024-10-23
2
11
  [full changelog](http://github.com/rspec/rspec-its/compare/v1.3.0...v1.3.1)
3
12
 
data/Gemfile CHANGED
@@ -1,38 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
- # Specify your gem's dependencies in rspec-its.gemspec
4
5
  gemspec
5
6
 
6
7
  %w[rspec rspec-core rspec-expectations rspec-mocks rspec-support].each do |lib|
7
- branch = ENV.fetch('BRANCH','main')
8
+ branch = ENV.fetch('BRANCH', 'main')
8
9
  library_path = File.expand_path("../../#{lib}", __FILE__)
9
10
 
10
11
  if File.exist?(library_path) && !ENV['USE_GIT_REPOS']
11
- gem lib, :path => library_path
12
+ gem lib, path: library_path
12
13
  elsif lib == 'rspec'
13
- gem 'rspec', :git => "https://github.com/rspec/rspec-metagem.git", :branch => branch
14
+ gem 'rspec', git: "https://github.com/rspec/rspec-metagem.git", branch: branch
14
15
  else
15
- gem lib, :git => "https://github.com/rspec/#{lib}.git", :branch => branch
16
+ gem lib, git: "https://github.com/rspec/#{lib}.git", branch: branch
16
17
  end
17
18
  end
18
19
 
19
- if RUBY_VERSION < '2.2.0' && !!(RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/)
20
- gem 'ffi', '< 1.10'
21
- elsif RUBY_VERSION < '2.4.0' && !!(RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/)
22
- gem 'ffi', '< 1.15'
23
- elsif RUBY_VERSION < '2.0'
24
- gem 'ffi', '< 1.9.19' # ffi dropped Ruby 1.8 support in 1.9.19
25
- elsif RUBY_VERSION < '2.3.0'
26
- gem 'ffi', '~> 1.12.0'
27
- else
28
- gem 'ffi', '~> 1.15.0'
29
- end
30
-
31
- # test coverage
32
- # gem 'simplecov', :require => false
33
-
34
- gem 'contracts', '< 0.16' if RUBY_VERSION < '1.9.0'
35
-
36
- gem 'coveralls', :require => false, :platform => :mri_20
37
-
38
- eval File.read('Gemfile-custom') if File.exist?('Gemfile-custom')
20
+ gem 'aruba', '~> 2.2.0'
21
+ gem 'bundler', '> 2.0.0'
22
+ gem 'coveralls', require: false
23
+ gem 'cucumber', '>= 1.3.8'
24
+ gem 'ffi', '~> 1.17.0'
25
+ gem 'matrix', '~> 0.4.2'
26
+ gem 'rake', '~> 13.2.0'
27
+ gem 'rubocop', '~> 1.68.0'
data/LICENSE.txt CHANGED
@@ -1,9 +1,9 @@
1
1
  (The MIT License)
2
2
 
3
+ Copyright (c) 2024 The RSpec Development Team
3
4
  Copyright (c) 2013 Peter Alfvin
4
5
  Copyright (c) 2012 David Chelimsky, Myron Marston
5
6
  Copyright (c) 2006 David Chelimsky, The RSpec Development Team
6
- Copyright (c) 2005 Steven Baker
7
7
 
8
8
  MIT License
9
9
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # RSpec::Its [![Build Status](https://travis-ci.org/rspec/rspec-its.svg)](https://travis-ci.org/rspec/rspec-its)
1
+ # RSpec::Its [![Build Status](https://github.com/rspec/rspec-its/actions/workflows/ci.yml/badge.svg)](https://github.com/rspec/rspec-its/actions/workflows/ci.yml/badge.svg)
2
2
 
3
3
  RSpec::Its provides the `its` method as a short-hand to specify the expected value of an attribute.
4
4
 
@@ -26,33 +26,31 @@ require 'rspec/its'
26
26
 
27
27
  ## Usage
28
28
 
29
- Use the `its` method to generate a nested example group with
30
- a single example that specifies the expected value of an attribute of the
31
- subject using `should`, `should_not` or `is_expected`.
32
- The `its` method can also specify the block expectations of an attribute of the
33
- subject using `will` or `will_not`.
29
+ Use the `its` method to generate a nested example group with a single example that specifies the expected value
30
+ of an attribute of the subject using `is_expected`. The `its` method can also specify the block expectations of
31
+ an attribute of the subject using `will` or `will_not`.
34
32
 
35
33
  `its` accepts a symbol or a string, and a block representing the example.
36
34
 
37
35
  ```ruby
38
- its(:size) { should eq(1) }
39
- its("length") { should eq(1) }
36
+ its(:size) { is_expected.to eq(1) }
37
+ its("length") { is_expected.to eq(1) }
40
38
  ```
41
39
 
42
40
  You can use a string with dots to specify a nested attribute (i.e. an
43
41
  attribute of the attribute of the subject).
44
42
 
45
43
  ```ruby
46
- its("phone_numbers.size") { should_not eq(0) }
44
+ its("phone_numbers.size") { is_expected.to_not eq(0) }
47
45
  ```
48
46
 
49
- The following expect-style method is also available:
47
+ The following should-style method is also available:
50
48
 
51
49
  ```ruby
52
- its(:size) { is_expected.to eq(1) }
50
+ its(:size) { should eq(1) }
53
51
  ```
54
52
 
55
- as is this alias for pluralized use:
53
+ as is an alias of `is_expected` for pluralized use:
56
54
 
57
55
  ```ruby
58
56
  its(:keys) { are_expected.to eq([:key1, :key2]) }
@@ -88,13 +86,13 @@ For other objects, multiple keys within the array will be passed as separate arg
88
86
 
89
87
  ```ruby
90
88
  subject { Matrix[ [:a, :b], [:c, :d] ] }
91
- its([1,1]) { should eq(:d) }
89
+ its([1,1]) { is_expected.to eq(:d) }
92
90
  ```
93
91
 
94
92
  Metadata arguments are supported.
95
93
 
96
94
  ```ruby
97
- its(:size, focus: true) { should eq(1) }
95
+ its(:size, focus: true) { is_expected.to eq(1) }
98
96
  ```
99
97
 
100
98
  ## Contributing
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler"
2
4
  Bundler.setup
3
5
  Bundler::GemHelper.install_tasks
@@ -13,4 +15,4 @@ RSpec::Core::RakeTask.new(:spec) do |t|
13
15
  t.ruby_opts = %w[-w]
14
16
  end
15
17
 
16
- task :default => [:spec, :cucumber]
18
+ task default: %i[spec cucumber]
data/features/its.feature CHANGED
@@ -1,57 +1,25 @@
1
1
  Feature: attribute of subject
2
2
 
3
- @pre-3-9
4
3
  Scenario: specify value of a nested attribute
5
4
  Given a file named "example_spec.rb" with:
6
5
  """ruby
7
6
  class Person
8
7
  attr_reader :phone_numbers
9
- def initialize
10
- @phone_numbers = []
11
- end
12
- end
13
-
14
- describe Person do
15
- context "with one phone number (555-1212)"do
16
- subject do
17
- person = Person.new
18
- person.phone_numbers << "555-1212"
19
- person
20
- end
21
-
22
- its("phone_numbers.first") { should eq("555-1212") }
23
- end
24
- end
25
- """
26
- When I run rspec with the documentation option
27
- Then the output should contain:
28
- """
29
- Person
30
- with one phone number (555-1212)
31
- phone_numbers.first
32
- should eq "555-1212"
33
- """
34
8
 
35
- @post-3-9
36
- Scenario: specify value of a nested attribute
37
- Given a file named "example_spec.rb" with:
38
- """ruby
39
- class Person
40
- attr_reader :phone_numbers
41
9
  def initialize
42
10
  @phone_numbers = []
43
11
  end
44
12
  end
45
13
 
46
- describe Person do
14
+ RSpec.describe Person do
47
15
  context "with one phone number (555-1212)"do
48
- subject do
16
+ subject(:person) do
49
17
  person = Person.new
50
18
  person.phone_numbers << "555-1212"
51
19
  person
52
20
  end
53
21
 
54
- its("phone_numbers.first") { should eq("555-1212") }
22
+ its("phone_numbers.first") { is_expected.to eq("555-1212") }
55
23
  end
56
24
  end
57
25
  """
@@ -67,13 +35,13 @@ Feature: attribute of subject
67
35
  Scenario: specify value of an attribute of a hash
68
36
  Given a file named "example_spec.rb" with:
69
37
  """ruby
70
- describe Hash do
38
+ RSpec.describe Hash do
71
39
  context "with two items" do
72
40
  subject do
73
41
  {:one => 'one', :two => 'two'}
74
42
  end
75
43
 
76
- its(:size) { should eq(2) }
44
+ its(:size) { is_expected.to eq(2) }
77
45
  end
78
46
  end
79
47
  """
@@ -83,14 +51,14 @@ Feature: attribute of subject
83
51
  Scenario: specify value for key in a hash
84
52
  Given a file named "example_spec.rb" with:
85
53
  """ruby
86
- describe Hash do
54
+ RSpec.describe Hash do
87
55
  context "with keys :one and 'two'" do
88
56
  subject do
89
57
  {:one => 1, "two" => 2}
90
58
  end
91
59
 
92
- its([:one]) { should eq(1) }
93
- its(["two"]) { should eq(2) }
60
+ its([:one]) { is_expected.to eq(1) }
61
+ its(["two"]) { is_expected.to eq(2) }
94
62
  end
95
63
  end
96
64
  """
@@ -102,15 +70,15 @@ Feature: attribute of subject
102
70
  """ruby
103
71
  require 'matrix'
104
72
 
105
- describe Matrix do
73
+ RSpec.describe Matrix do
106
74
  context "with values [[1, 2], [3, 4]]" do
107
75
  subject do
108
76
  Matrix[[1, 2], [3, 4]]
109
77
  end
110
78
 
111
- its([0, 1]) { should eq(2) }
112
- its([1, 0]) { should eq(3) }
113
- its([1, 2]) { should be_nil }
79
+ its([0, 1]) { are_expected.to eq(2) }
80
+ its([1, 0]) { are_expected.to eq(3) }
81
+ its([1, 2]) { are_expected.to be_nil }
114
82
  end
115
83
  end
116
84
  """
@@ -120,22 +88,22 @@ Feature: attribute of subject
120
88
  Scenario: failures are correctly reported as coming from the `its` line
121
89
  Given a file named "example_spec.rb" with:
122
90
  """ruby
123
- describe Array do
91
+ RSpec.describe Array do
124
92
  context "when first created" do
125
- its(:size) { should_not eq(0) }
93
+ its(:size) { is_expected.to_not eq(0) }
126
94
  end
127
95
  end
128
96
  """
129
97
  When I run rspec
130
- Then the output should contain "Failure/Error: its(:size) { should_not eq(0) }"
131
- And the output should not match /#[^\n]*rspec[\x2f]its/
98
+ Then the output should contain "Failure/Error: its(:size) { is_expected.to_not eq(0) }"
99
+ And the output should not match /#[^\n]*rspec[\x2f]its/
132
100
 
133
101
  Scenario: examples can be specified by exact line number
134
102
  Given a file named "example_spec.rb" with:
135
103
  """ruby
136
- describe Array do
104
+ RSpec.describe Array do
137
105
  context "when first created" do
138
- its(:size) { should eq(0) }
106
+ its(:size) { is_expected.to eq(0) }
139
107
  end
140
108
  end
141
109
  """
@@ -145,10 +113,11 @@ Feature: attribute of subject
145
113
  Scenario: examples can be specified by line number within containing block
146
114
  Given a file named "example_spec.rb" with:
147
115
  """ruby
148
- describe Array do
116
+ RSpec.describe Array do
149
117
  context "when first created" do
150
- its(:size) { should eq(0) }
118
+ its(:size) { is_expected.to eq(0) }
151
119
  end
120
+
152
121
  it "should never execute this" do
153
122
  expect(true).to be(false)
154
123
  end
@@ -166,8 +135,9 @@ Feature: attribute of subject
166
135
  end
167
136
  end
168
137
 
169
- describe Klass do
170
- subject { Klass.new }
138
+ RSpec.describe Klass do
139
+ subject(:klass) { Klass.new }
140
+
171
141
  its(:foo) { will_not raise_error }
172
142
  its(:bar) { will raise_error(NoMethodError) }
173
143
  end
@@ -180,15 +150,16 @@ Feature: attribute of subject
180
150
  """ruby
181
151
  class Klass; end
182
152
 
183
- describe Klass do
184
- subject { Klass.new }
153
+ RSpec.describe Klass do
154
+ subject(:klass) { Klass.new }
155
+
185
156
  its(:foo) { will_not raise_error }
186
157
  end
187
158
  """
188
159
  When I run rspec
189
160
  Then the example should fail
190
161
  And the output should contain "Failure/Error: its(:foo) { will_not raise_error }"
191
- And the output should contain "expected no Exception, got #<NoMethodError: undefined method `foo'"
162
+ And the output should match /expected no Exception, got #<NoMethodError: undefined method [`']foo'/
192
163
 
193
164
  Scenario: examples will warn when using non block expectations
194
165
  Given a file named "example_spec.rb" with:
@@ -199,8 +170,9 @@ Feature: attribute of subject
199
170
  end
200
171
  end
201
172
 
202
- describe Klass do
203
- subject { Klass.new }
173
+ RSpec.describe Klass do
174
+ subject(:arnie) { Klass.new }
175
+
204
176
  its(:terminator) { will be("back") }
205
177
  end
206
178
  """
@@ -1,32 +1,34 @@
1
- When /^I run rspec( with the documentation option)?$/ do |documentation|
2
- rspec_its_gem_location = File.expand_path('../../../lib/rspec/its', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ When(/^I run rspec( with the documentation option)?$/) do |documentation|
4
+ rspec_its_gem_location = File.expand_path('../../lib/rspec/its', __dir__)
3
5
  require_option = "--require #{rspec_its_gem_location}"
4
6
  format_option = documentation ? "--format documentation" : ""
5
7
  rspec_command = ['rspec', require_option, format_option, 'example_spec.rb'].join(' ')
6
8
  step "I run `#{rspec_command}`"
7
9
  end
8
10
 
9
- When /^I run rspec specifying line number (\d+)$/ do |line_number|
10
- rspec_its_gem_location = File.expand_path('../../../lib/rspec/its', __FILE__)
11
+ When(/^I run rspec specifying line number (\d+)$/) do |line_number|
12
+ rspec_its_gem_location = File.expand_path('../../lib/rspec/its', __dir__)
11
13
  require_option = "--require #{rspec_its_gem_location}"
12
14
  file_specification = "example_spec.rb:#{line_number}"
13
15
  rspec_command = ['rspec', require_option, file_specification].join(' ')
14
16
  step "I run `#{rspec_command}`"
15
17
  end
16
18
 
17
- Then /^the example(?:s)? should(?: all)? pass$/ do
18
- step %q{the output should contain "0 failures"}
19
- step %q{the output should not contain "0 examples"}
20
- step %q{the exit status should be 0}
19
+ Then(/^the example(?:s)? should(?: all)? pass$/) do
20
+ step 'the output should contain "0 failures"'
21
+ step 'the output should not contain "0 examples"'
22
+ step 'the exit status should be 0'
21
23
  end
22
24
 
23
- Then(/^the example should fail$/) do
24
- step %q{the output should contain "1 failure"}
25
- step %q{the exit status should not be 0}
25
+ Then("the example should fail") do
26
+ step 'the output should contain "1 failure"'
27
+ step 'the exit status should not be 0'
26
28
  end
27
29
 
28
30
  Then(/^the output should contain "(.*?)" and "(.*?)"$/) do |string1, string2|
29
31
  unless [string1, string2].all? { |s| all_output.include?(s) }
30
- fail %Q{Both "#{string1}" and "#{string2}" were found in:\n#{all_output}}
32
+ fail %(Both "#{string1}" and "#{string2}" were found in:\n#{all_output})
31
33
  end
32
34
  end
@@ -1,15 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'aruba/cucumber'
2
4
  require 'rspec/core'
3
5
  require 'rspec/its'
4
6
 
5
- Aruba.configure do |config|
6
- config.before(:command) do |cmd|
7
- cmd.environment['JRUBY_OPTS'] = "-X-C #{ENV['JRUBY_OPTS']}" # disable JIT since these processes are so short lived
8
- end
9
- end if RUBY_PLATFORM == 'java'
10
-
11
- Aruba.configure do |config|
12
- config.before(:command) do |cmd|
13
- cmd.environment['RBXOPT'] = "-Xint=true #{ENV['RBXOPT']}" # disable JIT since these processes are so short lived
7
+ if RUBY_PLATFORM == 'java'
8
+ Aruba.configure do |config|
9
+ config.before(:command) do |cmd|
10
+ # disable JIT since these processes are so short lived
11
+ cmd.environment['JRUBY_OPTS'] = "-X-C #{ENV.fetch('JRUBY_OPTS', '')}"
12
+ end
14
13
  end
15
- end if defined?(Rubinius)
14
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ module Its
5
+ # @api private
6
+ # Handles turning subject into an expectation target
7
+ module Subject
8
+ def for(attribute, subject)
9
+ if Array === attribute
10
+ if Hash === subject
11
+ attribute.inject(subject) { |inner, attr| inner[attr] }
12
+ else
13
+ subject[*attribute]
14
+ end
15
+ else
16
+ attribute_chain = attribute.to_s.split('.')
17
+ attribute_chain.inject(subject) do |inner_subject, attr|
18
+ inner_subject.public_send(attr)
19
+ end
20
+ end
21
+ end
22
+
23
+ module_function :for
24
+ end
25
+ end
26
+ end