pheme 5.3.2 → 5.3.4

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
  SHA256:
3
- metadata.gz: 77a30e7fac2b5c5aa90bf4fc13aac18169470060e7105f8dcb0e13bf8a7adbaf
4
- data.tar.gz: 6ebb0656d54fa11bda6975e3a493149a7f1dcd615020328b0552f7a6e466f5e2
3
+ metadata.gz: 219b35c7c69ba33d474d1063586cc0d357a4ab129b84eb80a9d9229570680a15
4
+ data.tar.gz: 3dce2f5202292466c7f4653e2b68928121a7b9aa5ba0c51375d01d0575159510
5
5
  SHA512:
6
- metadata.gz: f9131f7f06ecdd87284efacf909143c0b4d597acbde113b8a490e883e30b76c4119d768122354675f41a133a2211670c2d2ceec12e702b9f6f3d333f83ce0cfd
7
- data.tar.gz: c2c99f93d207374bc785821995afc6a7f9be87a56018006de904746740b21408f44360d6a8509714d8a5df0199fa8c5d66edae9e72c3881e79dd7f2024f47831
6
+ metadata.gz: e76e2a025181932da7cb730fa624e2ff101a5e48bf565bec1b1e75448ee59c3a92b16c79444014ca1ef202db0cfb944f03214afdffcb13b8bc62ca6e54d5764a
7
+ data.tar.gz: db2eced35f5b27bd0db443aaaa7825008c25dd06b2c3a4c4c2173435f92ace7dbf056e48604cdb0d2b0b2f76ab94a8ea26a733f939d338523253c0e3f4e9afd4
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: Default
3
+
4
+ on:
5
+ push:
6
+
7
+ concurrency:
8
+ group: ${{ github.workflow }}-${{ github.ref }}
9
+ cancel-in-progress: true
10
+
11
+ jobs:
12
+ build_and_publish:
13
+ name: Build and Publish
14
+ uses: wealthsimple/public-github-workflows/.github/workflows/ruby-gem-build.yaml@main
15
+ secrets: inherit
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2024-01-02 17:53:08 UTC using RuboCop version 1.59.0.
3
+ # on 2024-06-14 14:59:19 UTC using RuboCop version 1.64.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -11,10 +11,18 @@
11
11
  Metrics/AbcSize:
12
12
  Max: 20
13
13
 
14
+ # Offense count: 2
15
+ # Configuration parameters: AllowedPatterns.
16
+ # AllowedPatterns: ^expect_, ^assert_
17
+ RSpec/NoExpectationExample:
18
+ Exclude:
19
+ - 'spec/logger_spec.rb'
20
+ - 'spec/queue_poller_spec.rb'
21
+
14
22
  # Offense count: 9
15
- # Configuration parameters: Include, CustomTransform, IgnoreMethods, SpecSuffixOnly.
16
- # Include: **/*_spec*rb*, **/spec/**/*
17
- RSpec/FilePath:
23
+ # Configuration parameters: Include, CustomTransform, IgnoreMethods, IgnoreMetadata.
24
+ # Include: **/*_spec.rb
25
+ RSpec/SpecFilePathFormat:
18
26
  Exclude:
19
27
  - 'spec/configuration_spec.rb'
20
28
  - 'spec/logger_spec.rb'
@@ -26,16 +34,6 @@ RSpec/FilePath:
26
34
  - 'spec/topic_publisher_spec.rb'
27
35
  - 'spec/version_spec.rb'
28
36
 
29
- # Offense count: 14
30
- # Configuration parameters: EnforcedStyle.
31
- # SupportedStyles: have_received, receive
32
- RSpec/MessageSpies:
33
- Exclude:
34
- - 'spec/message_handler_spec.rb'
35
- - 'spec/queue_poller_spec.rb'
36
- - 'spec/rollbar_spec.rb'
37
- - 'spec/topic_publisher_spec.rb'
38
-
39
37
  # Offense count: 2
40
38
  # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
41
39
  RSpec/VerifiedDoubles:
data/CHANGELOG.md CHANGED
@@ -1,10 +1,20 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- ## 5.3.2 - 2024-06-27
7
+ ## Unreleased
8
+
9
+ ## 5.3.4 - 2024-06-14
10
+ ### Changed
11
+ - Updated dependencies
12
+
13
+ ## 5.3.3 - 2024-06-14
14
+ ### Changed
15
+ - Updated dependencies
16
+
17
+ ## 5.3.2 - 2024-05-27
8
18
  ### Changed
9
19
  - Updated dependencies
10
20
 
@@ -165,7 +175,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
165
175
  ### Changed
166
176
  - Updated dependencies
167
177
 
168
- ### 5.0.4 - 2022-04-01
178
+ ## 5.0.4 - 2022-04-01
169
179
  ### Changed
170
180
  - Updated workflows
171
181
 
@@ -242,17 +252,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
242
252
  - Migrate CI from CircleCI to GitHub Actions
243
253
 
244
254
  ## 4.0.3 - 2021-03-08
255
+ ### Changed
245
256
  - Update documentation to include instructions on directly publishing to SQS
246
257
 
247
258
  ## 4.0.2 - 2020-12-17
259
+ ### Changed
248
260
  - Bump local dev version, rubocop fixes, add backstage catalog file + sonarqube project settings
249
261
 
250
262
  ## 4.0.1 - 2020-03-23
251
- ### Fixes
263
+ ### Fixed
252
264
  - Fixes 4.0.0. Instead of expecting message attributes in the message from `poll`, retrieves them from the right place.
253
265
 
254
266
  ## 4.0.0 - 2020-03-18
255
- ### Breaking Changes
267
+ ### Changed
256
268
  - Add the ability for SQS to receive message attributes
257
269
  - `handle` function of `QueuePoller` now takes a third parameter `message_attributes`
258
270
  - blocks or `MessageHandler`s passed to `QueuePoller` can use this `message_attributes`
@@ -298,6 +310,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
298
310
  ## 2.0.1 - 2019-01-03
299
311
  ### Changed
300
312
  - add internal gem spec to test standard gem behavior, reduces unnecessary copy and pasting
313
+
301
314
  ### Fixed
302
315
  - namespace for the VERSION constant was incorrectly set to Ws::Ws
303
316
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pheme (5.3.2)
4
+ pheme (5.3.4)
5
5
  activesupport (>= 4)
6
6
  aws-sdk-sns (~> 1.1)
7
7
  aws-sdk-sqs (~> 1.3)
@@ -11,7 +11,7 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (7.1.3.3)
14
+ activesupport (7.1.3.4)
15
15
  base64
16
16
  bigdecimal
17
17
  concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -25,17 +25,17 @@ GEM
25
25
  public_suffix (>= 2.0.2, < 6.0)
26
26
  ast (2.4.2)
27
27
  aws-eventstream (1.3.0)
28
- aws-partitions (1.930.0)
29
- aws-sdk-core (3.196.1)
28
+ aws-partitions (1.944.0)
29
+ aws-sdk-core (3.197.0)
30
30
  aws-eventstream (~> 1, >= 1.3.0)
31
31
  aws-partitions (~> 1, >= 1.651.0)
32
32
  aws-sigv4 (~> 1.8)
33
33
  jmespath (~> 1, >= 1.6.1)
34
- aws-sdk-sns (1.75.0)
35
- aws-sdk-core (~> 3, >= 3.193.0)
34
+ aws-sdk-sns (1.77.0)
35
+ aws-sdk-core (~> 3, >= 3.197.0)
36
36
  aws-sigv4 (~> 1.1)
37
- aws-sdk-sqs (1.74.0)
38
- aws-sdk-core (~> 3, >= 3.193.0)
37
+ aws-sdk-sqs (1.76.0)
38
+ aws-sdk-core (~> 3, >= 3.197.0)
39
39
  aws-sigv4 (~> 1.1)
40
40
  aws-sigv4 (1.8.0)
41
41
  aws-eventstream (~> 1, >= 1.0.2)
@@ -44,12 +44,12 @@ GEM
44
44
  bundler-audit (0.9.1)
45
45
  bundler (>= 1.2.0, < 3)
46
46
  thor (~> 1.0)
47
- concurrent-ruby (1.2.3)
47
+ concurrent-ruby (1.3.3)
48
48
  connection_pool (2.4.1)
49
49
  diff-lcs (1.5.1)
50
50
  docile (1.4.0)
51
51
  drb (2.2.1)
52
- git (2.0.0)
52
+ git (2.1.1)
53
53
  activesupport (>= 5.0)
54
54
  addressable (~> 2.8)
55
55
  process_executer (~> 1.1)
@@ -60,23 +60,26 @@ GEM
60
60
  json (2.7.2)
61
61
  language_server-protocol (3.17.0.3)
62
62
  lint_roller (1.1.0)
63
- minitest (5.23.0)
63
+ minitest (5.23.1)
64
64
  mutex_m (0.2.0)
65
- parallel (1.24.0)
66
- parser (3.3.1.0)
65
+ parallel (1.25.1)
66
+ parse_a_changelog (1.3.0)
67
+ treetop (~> 1.6)
68
+ parser (3.3.3.0)
67
69
  ast (~> 2.4.1)
68
70
  racc
71
+ polyglot (0.3.5)
69
72
  process_executer (1.1.0)
70
73
  public_suffix (5.0.5)
71
- racc (1.7.3)
72
- rack (3.0.11)
74
+ racc (1.8.0)
75
+ rack (3.1.3)
73
76
  rainbow (3.1.1)
74
77
  rake (13.2.1)
75
78
  rchardet (1.8.0)
76
79
  regexp_parser (2.9.2)
77
80
  resource-struct (0.4.0)
78
- rexml (3.2.8)
79
- strscan (>= 3.0.9)
81
+ rexml (3.3.0)
82
+ strscan
80
83
  rspec (3.13.0)
81
84
  rspec-core (~> 3.13.0)
82
85
  rspec-expectations (~> 3.13.0)
@@ -85,7 +88,7 @@ GEM
85
88
  rspec-expectations (>= 2.99.0.beta1)
86
89
  rspec-core (3.13.0)
87
90
  rspec-support (~> 3.13.0)
88
- rspec-expectations (3.13.0)
91
+ rspec-expectations (3.13.1)
89
92
  diff-lcs (>= 1.2.0, < 2.0)
90
93
  rspec-support (~> 3.13.0)
91
94
  rspec-its (1.3.0)
@@ -97,7 +100,7 @@ GEM
97
100
  rspec-support (3.13.1)
98
101
  rspec_junit_formatter (0.6.0)
99
102
  rspec-core (>= 2, < 4, != 2.12.0)
100
- rubocop (1.63.5)
103
+ rubocop (1.64.1)
101
104
  json (~> 2.3)
102
105
  language_server-protocol (>= 3.17.0)
103
106
  parallel (~> 1.10)
@@ -110,10 +113,8 @@ GEM
110
113
  unicode-display_width (>= 2.4.0, < 3.0)
111
114
  rubocop-ast (1.31.3)
112
115
  parser (>= 3.3.1.0)
113
- rubocop-capybara (2.20.0)
114
- rubocop (~> 1.41)
115
- rubocop-factory_bot (2.25.1)
116
- rubocop (~> 1.41)
116
+ rubocop-factory_bot (2.26.1)
117
+ rubocop (~> 1.61)
117
118
  rubocop-performance (1.21.0)
118
119
  rubocop (>= 1.48.1, < 2.0)
119
120
  rubocop-ast (>= 1.31.1, < 2.0)
@@ -122,13 +123,8 @@ GEM
122
123
  rack (>= 1.1)
123
124
  rubocop (>= 1.33.0, < 2.0)
124
125
  rubocop-ast (>= 1.30.0, < 2.0)
125
- rubocop-rspec (2.29.2)
126
- rubocop (~> 1.40)
127
- rubocop-capybara (~> 2.17)
128
- rubocop-factory_bot (~> 2.22)
129
- rubocop-rspec_rails (~> 2.28)
130
- rubocop-rspec_rails (2.28.3)
131
- rubocop (~> 1.40)
126
+ rubocop-rspec (3.0.1)
127
+ rubocop (~> 1.61)
132
128
  rubocop-vendor (0.13.0)
133
129
  rubocop
134
130
  ruby-progressbar (1.13.0)
@@ -139,10 +135,10 @@ GEM
139
135
  simplecov-html (0.12.3)
140
136
  simplecov_json_formatter (0.1.4)
141
137
  smarter_csv (1.10.3)
142
- standard (1.36.0)
138
+ standard (1.37.0)
143
139
  language_server-protocol (~> 3.17.0.2)
144
140
  lint_roller (~> 1.0)
145
- rubocop (~> 1.63.0)
141
+ rubocop (~> 1.64.0)
146
142
  standard-custom (~> 1.0.0)
147
143
  standard-performance (~> 1.4)
148
144
  standard-custom (1.0.2)
@@ -156,11 +152,14 @@ GEM
156
152
  rubocop-rails (~> 2.23.1)
157
153
  strscan (3.1.0)
158
154
  thor (1.3.1)
155
+ treetop (1.6.12)
156
+ polyglot (~> 0.3)
159
157
  tzinfo (2.0.6)
160
158
  concurrent-ruby (~> 1.0)
161
159
  unicode-display_width (2.5.0)
162
- ws-style (7.4.4)
163
- rubocop-rspec (>= 2.2.0)
160
+ ws-style (7.5.0)
161
+ rubocop-factory_bot (>= 2.26.0)
162
+ rubocop-rspec (>= 3.0.0)
164
163
  rubocop-vendor (>= 0.11)
165
164
  standard (>= 1.30.1)
166
165
  standard-custom (>= 1.0.2)
@@ -173,6 +172,7 @@ DEPENDENCIES
173
172
  bundler
174
173
  bundler-audit
175
174
  git
175
+ parse_a_changelog
176
176
  pheme!
177
177
  rake
178
178
  rspec
data/lib/pheme/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pheme
2
- VERSION = '5.3.2'.freeze
2
+ VERSION = '5.3.4'.freeze
3
3
  end
data/pheme.gemspec CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
 
31
31
  s.add_development_dependency 'bundler'
32
32
  s.add_development_dependency 'git'
33
+ s.add_development_dependency "parse_a_changelog"
33
34
  s.add_development_dependency 'rake'
34
35
  s.add_development_dependency 'rspec'
35
36
  s.add_development_dependency 'rspec-collection_matchers'
@@ -1,6 +1,6 @@
1
1
  class ExampleQueuePoller < Pheme::QueuePoller
2
- def initialize(queue_url: 'http://mock_url.test', **kwargs)
3
- super(queue_url: queue_url, **kwargs)
2
+ def initialize(queue_url: 'http://mock_url.test', **)
3
+ super
4
4
  end
5
5
 
6
6
  def handle(message, metadata, message_attributes)
data/spec/version_spec.rb CHANGED
@@ -1,35 +1,87 @@
1
1
  require 'git'
2
+ require 'parse_a_changelog'
2
3
 
3
- describe Pheme do
4
+ RSpec.describe 'a published gem' do # rubocop:disable RSpec/DescribeClass
4
5
  def get_version(git, branch = 'HEAD')
5
6
  git.grep('VERSION = ', 'lib/*/version.rb', { object: branch }).
6
7
  map { |_sha, matches| matches.first[1] }.
7
- filter_map { |version_string| parse_version(version_string) }.
8
+ filter_map { |str| parse_version(str) }.
8
9
  first
10
+ rescue Git::GitExecuteError
11
+ # Catches failures for branch name being master
12
+ nil
9
13
  end
10
14
 
11
15
  def parse_version(string)
12
16
  string.match(/VERSION = ['"](.*)['"]/)[1]
13
17
  end
14
18
 
19
+ def main_branch
20
+ @main_branch ||=
21
+ if git.branches['origin/main']
22
+ 'origin/main'
23
+ elsif git.branches['origin/master']
24
+ 'origin/master'
25
+ else
26
+ raise StandardError,
27
+ <<~ERROR
28
+ Couldn't determine main branch.
29
+ Does 'origin/main' or 'origin/master' need to be fetched?
30
+ ERROR
31
+ end
32
+ end
33
+
34
+ def needs_version_bump?
35
+ base = git.merge_base(main_branch, 'HEAD').first&.sha
36
+ base ||= main_branch
37
+ git.diff(base, 'HEAD').any? { |diff|
38
+ not_gemfile?(diff) && not_dotfile?(diff) && not_docs?(diff) && not_spec?(diff)
39
+ }
40
+ end
41
+
42
+ def not_gemfile?(diff)
43
+ ['Gemfile', 'Gemfile.lock'].exclude?(diff.path)
44
+ end
45
+
46
+ def not_docs?(diff)
47
+ !diff.path.end_with?('.md')
48
+ end
49
+
50
+ def not_spec?(diff)
51
+ !diff.path.start_with?('spec/')
52
+ end
53
+
54
+ def not_dotfile?(diff)
55
+ # Ignore dotfiles, like .gitignore and CI files like .github/...
56
+ !diff.path.start_with?('.')
57
+ end
58
+
59
+ let(:git) { Git.open('.') }
60
+ let(:head_version) { get_version(git, 'HEAD') }
61
+
15
62
  it 'has a version number' do
16
- git = Git.open('.')
17
- head_version = get_version(git, 'HEAD')
18
63
  expect(head_version).not_to be_nil
19
64
  end
20
65
 
21
- it 'has a bumped version' do
22
- git = Git.open('.')
23
- main_version = get_version(git, 'origin/main')
66
+ it 'has a bumped version committed' do
67
+ main_version = get_version(git, main_branch)
24
68
  skip('first time publishing, no need to compare versions') if main_version.nil?
25
69
 
26
- is_main_branch = git.current_branch == 'main'
70
+ is_main_branch = git.current_branch == main_branch
27
71
  skip('already on main branch, no need to compare versions') if is_main_branch
28
72
 
29
- head_version = get_version(git, 'HEAD')
30
- puts "head_version " + head_version
31
- raise 'no version.rb file found on the current branch' if head_version.nil?
73
+ skip('Diff only contains non-code changes, no need to bump version') unless needs_version_bump?
32
74
 
33
75
  expect(Gem::Version.new(head_version)).to be > Gem::Version.new(main_version)
34
76
  end
77
+
78
+ it 'has a CHANGELOG.md file' do
79
+ expect(File).to exist('CHANGELOG.md')
80
+ end
81
+
82
+ it 'has changelog entry for current version' do
83
+ parser = ParseAChangelog.parse('CHANGELOG.md')
84
+ versions = parser.elements[2].elements.map { |element| element.elements[1].text_value }
85
+ expect(versions.first).to include(head_version)
86
+ end
35
87
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pheme
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.3.2
4
+ version: 5.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Graham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-28 00:00:00.000000000 Z
11
+ date: 2024-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: parse_a_changelog
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'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rake
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -215,7 +229,7 @@ extra_rdoc_files: []
215
229
  files:
216
230
  - ".github/CODEOWNERS"
217
231
  - ".github/PULL_REQUEST_TEMPLATE.md"
218
- - ".github/workflows/main.yml"
232
+ - ".github/workflows/default.yaml"
219
233
  - ".github/workflows/stale.yml"
220
234
  - ".gitignore"
221
235
  - ".rspec"
@@ -1,58 +0,0 @@
1
- ---
2
- name: Pipeline
3
- on:
4
- push:
5
- concurrency:
6
- group: ${{ github.workflow }}-${{ github.ref }}
7
- cancel-in-progress: true
8
-
9
- jobs:
10
- build:
11
- name: Build
12
- runs-on: ubuntu-22.04
13
- strategy:
14
- matrix:
15
- ruby-version: [3.1.4, 3.2.3, 3.3.0]
16
- steps:
17
- - uses: actions/checkout@v3
18
- with:
19
- fetch-depth: 0
20
- - name: Set up Ruby ${{ matrix.ruby-version }}
21
- uses: ruby/setup-ruby@v1
22
- with:
23
- bundler-cache: true
24
- ruby-version: ${{ matrix.ruby-version }}
25
- - name: Lint
26
- run: bundle exec rubocop
27
- - name: Test
28
- run: bundle exec rspec
29
-
30
- # Separate `release` job from `build`, as we only want release to be run once
31
- # and not run for each ruby version in the matrix:
32
- release:
33
- name: Release
34
- if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
35
- needs: build
36
- runs-on: ubuntu-22.04
37
- steps:
38
- - uses: actions/checkout@v3
39
- with:
40
- fetch-depth: 0
41
- - name: Set up Ruby
42
- uses: ruby/setup-ruby@v1
43
- with:
44
- bundler-cache: true
45
- - name: Release the gem
46
- run: |
47
- mkdir -p ~/.gem
48
- cat << EOF > ~/.gem/credentials
49
- ---
50
- :github: Bearer ${GITHUB_TOKEN}
51
- :rubygems_api_key: ${RUBYGEMS_API_KEY}
52
- EOF
53
- chmod 0600 ~/.gem/credentials
54
- git config user.email "noreply@wealthsimple.com"
55
- git config user.name "Wolfbot"
56
- bundle exec rake release
57
- env:
58
- RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}