thegarage-gitx 2.8.1 → 2.9.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: abb46a04e2a286ad90b7fa279739377e3b7eee3f
4
- data.tar.gz: 606a6394ece6ec0fd541e7cbc11a54f6b6f18ac7
3
+ metadata.gz: 967ed00a8d2bd8e358dc56481a1eeab9a96fc552
4
+ data.tar.gz: 71ef71cd36da70a4da6b07787d2d2342c8dfb280
5
5
  SHA512:
6
- metadata.gz: 9f0ad5754e30707060cb640f7efafa2f45834f55f787793a84ffb837ea305722a86f674939ad6ea3df9402277e4abd1c345366b73078a657f41b4837104dd24f
7
- data.tar.gz: 7f26067c170033a2c6d23eb4100e2da3d7d5ad5530205ccc4e89dfd1997c75de229706fe29c3f46b5e40139bd9e081701d5300b5ef81629b8760d50a6740d49a
6
+ metadata.gz: ec87914ebce4c62a3891e1d60b76033e601f13a9a57d7ab692ca49da2d165e2a56f9f35f8e5f83300ed47e0e0a05d464dc35174dc630a48a517f4face59311e3
7
+ data.tar.gz: 6fc4ea416852c8aec5af068cf3a5b2e4a66a5dc55aee9fdef99baa29e22fd76b6523758561fcbb55fbd72043a3166893079affe1d4f64137cfc91c79d1665f1e
@@ -22,6 +22,10 @@ module Thegarage
22
22
  execute_command(UpdateCommand, :update)
23
23
 
24
24
  find_or_create_pull_request(branch)
25
+ status = branch_status(branch)
26
+ if status != 'success'
27
+ return unless yes?("Branch status is currently: #{status}. Proceed with release? (y/n)", :red)
28
+ end
25
29
 
26
30
  checkout_branch Thegarage::Gitx::BASE_BRANCH
27
31
  run_cmd "git pull origin #{Thegarage::Gitx::BASE_BRANCH}"
@@ -39,6 +39,13 @@ module Thegarage
39
39
  pull_requests.first
40
40
  end
41
41
 
42
+ # Get the current commit status of a branch
43
+ # @see https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
44
+ def branch_status(branch)
45
+ response = github_client.status(github_slug, branch)
46
+ response.state
47
+ end
48
+
42
49
  # @see http://developer.github.com/v3/pulls/
43
50
  def create_pull_request(branch)
44
51
  say "Creating pull request for "
@@ -1,5 +1,5 @@
1
1
  module Thegarage
2
2
  module Gitx
3
- VERSION = '2.8.1'
3
+ VERSION = '2.9.0'
4
4
  end
5
5
  end
@@ -0,0 +1,135 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.github.com/repos/thegarage/thegarage-gitx/pulls?head=thegarage:feature-branch&state=open
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/vnd.github.v3+json
12
+ User-Agent:
13
+ - Octokit Ruby Gem 3.4.0
14
+ Content-Type:
15
+ - application/json
16
+ Authorization:
17
+ - token 123123
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Server:
26
+ - GitHub.com
27
+ Date:
28
+ - Wed, 10 Dec 2014 19:14:11 GMT
29
+ Content-Type:
30
+ - application/json; charset=utf-8
31
+ Status:
32
+ - 200 OK
33
+ X-Github-Media-Type:
34
+ - github.v3; format=json
35
+ X-Ratelimit-Limit:
36
+ - '60'
37
+ X-Ratelimit-Remaining:
38
+ - '58'
39
+ X-Ratelimit-Reset:
40
+ - '1418242282'
41
+ X-Xss-Protection:
42
+ - 1; mode=block
43
+ X-Frame-Options:
44
+ - deny
45
+ Content-Security-Policy:
46
+ - default-src 'none'
47
+ Content-Length:
48
+ - '83'
49
+ Access-Control-Allow-Credentials:
50
+ - 'true'
51
+ Access-Control-Expose-Headers:
52
+ - ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
53
+ X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
54
+ Access-Control-Allow-Origin:
55
+ - "*"
56
+ X-Github-Request-Id:
57
+ - C6CBAFAF:141F:450BDAC:54889B83
58
+ Strict-Transport-Security:
59
+ - max-age=31536000; includeSubdomains; preload
60
+ X-Content-Type-Options:
61
+ - nosniff
62
+ body:
63
+ encoding: UTF-8
64
+ string: '[{"html_url":"https://path/to/html/pull/request","issue_url":"https://api/path/to/issue/url","number":10,"head":{"ref":"branch_name"}}]'
65
+ http_version:
66
+ recorded_at: Wed, 10 Dec 2014 19:14:11 GMT
67
+ - request:
68
+ method: get
69
+ uri: https://api.github.com/repos/thegarage/thegarage-gitx/commits/feature-branch/status
70
+ body:
71
+ encoding: US-ASCII
72
+ string: ''
73
+ headers:
74
+ Accept:
75
+ - application/vnd.github.v3+json
76
+ User-Agent:
77
+ - Octokit Ruby Gem 3.4.0
78
+ Content-Type:
79
+ - application/json
80
+ Authorization:
81
+ - token 123123
82
+ Accept-Encoding:
83
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
84
+ response:
85
+ status:
86
+ code: 200
87
+ message: OK
88
+ headers:
89
+ Server:
90
+ - GitHub.com
91
+ Date:
92
+ - Wed, 10 Dec 2014 19:01:27 GMT
93
+ Content-Type:
94
+ - application/json; charset=utf-8
95
+ Transfer-Encoding:
96
+ - chunked
97
+ Status:
98
+ - 200 OK
99
+ X-Ratelimit-Limit:
100
+ - '5000'
101
+ X-Ratelimit-Remaining:
102
+ - '4993'
103
+ X-Ratelimit-Reset:
104
+ - '1418241620'
105
+ X-Oauth-Scopes:
106
+ - repo
107
+ X-Accepted-Oauth-Scopes:
108
+ - repo, repo:status
109
+ X-Github-Media-Type:
110
+ - github.v3; format=json
111
+ X-Xss-Protection:
112
+ - 1; mode=block
113
+ X-Frame-Options:
114
+ - deny
115
+ Content-Security-Policy:
116
+ - default-src 'none'
117
+ Access-Control-Allow-Credentials:
118
+ - 'true'
119
+ Access-Control-Expose-Headers:
120
+ - ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
121
+ X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
122
+ Access-Control-Allow-Origin:
123
+ - "*"
124
+ X-Github-Request-Id:
125
+ - C6CBAFAF:141D:2F27072:54889887
126
+ Strict-Transport-Security:
127
+ - max-age=31536000; includeSubdomains; preload
128
+ X-Content-Type-Options:
129
+ - nosniff
130
+ body:
131
+ encoding: UTF-8
132
+ string: '{"state":"failure"}'
133
+ http_version:
134
+ recorded_at: Wed, 10 Dec 2014 19:14:11 GMT
135
+ recorded_with: VCR 2.9.2
@@ -78,4 +78,72 @@ http_interactions:
78
78
  string: '[{"html_url":"https://path/to/html/pull/request","issue_url":"https://api/path/to/issue/url","number":10,"head":{"ref":"branch_name"}}]'
79
79
  http_version:
80
80
  recorded_at: Tue, 05 Aug 2014 16:36:03 GMT
81
+ - request:
82
+ method: get
83
+ uri: https://api.github.com/repos/thegarage/thegarage-gitx/commits/feature-branch/status
84
+ body:
85
+ encoding: US-ASCII
86
+ string: ''
87
+ headers:
88
+ Accept:
89
+ - application/vnd.github.v3+json
90
+ User-Agent:
91
+ - Octokit Ruby Gem 3.4.0
92
+ Content-Type:
93
+ - application/json
94
+ Authorization:
95
+ - token 123123
96
+ Accept-Encoding:
97
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
98
+ response:
99
+ status:
100
+ code: 200
101
+ message: OK
102
+ headers:
103
+ Server:
104
+ - GitHub.com
105
+ Date:
106
+ - Wed, 10 Dec 2014 19:01:27 GMT
107
+ Content-Type:
108
+ - application/json; charset=utf-8
109
+ Transfer-Encoding:
110
+ - chunked
111
+ Status:
112
+ - 200 OK
113
+ X-Ratelimit-Limit:
114
+ - '5000'
115
+ X-Ratelimit-Remaining:
116
+ - '4993'
117
+ X-Ratelimit-Reset:
118
+ - '1418241620'
119
+ X-Oauth-Scopes:
120
+ - repo
121
+ X-Accepted-Oauth-Scopes:
122
+ - repo, repo:status
123
+ X-Github-Media-Type:
124
+ - github.v3; format=json
125
+ X-Xss-Protection:
126
+ - 1; mode=block
127
+ X-Frame-Options:
128
+ - deny
129
+ Content-Security-Policy:
130
+ - default-src 'none'
131
+ Access-Control-Allow-Credentials:
132
+ - 'true'
133
+ Access-Control-Expose-Headers:
134
+ - ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
135
+ X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
136
+ Access-Control-Allow-Origin:
137
+ - "*"
138
+ X-Github-Request-Id:
139
+ - C6CBAFAF:141D:2F27072:54889887
140
+ Strict-Transport-Security:
141
+ - max-age=31536000; includeSubdomains; preload
142
+ X-Content-Type-Options:
143
+ - nosniff
144
+ body:
145
+ encoding: UTF-8
146
+ string: '{"state":"success"}'
147
+ http_version:
148
+ recorded_at: Wed, 10 Dec 2014 19:14:11 GMT
81
149
  recorded_with: VCR 2.9.2
@@ -62,4 +62,72 @@ http_interactions:
62
62
  string: '[]'
63
63
  http_version:
64
64
  recorded_at: Tue, 05 Aug 2014 17:14:02 GMT
65
+ - request:
66
+ method: get
67
+ uri: https://api.github.com/repos/thegarage/thegarage-gitx/commits/feature-branch/status
68
+ body:
69
+ encoding: US-ASCII
70
+ string: ''
71
+ headers:
72
+ Accept:
73
+ - application/vnd.github.v3+json
74
+ User-Agent:
75
+ - Octokit Ruby Gem 3.4.0
76
+ Content-Type:
77
+ - application/json
78
+ Authorization:
79
+ - token 123123
80
+ Accept-Encoding:
81
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
82
+ response:
83
+ status:
84
+ code: 200
85
+ message: OK
86
+ headers:
87
+ Server:
88
+ - GitHub.com
89
+ Date:
90
+ - Wed, 10 Dec 2014 19:01:27 GMT
91
+ Content-Type:
92
+ - application/json; charset=utf-8
93
+ Transfer-Encoding:
94
+ - chunked
95
+ Status:
96
+ - 200 OK
97
+ X-Ratelimit-Limit:
98
+ - '5000'
99
+ X-Ratelimit-Remaining:
100
+ - '4993'
101
+ X-Ratelimit-Reset:
102
+ - '1418241620'
103
+ X-Oauth-Scopes:
104
+ - repo
105
+ X-Accepted-Oauth-Scopes:
106
+ - repo, repo:status
107
+ X-Github-Media-Type:
108
+ - github.v3; format=json
109
+ X-Xss-Protection:
110
+ - 1; mode=block
111
+ X-Frame-Options:
112
+ - deny
113
+ Content-Security-Policy:
114
+ - default-src 'none'
115
+ Access-Control-Allow-Credentials:
116
+ - 'true'
117
+ Access-Control-Expose-Headers:
118
+ - ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
119
+ X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
120
+ Access-Control-Allow-Origin:
121
+ - "*"
122
+ X-Github-Request-Id:
123
+ - C6CBAFAF:141D:2F27072:54889887
124
+ Strict-Transport-Security:
125
+ - max-age=31536000; includeSubdomains; preload
126
+ X-Content-Type-Options:
127
+ - nosniff
128
+ body:
129
+ encoding: UTF-8
130
+ string: '{"state":"pending"}'
131
+ http_version:
132
+ recorded_at: Wed, 10 Dec 2014 19:14:11 GMT
65
133
  recorded_with: VCR 2.9.2
@@ -40,7 +40,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
40
40
 
41
41
  stub_request(:post, /.*api.github.com.*/).to_return(:status => 201)
42
42
 
43
- VCR.use_cassette('pull_request_does_exist') do
43
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
44
44
  cli.integrate
45
45
  end
46
46
  end
@@ -139,7 +139,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
139
139
 
140
140
  stub_request(:post, /.*api.github.com.*/).to_return(:status => 201)
141
141
 
142
- VCR.use_cassette('pull_request_does_exist') do
142
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
143
143
  cli.integrate
144
144
  end
145
145
  end
@@ -166,7 +166,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
166
166
 
167
167
  stub_request(:post, /.*api.github.com.*/).to_return(:status => 201)
168
168
 
169
- VCR.use_cassette('pull_request_does_exist') do
169
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
170
170
  cli.integrate 'prototype'
171
171
  end
172
172
  end
@@ -228,7 +228,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
228
228
 
229
229
  stub_request(:post, /.*api.github.com.*/).to_return(:status => 201)
230
230
 
231
- VCR.use_cassette('pull_request_does_exist') do
231
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
232
232
  cli.integrate
233
233
  end
234
234
  end
@@ -257,7 +257,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
257
257
  expect(cli).to receive(:run_cmd).with("git checkout feature-branch").ordered
258
258
 
259
259
  stub_request(:post, /.*api.github.com.*/).to_return(:status => 201)
260
- VCR.use_cassette('pull_request_does_exist') do
260
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
261
261
  cli.integrate
262
262
  end
263
263
  end
@@ -9,8 +9,9 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
9
9
  pretend: true
10
10
  }
11
11
  end
12
- let(:cli) { Thegarage::Gitx::Cli::ReleaseCommand.new(args, options, config) }
12
+ let(:cli) { described_class.new(args, options, config) }
13
13
  let(:branch) { double('fake branch', name: 'feature-branch') }
14
+ let(:authorization_token) { '123123' }
14
15
 
15
16
  before do
16
17
  allow(cli).to receive(:current_branch).and_return(branch)
@@ -28,8 +29,30 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
28
29
  should meet_expectations
29
30
  end
30
31
  end
31
- context 'when user confirms release and pull request exists' do
32
- let(:authorization_token) { '123123' }
32
+ context 'when user confirms release and pull request exists with non-success status' do
33
+ before do
34
+ expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
35
+ expect(cli).to_not receive(:execute_command).with(Thegarage::Gitx::Cli::IntegrateCommand, :integrate, 'staging')
36
+ expect(cli).to_not receive(:execute_command).with(Thegarage::Gitx::Cli::CleanupCommand, :cleanup)
37
+
38
+ expect(cli).to receive(:yes?).with('Release feature-branch to production? (y/n)', :green).and_return(true)
39
+ expect(cli).to receive(:yes?).with('Branch status is currently: failure. Proceed with release? (y/n)', :red).and_return(false)
40
+ allow(cli).to receive(:authorization_token).and_return(authorization_token)
41
+
42
+ expect(cli).to_not receive(:run_cmd).with("git checkout master")
43
+ expect(cli).to_not receive(:run_cmd).with("git pull origin master")
44
+ expect(cli).to_not receive(:run_cmd).with("git merge --no-ff feature-branch")
45
+ expect(cli).to_not receive(:run_cmd).with("git push origin HEAD")
46
+
47
+ VCR.use_cassette('pull_request_does_exist_with_failure_status') do
48
+ cli.release
49
+ end
50
+ end
51
+ it 'runs expected commands' do
52
+ should meet_expectations
53
+ end
54
+ end
55
+ context 'when user confirms release and pull request exists with success status' do
33
56
  before do
34
57
  expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
35
58
  expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::IntegrateCommand, :integrate, 'staging')
@@ -43,7 +66,7 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
43
66
  expect(cli).to receive(:run_cmd).with("git merge --no-ff feature-branch").ordered
44
67
  expect(cli).to receive(:run_cmd).with("git push origin HEAD").ordered
45
68
 
46
- VCR.use_cassette('pull_request_does_exist') do
69
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
47
70
  cli.release
48
71
  end
49
72
  end
@@ -52,7 +75,6 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
52
75
  end
53
76
  end
54
77
  context 'when user confirms release and pull request does not exist' do
55
- let(:authorization_token) { '123123' }
56
78
  let(:new_pull_request) do
57
79
  {
58
80
  html_url: "https://path/to/html/pull/request",
@@ -71,7 +93,8 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
71
93
  expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::IntegrateCommand, :integrate, 'staging')
72
94
  expect(cli).to_not receive(:execute_command).with(Thegarage::Gitx::Cli::CleanupCommand, :cleanup)
73
95
 
74
- expect(cli).to receive(:yes?).and_return(true)
96
+ expect(cli).to receive(:yes?).with('Release feature-branch to production? (y/n)', :green).and_return(true)
97
+ expect(cli).to receive(:yes?).with('Branch status is currently: pending. Proceed with release? (y/n)', :red).and_return(true)
75
98
 
76
99
  expect(cli).to receive(:run_cmd).with("git log master...feature-branch --reverse --no-merges --pretty=format:'* %s%n%b'").and_return("2013-01-01 did some stuff").ordered
77
100
  expect(cli).to receive(:run_cmd).with("git checkout master").ordered
@@ -97,7 +120,6 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
97
120
  cleanup: true
98
121
  }
99
122
  end
100
- let(:authorization_token) { '123123' }
101
123
  before do
102
124
  expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
103
125
  expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::IntegrateCommand, :integrate, 'staging')
@@ -111,7 +133,7 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
111
133
  expect(cli).to receive(:run_cmd).with("git merge --no-ff feature-branch").ordered
112
134
  expect(cli).to receive(:run_cmd).with("git push origin HEAD").ordered
113
135
 
114
- VCR.use_cassette('pull_request_does_exist') do
136
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
115
137
  cli.release
116
138
  end
117
139
  end
@@ -71,7 +71,7 @@ describe Thegarage::Gitx::Cli::ReviewCommand do
71
71
  allow(cli).to receive(:authorization_token).and_return(authorization_token)
72
72
  expect(cli).to_not receive(:create_pull_request)
73
73
 
74
- VCR.use_cassette('pull_request_does_exist') do
74
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
75
75
  cli.review
76
76
  end
77
77
  end
@@ -91,7 +91,7 @@ describe Thegarage::Gitx::Cli::ReviewCommand do
91
91
 
92
92
  stub_request(:patch, /.*api.github.com.*/).to_return(:status => 200)
93
93
 
94
- VCR.use_cassette('pull_request_does_exist') do
94
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
95
95
  cli.review
96
96
  end
97
97
  end
@@ -109,7 +109,7 @@ describe Thegarage::Gitx::Cli::ReviewCommand do
109
109
  before do
110
110
  allow(cli).to receive(:authorization_token).and_return(authorization_token)
111
111
  expect(cli).to receive(:run_cmd).with("open https://path/to/html/pull/request").ordered
112
- VCR.use_cassette('pull_request_does_exist') do
112
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
113
113
  cli.review
114
114
  end
115
115
  end
@@ -129,7 +129,7 @@ describe Thegarage::Gitx::Cli::ReviewCommand do
129
129
  expect(cli).to receive(:ask_editor).and_return('comment description')
130
130
  stub_request(:post, /.*api.github.com.*/).to_return(:status => 201)
131
131
 
132
- VCR.use_cassette('pull_request_does_exist') do
132
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
133
133
  cli.review
134
134
  end
135
135
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thegarage-gitx
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.1
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Sonnek
@@ -275,7 +275,8 @@ files:
275
275
  - lib/thegarage/gitx/extensions/thor.rb
276
276
  - lib/thegarage/gitx/github.rb
277
277
  - lib/thegarage/gitx/version.rb
278
- - spec/fixtures/vcr_cassettes/pull_request_does_exist.yml
278
+ - spec/fixtures/vcr_cassettes/pull_request_does_exist_with_failure_status.yml
279
+ - spec/fixtures/vcr_cassettes/pull_request_does_exist_with_success_status.yml
279
280
  - spec/fixtures/vcr_cassettes/pull_request_does_not_exist.yml
280
281
  - spec/spec_helper.rb
281
282
  - spec/support/matchers/meet_expectations_matcher.rb
@@ -320,7 +321,8 @@ signing_key:
320
321
  specification_version: 4
321
322
  summary: Utility scripts for Git to increase productivity for common operations
322
323
  test_files:
323
- - spec/fixtures/vcr_cassettes/pull_request_does_exist.yml
324
+ - spec/fixtures/vcr_cassettes/pull_request_does_exist_with_failure_status.yml
325
+ - spec/fixtures/vcr_cassettes/pull_request_does_exist_with_success_status.yml
324
326
  - spec/fixtures/vcr_cassettes/pull_request_does_not_exist.yml
325
327
  - spec/spec_helper.rb
326
328
  - spec/support/matchers/meet_expectations_matcher.rb