sugar_utils 0.7.0 → 0.8.0

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: a82e583baf8090370611445ae00050bf247d2687d947d84d98fbbac7f8cd1cbe
4
- data.tar.gz: 134411bdbc2a675dfc799d73a6d25d5dc0d8760bd8bc3a0583611a7cd1cb50a4
3
+ metadata.gz: af6a77fac1a9c9ab8d6c77cc895a855bcfa16640c0697af69e6ea79fb32c861d
4
+ data.tar.gz: 4aeba71379f891d91909eeaf6abaf2a02e5006e975527db7335c30375223c978
5
5
  SHA512:
6
- metadata.gz: 3fe928e0ec9a19db849034a7691cd44231282f7dbb58dba921d50f62f3403f9f2abf6fdb9c576182c4abc22b50498aee871a3faa7f82879aabe14678cc831845
7
- data.tar.gz: d54adcfcaf340cbbf81fb40bd520c772e80c825b3dc02788d0c70fb608f58abf66d84811e163e830968b13cee3e1b6789c6096df24c02ef297fd6fa3fe147e83
6
+ metadata.gz: 5533ce7cc9b12bf60a68d314c4796e3a76909bb092aa1738953c77dbc84ede2c52346fe6c52233ba8b068a5efdb780e8af99ac346da92ec5f13bc26ed0991b5b
7
+ data.tar.gz: 286bd2dbecb7250d19a96909b8334804e105fb7865bae66833ffbe39c835a88a3a16113cef814530e0c7c2ee7613ddff19ec4f48a53c97ce7aafb8b4799cf0e0
@@ -1,17 +1,40 @@
1
1
  name: CI
2
- on: [push]
2
+ on:
3
+ push:
4
+ schedule:
5
+ - cron: '0 1 * * 0' # every Sunday at 1am
3
6
  jobs:
4
7
  test:
5
8
  strategy:
6
9
  fail-fast: false
7
10
  matrix:
8
11
  os: [ubuntu-latest, macos-latest]
9
- ruby: ['2.6', '2.7', '3.0', '3.1', '3.2', head]
12
+ ruby: ['3.1', '3.2', '3.4', head]
13
+ continue-on-error: ${{ endsWith(matrix.ruby, 'head') }}
10
14
  runs-on: ${{ matrix.os }}
11
15
  steps:
12
- - uses: actions/checkout@v3
16
+ - uses: actions/checkout@v4
13
17
  - uses: ruby/setup-ruby@v1
14
18
  with:
15
19
  ruby-version: ${{ matrix.ruby }}
16
20
  bundler-cache: true
21
+ - run: bundle exec rake ${{ endsWith(matrix.ruby, 'head') && 'spec' || 'tests' }}
22
+ coverage:
23
+ needs: [ test ]
24
+ name: coverage
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+ - uses: ruby/setup-ruby@v1
29
+ with:
30
+ bundler-cache: true
17
31
  - run: bundle exec rake
32
+ env:
33
+ CUCUMBER_PUBLISH_TOKEN: ${{ secrets.CUCUMBER_PUBLISH_TOKEN }}
34
+ - uses: paambaati/codeclimate-action@v9.0.0
35
+ env:
36
+ CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
37
+ with:
38
+ coverageLocations: |
39
+ ${{ github.workspace }}/coverage/lcov/*.lcov:lcov
40
+ debug: true
data/.rubocop.yml CHANGED
@@ -1,9 +1,17 @@
1
- require: rubocop-rspec
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-performance
4
+ - rubocop-rake
2
5
 
3
6
  AllCops:
4
- TargetRubyVersion: 2.6
5
7
  NewCops: enable
6
8
 
9
+ Style/EmptyLiteral:
10
+ Enabled: false
11
+
12
+ Gemspec/DevelopmentDependencies:
13
+ EnforcedStyle: gemspec
14
+
7
15
  Layout/HashAlignment:
8
16
  EnforcedHashRocketStyle: table
9
17
  EnforcedColonStyle: table
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.2
1
+ 3.1.2
data/CHANGELOG.md CHANGED
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.8.0] - 2025-03-10
10
+ ### Changed
11
+ - update the required ruby version from v2.6 to v3.1
12
+
9
13
  ## [0.7.0] - 2022-10-07
10
14
  ### Changed
11
15
  - update the required ruby version from v2.2 to v2.6
data/README.md CHANGED
@@ -6,9 +6,8 @@
6
6
  [![Test Coverage](https://codeclimate.com/github/sugarcrm/sugar_utils/badges/coverage.svg)](https://codeclimate.com/github/sugarcrm/sugar_utils/coverage)
7
7
  [![License](http://img.shields.io/badge/license-Apache2-green.svg?style=flat)](LICENSE)
8
8
 
9
- [![Inline docs](http://inch-ci.org/github/sugarcrm/sugar_utils.svg)](http://inch-ci.org/github/sugarcrm/sugar_utils)
10
- [![RubyDoc](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://rubydoc.org/gems/sugar_utils)
11
- [![CucumberPro](https://img.shields.io/badge/cucumber.pro-sugar_utils-3d10af.svg)](https://app.cucumber.pro/projects/sugar_utils)
9
+ [![RubyDoc](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](https://rubydoc.info/gems/sugar_utils)
10
+ [![CucumberReports: sugar_utils](https://messages.cucumber.io/api/report-collections/7a992611-6430-4ca9-ae77-aa071ba60c8b/badge)](https://reports.cucumber.io/report-collections/7a992611-6430-4ca9-ae77-aa071ba60c8b)
12
11
 
13
12
  Utility methods extracted from SugarCRM Ruby projects.
14
13
 
@@ -68,11 +67,11 @@ These methods might be added in the future:
68
67
  Links to other places on the web where this projects exists:
69
68
 
70
69
  * [Code Climate](https://codeclimate.com/github/sugarcrm/sugar_utils)
71
- * [CucumberPro](https://app.cucumber.pro/projects/sugar_utils)
72
- * [InchCI](http://inch-ci.org/github/sugarcrm/sugar_utils)
70
+ * [Cucumber Reporting](https://reports.cucumber.io/report-collections/7a992611-6430-4ca9-ae77-aa071ba60c8b)
73
71
  * [Github](https://github.com/sugarcrm/sugar_utils)
72
+ * [Kandi](https://kandi.openweaver.com/ruby/sugarcrm/sugar_utils)
74
73
  * [OpenHub](https://www.openhub.net/p/sugar_utils)
75
- * [RubyDoc](http://rubydoc.org/gems/sugar_utils)
74
+ * [RubyDoc](https://rubydoc.info/gems/sugar_utils)
76
75
  * [RubyGems](https://rubygems.org/gems/sugar_utils)
77
76
  * [Ruby LibHunt](https://ruby.libhunt.com/sugar_utils-alternatives)
78
77
  * [Ruby Toolbox](https://www.ruby-toolbox.com/projects/sugar_utils)
@@ -89,4 +88,4 @@ See [CONTRIBUTING](CONTRIBUTING.md) for how you can contribute changes back into
89
88
 
90
89
  ## Acknowledgements
91
90
 
92
- Copyright 2019 [SugarCRM Inc.](http://sugarcrm.com), released under the Apache2 License.
91
+ Copyright 2025 [SugarCRM Inc.](http://sugarcrm.com), released under the [Apache2 License](https://www.apache.org/licenses/LICENSE-2.0.html).
data/Rakefile CHANGED
@@ -54,4 +54,16 @@ Yardstick::Rake::Measurement.new(:yardstick_measure) do |measurement|
54
54
  measurement.output = 'tmp/yard_coverage.txt'
55
55
  end
56
56
 
57
- task default: %i[spec features rubocop yardstick_measure bundle:audit license_finder]
57
+ desc 'Show which specified gems are outdated'
58
+ task 'bundle:outdated' do
59
+ bundle_outdated_report_pathname =
60
+ Pathname(Rake.application.original_dir).join('tmp', 'bundle_outdated.txt')
61
+ bundle_outdated_report_pathname.dirname.mkpath
62
+
63
+ # TODO: Should consider re-writing this without using `tee`.
64
+ sh("bundle outdated --only-explicit | tee #{bundle_outdated_report_pathname}")
65
+ end
66
+
67
+ task tests: %i[spec features]
68
+
69
+ task default: %i[spec features rubocop yard yardstick_measure bundle:audit license_finder]
@@ -22,9 +22,9 @@ Scenario: Read an existing file
22
22
 
23
23
  puts SugarUtils::File.read_json('test.json')
24
24
  """
25
- Then the output should contain:
25
+ Then the output should match:
26
26
  """
27
- {"key"=>"value"}
27
+ {"key"\s*=>\s*"value"}
28
28
  """
29
29
 
30
30
  Scenario: Read an existing file and scurb encoding errors
@@ -37,7 +37,7 @@ Scenario: Read an existing file and scurb encoding errors
37
37
  File.write('test.json', %({\"key\":\"foo\\x92bar\\x93\"}))
38
38
  puts SugarUtils::File.read_json('test.json', scrub_encoding: true)
39
39
  """
40
- Then the output should contain:
40
+ Then the output should match:
41
41
  """
42
- {"key"=>"foobar"}
42
+ {"key"\s*=>\s*"foobar"}
43
43
  """
@@ -4,11 +4,13 @@ module SugarUtils
4
4
  module File
5
5
  # @api private
6
6
  class WriteOptions
7
- # @parma filename [String]
7
+ # @param filename [String]
8
8
  # @param options [Hash]
9
9
  def initialize(filename, options)
10
- @filename = filename
11
- @options = options
10
+ @filename = filename
11
+ @options = options
12
+ @existing_owner = nil
13
+ @existing_group = nil
12
14
 
13
15
  return unless filename && ::File.exist?(filename)
14
16
 
@@ -45,7 +47,7 @@ module SugarUtils
45
47
  @options[:group] || @existing_group
46
48
  end
47
49
 
48
- # @param keys [Array]
50
+ # @param args [Array]
49
51
  # @return [Hash]
50
52
  def slice(*args)
51
53
  keys = args.flatten.compact
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SugarUtils
4
- VERSION = '0.7.0'
4
+ VERSION = '0.8.0'
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -5,15 +5,24 @@ require 'rspec/tabular'
5
5
  require 'fakefs/spec_helpers'
6
6
  require 'rspec/side_effects'
7
7
  require 'etc'
8
- # HACK: including pp seems to resolve an error with FakeFS and File.read
9
- # This seems to be related to but not the same as the problem mentioned in the
10
- # README
11
- # https://github.com/fakefs/fakefs#fakefs-vs-pp-----typeerror-superclass-mismatch-for-class-file
12
- require 'pp'
13
8
 
14
9
  # Setup code coverage
15
10
  require 'simplecov'
16
- SimpleCov.start
11
+ require 'simplecov-lcov'
12
+ require 'simplecov_json_formatter'
13
+ SimpleCov.start do
14
+ # NOTE: Include the lcov formatter for CodeClimate reporting.
15
+ # Even though the simplecov JSON format will be output and used by default,
16
+ # the test reporter does not handle it reliable.
17
+ # Using the lcov formatter is more reliable.
18
+ SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new(
19
+ [
20
+ SimpleCov::Formatter::HTMLFormatter,
21
+ SimpleCov::Formatter::JSONFormatter,
22
+ SimpleCov::Formatter::LcovFormatter
23
+ ]
24
+ )
25
+ end
17
26
 
18
27
  require 'sugar_utils'
19
28
  MultiJson.use(:ok_json)
@@ -10,7 +10,7 @@ describe SugarUtils::File do
10
10
 
11
11
  before do
12
12
  allow(Timeout).to receive(:timeout).with(expected_timeout).and_yield
13
- expect(file).to receive(:flock).with(::File::LOCK_SH)
13
+ expect(file).to receive(:flock).with(File::LOCK_SH)
14
14
  end
15
15
 
16
16
  inputs :options, :expected_timeout
@@ -26,7 +26,7 @@ describe SugarUtils::File do
26
26
 
27
27
  before do
28
28
  allow(Timeout).to receive(:timeout).with(expected_timeout).and_yield
29
- expect(file).to receive(:flock).with(::File::LOCK_EX)
29
+ expect(file).to receive(:flock).with(File::LOCK_EX)
30
30
  end
31
31
 
32
32
  inputs :options, :expected_timeout
@@ -559,7 +559,7 @@ describe SugarUtils::File do
559
559
  #
560
560
  # @return [void]
561
561
  def write(filename, content, perm = nil)
562
- FileUtils.mkdir_p(::File.dirname(filename))
562
+ FileUtils.mkdir_p(File.dirname(filename))
563
563
  File.write(filename, content)
564
564
  FileUtils.chmod(perm, filename) if perm
565
565
  end
data/sugar_utils.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.files = `git ls-files -z`.split("\x0")
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.required_ruby_version = '>= 2.6.0'
20
+ spec.required_ruby_version = '>= 3.1.2'
21
21
 
22
22
  spec.metadata['rubygems_mfa_required'] = 'true'
23
23
 
@@ -25,21 +25,25 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency 'solid_assert', '~> 1.0'
26
26
 
27
27
  spec.add_development_dependency 'aruba', '~> 2.0'
28
- spec.add_development_dependency 'bundler', '~> 2.0'
29
- spec.add_development_dependency 'cucumber', '~> 8.0'
30
- spec.add_development_dependency 'fakefs', '~> 1.0'
28
+ spec.add_development_dependency 'cucumber', '~> 9.0'
29
+ spec.add_development_dependency 'fakefs', '~> 3.0'
31
30
  spec.add_development_dependency 'rake', '~> 13.0'
32
31
  spec.add_development_dependency 'rspec', '~> 3.8'
33
- spec.add_development_dependency 'rspec-side_effects', '~> 0.2.0'
34
- spec.add_development_dependency 'rspec-tabular', '~> 0.3.0'
32
+ spec.add_development_dependency 'rspec-side_effects', '~> 0.2'
33
+ spec.add_development_dependency 'rspec-tabular', '~> 0.3'
35
34
 
36
35
  # Dependencies whose APIs we do not really depend upon, and can be upgraded
37
36
  # without limiting.
38
37
  spec.add_development_dependency 'bundler-audit'
38
+ spec.add_development_dependency 'irb'
39
39
  spec.add_development_dependency 'license_finder'
40
+ spec.add_development_dependency 'logger'
40
41
  spec.add_development_dependency 'rubocop'
42
+ spec.add_development_dependency 'rubocop-performance'
43
+ spec.add_development_dependency 'rubocop-rake'
41
44
  spec.add_development_dependency 'rubocop-rspec'
42
45
  spec.add_development_dependency 'simplecov'
46
+ spec.add_development_dependency 'simplecov-lcov'
43
47
  spec.add_development_dependency 'yard'
44
48
  spec.add_development_dependency 'yardstick'
45
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sugar_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.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: 2022-10-07 00:00:00.000000000 Z
11
+ date: 2025-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -52,48 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.0'
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: cucumber
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '8.0'
61
+ version: '9.0'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '8.0'
68
+ version: '9.0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: fakefs
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '1.0'
75
+ version: '3.0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '1.0'
82
+ version: '3.0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: rake
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -128,28 +114,28 @@ dependencies:
128
114
  requirements:
129
115
  - - "~>"
130
116
  - !ruby/object:Gem::Version
131
- version: 0.2.0
117
+ version: '0.2'
132
118
  type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
122
  - - "~>"
137
123
  - !ruby/object:Gem::Version
138
- version: 0.2.0
124
+ version: '0.2'
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: rspec-tabular
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
129
  - - "~>"
144
130
  - !ruby/object:Gem::Version
145
- version: 0.3.0
131
+ version: '0.3'
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
136
  - - "~>"
151
137
  - !ruby/object:Gem::Version
152
- version: 0.3.0
138
+ version: '0.3'
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: bundler-audit
155
141
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +150,20 @@ dependencies:
164
150
  - - ">="
165
151
  - !ruby/object:Gem::Version
166
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: irb
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: license_finder
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: logger
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: rubocop
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +206,34 @@ dependencies:
192
206
  - - ">="
193
207
  - !ruby/object:Gem::Version
194
208
  version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: rubocop-performance
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: rubocop-rake
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
195
237
  - !ruby/object:Gem::Dependency
196
238
  name: rubocop-rspec
197
239
  requirement: !ruby/object:Gem::Requirement
@@ -220,6 +262,20 @@ dependencies:
220
262
  - - ">="
221
263
  - !ruby/object:Gem::Version
222
264
  version: '0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: simplecov-lcov
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
223
279
  - !ruby/object:Gem::Dependency
224
280
  name: yard
225
281
  requirement: !ruby/object:Gem::Requirement
@@ -304,14 +360,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
304
360
  requirements:
305
361
  - - ">="
306
362
  - !ruby/object:Gem::Version
307
- version: 2.6.0
363
+ version: 3.1.2
308
364
  required_rubygems_version: !ruby/object:Gem::Requirement
309
365
  requirements:
310
366
  - - ">="
311
367
  - !ruby/object:Gem::Version
312
368
  version: '0'
313
369
  requirements: []
314
- rubygems_version: 3.0.3
370
+ rubygems_version: 3.3.7
315
371
  signing_key:
316
372
  specification_version: 4
317
373
  summary: Utility methods extracted from SugarCRM Ruby projects.