bundler-audit 0.9.0.1 → 0.9.1

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: 83898613996d764bcb4e3ed517da59a95132049e29e7e8afa25698d4a03f6276
4
- data.tar.gz: e931b427480a4bbdaeaa4bf381141780e04d26cbd2a98c60e60f3a0431c3b4d6
3
+ metadata.gz: 762980c9b274b19e477ee0be0ae021e452a1e7d63796ceb6da0d667de704dad9
4
+ data.tar.gz: 3e0fae808a027e677f3d218949c092d8189fc124bb34f61b57fdf982b5ffd6b1
5
5
  SHA512:
6
- metadata.gz: fcd29c11e7cee080390e9dc3b6356fc74817835a8b9f8621d230d27ea497b81ba63abcf880799f948de6eb4768747a01dc46a0aa29841c1bd76d92cd990c2659
7
- data.tar.gz: f41ece9bf750bddcf632be46f240f079074ce26c7cb69e24184002929f041ed326e1b383a3649ec680bb3d42e03c25a167b65eb93219511065c05622bee1bef3
6
+ metadata.gz: faa37304223ab40fd5678b6a4fcc1f9edb6d112c418c3a80a38aff6dbfbfacd416481f32f402998ece370d4646fe416e8f9453a5cec98d634845ff7bfd1abc6f
7
+ data.tar.gz: 7fbd39c761fdee364266207e4f0b52be6347b480b8447d31688428b8d3b5337c7f7403142ef0b2da0bc293ddfbe1ea5df93750b3a70be3920eff37af1d6a7884
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Request a new Feature
4
+ title: ''
5
+ labels: feature
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ ## Description
11
+
12
+ <!-- Explain how the desired feature would work. -->
13
+ <!-- Explain why the desired feature is needed. -->
14
+ <!-- Explain who would use the desired feature. -->
@@ -12,7 +12,8 @@ jobs:
12
12
  - 2.5
13
13
  - 2.6
14
14
  - 2.7
15
- - 3.0
15
+ - '3.0'
16
+ - 3.1
16
17
  - jruby
17
18
  - truffleruby-head
18
19
  name: Ruby ${{ matrix.ruby }}
data/.rubocop.yml CHANGED
@@ -65,6 +65,9 @@ Style/WordArray: { Enabled: false } # Offense count: 1
65
65
  Style/Lambda: { Enabled: false } # Offense count: 2
66
66
  Style/SafeNavigation: { Enabled: false } # Offense count: 2
67
67
  Lint/IneffectiveAccessModifier: { Enabled: false } # Offense count: 1
68
+ Gemspec/DuplicatedAssignment:
69
+ Exclude:
70
+ - 'bundler-audit.gemspec'
68
71
 
69
72
  #
70
73
  # Rules that may be disabled in the future.
data/ChangeLog.md CHANGED
@@ -1,7 +1,28 @@
1
+ ### 0.9.1 / 2022-05-19
2
+
3
+ #### CLI
4
+
5
+ * Improve the readability of the suggested gem versions to upgrade to
6
+ (pull #331).
7
+
8
+ #### Rake Task
9
+
10
+ * Fixed a regression introduced in 0.9.0 where the `bundler:audit` rake task
11
+ was not exiting with an error status code if vulnerabilities were found.
12
+ Now when the `bundler-audit` command fails, the rake task will also exit with
13
+ the `bundler-audit` command's error code.
14
+ * If the `bundler-audit` command could not be found for some reason raise the
15
+ {Bundler::Audit::Task::CommandNotFound} exception.
16
+
1
17
  ### 0.9.0.1 / 2021-08-31
2
18
 
3
19
  * Add a workaround for Psych < 3.1.0 to support running on Ruby < 2.6.
4
20
  (issue #319)
21
+ * Although, Ruby 2.5 and prior have all reached [End-of-Life] and
22
+ are no longer receiving security updates. It is strongly advised that you
23
+ should upgrade to a currently supported version of Ruby.
24
+
25
+ [End-of-Life]: https://www.ruby-lang.org/en/downloads/branches/
5
26
 
6
27
  ### 0.9.0 / 2021-08-31
7
28
 
data/Gemfile CHANGED
@@ -12,6 +12,7 @@ group :development do
12
12
  gem 'simplecov', '~> 0.7', require: false
13
13
 
14
14
  gem 'kramdown', '~> 2.0'
15
+ gem 'redcarpet', platform: :mri
15
16
  gem 'yard', '~> 0.9'
16
17
  gem 'yard-spellcheck', require: false
17
18
  end
data/README.md CHANGED
@@ -111,27 +111,39 @@ Update the [ruby-advisory-db] that `bundle audit` uses:
111
111
 
112
112
  Update the [ruby-advisory-db] and check `Gemfile.lock` (useful for CI runs):
113
113
 
114
- $ bundle-audit check --update
114
+ ```shell
115
+ $ bundle-audit check --update
116
+ ```
115
117
 
116
118
  Checking the `Gemfile.lock` without updating the [ruby-advisory-db]:
117
119
 
118
- $ bundle-audit check --no-update
120
+ ```shell
121
+ $ bundle-audit check --no-update
122
+ ```
119
123
 
120
124
  Ignore specific advisories:
121
125
 
122
- $ bundle-audit check --ignore OSVDB-108664
126
+ ```shell
127
+ $ bundle-audit check --ignore OSVDB-108664
128
+ ```
123
129
 
124
130
  Checking a custom `Gemfile.lock` file:
125
131
 
126
- $ bundle-audit check --gemfile Gemfile.custom.lock
132
+ ```shell
133
+ $ bundle-audit check --gemfile-lock Gemfile.custom.lock
134
+ ```
127
135
 
128
136
  Output the audit's results in JSON:
129
137
 
130
- $ bundle-audit check --format json
138
+ ```shell
139
+ $ bundle-audit check --format json
140
+ ```
131
141
 
132
142
  Output the audit's results in JSON, to a file:
133
143
 
134
- $ bundle-audit check --format json --output bundle-audit.json
144
+ ```shell
145
+ $ bundle-audit check --format json --output bundle-audit.json
146
+ ```
135
147
 
136
148
  ## Rake Tasks
137
149
 
@@ -149,16 +161,20 @@ bundler-audit also supports a per-project configuration file:
149
161
 
150
162
  `.bundler-audit.yml`:
151
163
 
152
- ---
153
- ignore:
154
- - CVE-YYYY-XXXX
155
- - ...
164
+ ```yaml
165
+ ---
166
+ ignore:
167
+ - CVE-YYYY-XXXX
168
+ - ...
169
+ ```
156
170
 
157
171
  * `ignore:` \[Array\<String\>\] - A list of advisory IDs to ignore.
158
172
 
159
173
  You can provide a path to a config file using the `--config` flag:
160
174
 
161
- $ bundle-audit check --config bundler-audit.custom.yaml
175
+ ```shell
176
+ $ bundle-audit check --config bundler-audit.custom.yaml
177
+ ```
162
178
 
163
179
  ## Requirements
164
180
 
@@ -170,25 +186,35 @@ You can provide a path to a config file using the `--config` flag:
170
186
 
171
187
  ## Install
172
188
 
173
- $ [sudo] gem install bundler-audit
189
+ ```shell
190
+ $ [sudo] gem install bundler-audit
191
+ ```
174
192
 
175
193
  ### Git
176
194
 
177
195
  * Debian / Ubuntu:
178
196
 
179
- $ sudo apt install git
197
+ ```shell
198
+ $ sudo apt install git
199
+ ```
180
200
 
181
201
  * RedHat / Fedora:
182
202
 
183
- $ sudo dnf install git
203
+ ```shell
204
+ $ sudo dnf install git
205
+ ```
184
206
 
185
207
  * Alpine Linux:
186
208
 
187
- $ apk add git
209
+ ```shell
210
+ $ apk add git
211
+ ```
188
212
 
189
213
  * macOS:
190
214
 
191
- $ brew install git
215
+ ```shell
216
+ $ brew install git
217
+ ```
192
218
 
193
219
  ## Contributing
194
220
 
@@ -205,7 +231,7 @@ You can provide a path to a config file using the `--config` flag:
205
231
 
206
232
  ## License
207
233
 
208
- Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
234
+ Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
209
235
 
210
236
  bundler-audit is free software: you can redistribute it and/or modify
211
237
  it under the terms of the GNU General Public License as published by
@@ -21,9 +21,8 @@ Gem::Specification.new do |gem|
21
21
 
22
22
  glob = lambda { |patterns| gem.files & Dir[*patterns] }
23
23
 
24
- gem.files = if gemspec['files'] then glob[gemspec['files']]
25
- else `git ls-files`.split($/)
26
- end
24
+ gem.files = `git ls-files`.split($/)
25
+ gem.files = glob[gemspec['files']] if gemspec['files']
27
26
 
28
27
  gem.executables = gemspec.fetch('executables') do
29
28
  glob['bin/*'].map { |path| File.basename(path) }
@@ -31,7 +30,7 @@ Gem::Specification.new do |gem|
31
30
  gem.default_executable = gem.executables.first if Gem::VERSION < '1.7.'
32
31
 
33
32
  gem.extensions = glob[gemspec['extensions'] || 'ext/**/extconf.rb']
34
- gem.test_files = glob[gemspec['test_files'] || '{test/{**/}*_test.rb']
33
+ gem.test_files = glob[gemspec['test_files'] || 'spec/{**/}*_spec.rb']
35
34
  gem.extra_rdoc_files = glob[gemspec['extra_doc_files'] || '*.{txt,md}']
36
35
 
37
36
  gem.require_paths = Array(gemspec.fetch('require_paths') {
@@ -56,4 +55,5 @@ Gem::Specification.new do |gem|
56
55
  gem.add_development_dependency(name,split[versions])
57
56
  end
58
57
  end
58
+ gem.metadata['rubygems_mfa_required'] = 'true'
59
59
  end
data/gemspec.yml CHANGED
@@ -6,6 +6,13 @@ authors: Postmodern
6
6
  email: postmodern.mod3@gmail.com
7
7
  homepage: https://github.com/rubysec/bundler-audit#readme
8
8
 
9
+ metadata:
10
+ documentation_uri: https://rubydoc.info/gems/bundler-audit
11
+ source_code_uri: https://github.com/rubysec/bundler-audit.rb
12
+ bug_tracker_uri: https://github.com/rubysec/bundler-audit.rb/issues
13
+ changelog_uri: https://github.com/rubysec/bundler-audit.rb/blob/master/ChangeLog.md
14
+ rubygems_mfa_required: 'true'
15
+
9
16
  required_ruby_version: ">= 2.0.0"
10
17
  required_rubygems_version: ">= 1.8.0"
11
18
 
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -15,6 +15,7 @@
15
15
  # along with bundler-audit. If not, see <https://www.gnu.org/licenses/>.
16
16
  #
17
17
 
18
+ require 'date'
18
19
  require 'yaml'
19
20
 
20
21
  module Bundler
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -101,7 +101,7 @@ module Bundler
101
101
 
102
102
  def advisory_solution(advisory)
103
103
  unless advisory.patched_versions.empty?
104
- "upgrade to #{advisory.patched_versions.join(', ')}"
104
+ "upgrade to #{advisory.patched_versions.map { |v| "'#{v}'" }.join(', ')}"
105
105
  else
106
106
  "remove or disable this gem until a patch is available!"
107
107
  end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -105,7 +105,7 @@ module Bundler
105
105
 
106
106
  unless advisory.patched_versions.empty?
107
107
  say "Solution: upgrade to ", :red
108
- say advisory.patched_versions.join(', ')
108
+ say advisory.patched_versions.map { |v| "'#{v}'" }.join(', ')
109
109
  else
110
110
  say "Solution: ", :red
111
111
  say "remove or disable this gem until a patch is available!", [:red, :bold]
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -75,8 +75,10 @@ module Bundler
75
75
 
76
76
  report = scanner.report(ignore: options.ignore)
77
77
 
78
- output = if options[:output] then File.new(options[:output],'w')
79
- else $stdout
78
+ output = if options[:output]
79
+ File.new(options[:output],'w')
80
+ else
81
+ $stdout
80
82
  end
81
83
 
82
84
  print_report(report,output)
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -34,18 +34,20 @@ module Bundler
34
34
  class UpdateFailed < RuntimeError
35
35
  end
36
36
 
37
- # Git URL of the ruby-advisory-db
37
+ # Git URL of the ruby-advisory-db.
38
38
  URL = 'https://github.com/rubysec/ruby-advisory-db.git'
39
39
 
40
- # Path to the user's copy of the ruby-advisory-db
40
+ # Path to the user's copy of the ruby-advisory-db.
41
41
  USER_PATH = File.expand_path(File.join(Gem.user_home,'.local','share','ruby-advisory-db'))
42
42
 
43
- # Default path to the ruby-advisory-db
43
+ # Default path to the ruby-advisory-db.
44
44
  #
45
45
  # @since 0.8.0
46
- DEFAULT_PATH = ENV['BUNDLER_AUDIT_DB'] || USER_PATH
46
+ DEFAULT_PATH = ENV.fetch('BUNDLER_AUDIT_DB',USER_PATH)
47
47
 
48
- # The path to the advisory database
48
+ # The path to the advisory database.
49
+ #
50
+ # @return [String]
49
51
  attr_reader :path
50
52
 
51
53
  #
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -36,7 +36,7 @@ module Bundler
36
36
  #
37
37
  class Scanner
38
38
 
39
- # The advisory database
39
+ # The advisory database.
40
40
  #
41
41
  # @return [Database]
42
42
  attr_reader :database
@@ -44,12 +44,13 @@ module Bundler
44
44
  # Project root directory
45
45
  attr_reader :root
46
46
 
47
- # The parsed `Gemfile.lock` from the project
47
+ # The parsed `Gemfile.lock` from the project.
48
48
  #
49
49
  # @return [Bundler::LockfileParser]
50
50
  attr_reader :lockfile
51
51
 
52
- # The configuration loaded from the `.bundler-audit.yml` file from the project
52
+ # The configuration loaded from the `.bundler-audit.yml` file from the
53
+ # project.
53
54
  #
54
55
  # @return [Hash]
55
56
  attr_reader :config
@@ -217,8 +218,10 @@ module Bundler
217
218
  def scan_specs(options={})
218
219
  return enum_for(__method__,options) unless block_given?
219
220
 
220
- ignore = if options[:ignore] then Set.new(options[:ignore])
221
- else config.ignore
221
+ ignore = if options[:ignore]
222
+ Set.new(options[:ignore])
223
+ else
224
+ config.ignore
222
225
  end
223
226
 
224
227
  @lockfile.specs.each do |gem|
@@ -6,6 +6,9 @@ module Bundler
6
6
  # Defines the `bundle:audit` rake tasks.
7
7
  #
8
8
  class Task < Rake::TaskLib
9
+ class CommandNotFound < RuntimeError
10
+ end
11
+
9
12
  #
10
13
  # Initializes the task.
11
14
  #
@@ -23,12 +26,12 @@ module Bundler
23
26
  namespace :audit do
24
27
  desc 'Checks the Gemfile.lock for insecure dependencies'
25
28
  task :check do
26
- system 'bundler-audit', 'check'
29
+ bundler_audit 'check'
27
30
  end
28
31
 
29
32
  desc 'Updates the bundler-audit vulnerability database'
30
33
  task :update do
31
- system 'bundler-audit', 'update'
34
+ bundler_audit 'update'
32
35
  end
33
36
  end
34
37
 
@@ -39,6 +42,33 @@ module Bundler
39
42
  task 'bundler:audit:check' => 'bundle:audit:check'
40
43
  task 'bundler:audit:update' => 'bundle:audit:update'
41
44
  end
45
+
46
+ #
47
+ # Runs the `bundler-audit` command with the additional arguments.
48
+ #
49
+ # @param [Array<String>] arguments
50
+ # Additional command-line arguments for `bundler-audit`.
51
+ #
52
+ # @return [true]
53
+ # The `bundler-audit` command successfully exited.
54
+ #
55
+ # @raise [CommandNotFound]
56
+ # The `bundler-audit` command could not be executed or was not found.
57
+ #
58
+ # @note
59
+ # If the `bundler-audit` command exits with an error, the rake task
60
+ # will also exit with the same error code.
61
+ #
62
+ def bundler_audit(*arguments)
63
+ case system('bundler-audit',*arguments)
64
+ when false
65
+ exit $?.exitstatus || 1
66
+ when nil
67
+ raise(CommandNotFound,"bundler-audit could not be executed")
68
+ else
69
+ return true
70
+ end
71
+ end
42
72
  end
43
73
  end
44
74
  end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -18,6 +18,6 @@
18
18
  module Bundler
19
19
  module Audit
20
20
  # bundler-audit version
21
- VERSION = '0.9.0.1'
21
+ VERSION = '0.9.1'
22
22
  end
23
23
  end
data/lib/bundler/audit.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2021 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -45,7 +45,16 @@ describe Bundler::Audit::Advisory do
45
45
  end
46
46
 
47
47
  describe "load" do
48
- let(:data) { YAML.load_file(path) }
48
+ let(:data) do
49
+ File.open(path) do |yaml|
50
+ if Psych::VERSION >= '3.1.0'
51
+ YAML.safe_load(yaml, permitted_classes: [Date])
52
+ else
53
+ # XXX: psych < 3.1.0 YAML.safe_load calling convention
54
+ YAML.safe_load(yaml, [Date])
55
+ end
56
+ end
57
+ end
49
58
 
50
59
  describe '#id' do
51
60
  subject { super().id }
@@ -85,15 +85,15 @@ GEM
85
85
  marcel (1.0.1)
86
86
  method_source (1.0.0)
87
87
  mini_mime (1.0.3)
88
- mini_portile2 (2.5.1)
88
+ mini_portile2 (2.8.0)
89
89
  minitest (5.14.4)
90
90
  nio4r (2.5.7)
91
- nokogiri (1.11.6)
92
- mini_portile2 (~> 2.5.0)
91
+ nokogiri (1.13.6)
92
+ mini_portile2 (~> 2.8.0)
93
93
  racc (~> 1.4)
94
- nokogiri (1.11.6-x86_64-linux)
94
+ nokogiri (1.13.6-x86_64-linux)
95
95
  racc (~> 1.4)
96
- racc (1.5.2)
96
+ racc (1.6.0)
97
97
  rack (2.2.3)
98
98
  rack-test (1.1.0)
99
99
  rack (>= 1.0, < 3)
@@ -1,113 +1,113 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- actioncable (5.2.6)
5
- actionpack (= 5.2.6)
4
+ actioncable (5.2.8)
5
+ actionpack (= 5.2.8)
6
6
  nio4r (~> 2.0)
7
7
  websocket-driver (>= 0.6.1)
8
- actionmailer (5.2.6)
9
- actionpack (= 5.2.6)
10
- actionview (= 5.2.6)
11
- activejob (= 5.2.6)
8
+ actionmailer (5.2.8)
9
+ actionpack (= 5.2.8)
10
+ actionview (= 5.2.8)
11
+ activejob (= 5.2.8)
12
12
  mail (~> 2.5, >= 2.5.4)
13
13
  rails-dom-testing (~> 2.0)
14
- actionpack (5.2.6)
15
- actionview (= 5.2.6)
16
- activesupport (= 5.2.6)
14
+ actionpack (5.2.8)
15
+ actionview (= 5.2.8)
16
+ activesupport (= 5.2.8)
17
17
  rack (~> 2.0, >= 2.0.8)
18
18
  rack-test (>= 0.6.3)
19
19
  rails-dom-testing (~> 2.0)
20
20
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
21
- actionview (5.2.6)
22
- activesupport (= 5.2.6)
21
+ actionview (5.2.8)
22
+ activesupport (= 5.2.8)
23
23
  builder (~> 3.1)
24
24
  erubi (~> 1.4)
25
25
  rails-dom-testing (~> 2.0)
26
26
  rails-html-sanitizer (~> 1.0, >= 1.0.3)
27
- activejob (5.2.6)
28
- activesupport (= 5.2.6)
27
+ activejob (5.2.8)
28
+ activesupport (= 5.2.8)
29
29
  globalid (>= 0.3.6)
30
- activemodel (5.2.6)
31
- activesupport (= 5.2.6)
32
- activerecord (5.2.6)
33
- activemodel (= 5.2.6)
34
- activesupport (= 5.2.6)
30
+ activemodel (5.2.8)
31
+ activesupport (= 5.2.8)
32
+ activerecord (5.2.8)
33
+ activemodel (= 5.2.8)
34
+ activesupport (= 5.2.8)
35
35
  arel (>= 9.0)
36
- activestorage (5.2.6)
37
- actionpack (= 5.2.6)
38
- activerecord (= 5.2.6)
36
+ activestorage (5.2.8)
37
+ actionpack (= 5.2.8)
38
+ activerecord (= 5.2.8)
39
39
  marcel (~> 1.0.0)
40
- activesupport (5.2.6)
40
+ activesupport (5.2.8)
41
41
  concurrent-ruby (~> 1.0, >= 1.0.2)
42
42
  i18n (>= 0.7, < 2)
43
43
  minitest (~> 5.1)
44
44
  tzinfo (~> 1.1)
45
45
  arel (9.0.0)
46
46
  builder (3.2.4)
47
- concurrent-ruby (1.1.8)
47
+ concurrent-ruby (1.1.10)
48
48
  crass (1.0.6)
49
49
  erubi (1.10.0)
50
- globalid (0.4.2)
51
- activesupport (>= 4.2.0)
52
- i18n (1.8.10)
50
+ globalid (1.0.0)
51
+ activesupport (>= 5.0)
52
+ i18n (1.10.0)
53
53
  concurrent-ruby (~> 1.0)
54
- loofah (2.9.1)
54
+ loofah (2.18.0)
55
55
  crass (~> 1.0.2)
56
56
  nokogiri (>= 1.5.9)
57
57
  mail (2.7.1)
58
58
  mini_mime (>= 0.1.1)
59
- marcel (1.0.1)
59
+ marcel (1.0.2)
60
60
  method_source (1.0.0)
61
- mini_mime (1.1.0)
62
- mini_portile2 (2.5.1)
63
- minitest (5.14.4)
64
- nio4r (2.5.7)
65
- nokogiri (1.11.6)
66
- mini_portile2 (~> 2.5.0)
61
+ mini_mime (1.1.2)
62
+ mini_portile2 (2.8.0)
63
+ minitest (5.15.0)
64
+ nio4r (2.5.8)
65
+ nokogiri (1.13.6)
66
+ mini_portile2 (~> 2.8.0)
67
67
  racc (~> 1.4)
68
- nokogiri (1.11.6-x86_64-linux)
68
+ nokogiri (1.13.6-x86_64-linux)
69
69
  racc (~> 1.4)
70
- racc (1.5.2)
70
+ racc (1.6.0)
71
71
  rack (2.2.3)
72
72
  rack-test (1.1.0)
73
73
  rack (>= 1.0, < 3)
74
- rails (5.2.6)
75
- actioncable (= 5.2.6)
76
- actionmailer (= 5.2.6)
77
- actionpack (= 5.2.6)
78
- actionview (= 5.2.6)
79
- activejob (= 5.2.6)
80
- activemodel (= 5.2.6)
81
- activerecord (= 5.2.6)
82
- activestorage (= 5.2.6)
83
- activesupport (= 5.2.6)
74
+ rails (5.2.8)
75
+ actioncable (= 5.2.8)
76
+ actionmailer (= 5.2.8)
77
+ actionpack (= 5.2.8)
78
+ actionview (= 5.2.8)
79
+ activejob (= 5.2.8)
80
+ activemodel (= 5.2.8)
81
+ activerecord (= 5.2.8)
82
+ activestorage (= 5.2.8)
83
+ activesupport (= 5.2.8)
84
84
  bundler (>= 1.3.0)
85
- railties (= 5.2.6)
85
+ railties (= 5.2.8)
86
86
  sprockets-rails (>= 2.0.0)
87
87
  rails-dom-testing (2.0.3)
88
88
  activesupport (>= 4.2.0)
89
89
  nokogiri (>= 1.6)
90
90
  rails-html-sanitizer (1.0.4)
91
91
  loofah (~> 2.2, >= 2.2.2)
92
- railties (5.2.6)
93
- actionpack (= 5.2.6)
94
- activesupport (= 5.2.6)
92
+ railties (5.2.8)
93
+ actionpack (= 5.2.8)
94
+ activesupport (= 5.2.8)
95
95
  method_source
96
96
  rake (>= 0.8.7)
97
97
  thor (>= 0.19.0, < 2.0)
98
- rake (13.0.3)
99
- sprockets (4.0.2)
98
+ rake (13.0.6)
99
+ sprockets (4.0.3)
100
100
  concurrent-ruby (~> 1.0)
101
101
  rack (> 1, < 3)
102
- sprockets-rails (3.2.2)
103
- actionpack (>= 4.0)
104
- activesupport (>= 4.0)
102
+ sprockets-rails (3.4.2)
103
+ actionpack (>= 5.2)
104
+ activesupport (>= 5.2)
105
105
  sprockets (>= 3.0.0)
106
- thor (1.1.0)
106
+ thor (1.2.1)
107
107
  thread_safe (0.3.6)
108
108
  tzinfo (1.2.9)
109
109
  thread_safe (~> 0.1)
110
- websocket-driver (0.7.4)
110
+ websocket-driver (0.7.5)
111
111
  websocket-extensions (>= 0.1.0)
112
112
  websocket-extensions (0.1.5)
113
113
 
@@ -120,4 +120,4 @@ DEPENDENCIES
120
120
  rails-html-sanitizer (~> 1.0.3)
121
121
 
122
122
  BUNDLED WITH
123
- 2.2.0
123
+ 2.3.6
@@ -241,7 +241,7 @@ describe Bundler::Audit::CLI::Formats::Junit do
241
241
 
242
242
  context "when Advisory#patched_versions is not empty" do
243
243
  it 'must print "Solution: upgrade to ..."' do
244
- expect(output).to include("Solution: upgrade to #{CGI.escapeHTML(advisory.patched_versions.join(', '))}")
244
+ expect(output).to include("Solution: upgrade to #{CGI.escapeHTML(advisory.patched_versions.map { |v| "'#{v}'" }.join(', '))}")
245
245
  end
246
246
  end
247
247
 
@@ -230,7 +230,7 @@ describe Bundler::Audit::CLI::Formats::Text do
230
230
 
231
231
  context "when Advisory#patched_versions is not empty" do
232
232
  it 'must print "Solution: upgrade to ..."' do
233
- expect(output_lines).to include("Solution: upgrade to #{advisory.patched_versions.join(', ')}")
233
+ expect(output_lines).to include("Solution: upgrade to #{advisory.patched_versions.map { |v| "'#{v}'" }.join(', ')}")
234
234
  end
235
235
  end
236
236
 
@@ -292,7 +292,7 @@ describe Bundler::Audit::Database do
292
292
  let(:last_commit) { Fixtures::Database::COMMIT }
293
293
  let(:last_commit_timestamp) do
294
294
  Dir.chdir(Fixtures::Database::PATH) do
295
- Time.parse(`git log --date=iso8601 --pretty="%cd" #{last_commit}`)
295
+ Time.parse(`git log -n 2 --date=iso8601 --pretty="%cd" #{last_commit}`)
296
296
  end
297
297
  end
298
298
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundler-audit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.1
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-31 00:00:00.000000000 Z
11
+ date: 2022-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -58,6 +58,7 @@ files:
58
58
  - ".document"
59
59
  - ".github/FUNDING.yml"
60
60
  - ".github/ISSUE_TEMPLATE/bug-report.md"
61
+ - ".github/ISSUE_TEMPLATE/feature-request.md"
61
62
  - ".github/workflows/ruby.yml"
62
63
  - ".gitignore"
63
64
  - ".rspec"
@@ -126,7 +127,8 @@ files:
126
127
  homepage: https://github.com/rubysec/bundler-audit#readme
127
128
  licenses:
128
129
  - GPL-3.0+
129
- metadata: {}
130
+ metadata:
131
+ rubygems_mfa_required: 'true'
130
132
  post_install_message:
131
133
  rdoc_options: []
132
134
  require_paths:
@@ -142,8 +144,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
144
  - !ruby/object:Gem::Version
143
145
  version: 1.8.0
144
146
  requirements: []
145
- rubygems_version: 3.2.22
147
+ rubygems_version: 3.2.33
146
148
  signing_key:
147
149
  specification_version: 4
148
150
  summary: Patch-level verification for Bundler
149
- test_files: []
151
+ test_files:
152
+ - spec/advisory_spec.rb
153
+ - spec/audit_spec.rb
154
+ - spec/cli/formats/json_spec.rb
155
+ - spec/cli/formats/junit_spec.rb
156
+ - spec/cli/formats/text_spec.rb
157
+ - spec/cli/formats_spec.rb
158
+ - spec/cli_spec.rb
159
+ - spec/configuration_spec.rb
160
+ - spec/database_spec.rb
161
+ - spec/integration_spec.rb
162
+ - spec/report_spec.rb
163
+ - spec/results/insecure_source_spec.rb
164
+ - spec/results/result_spec.rb
165
+ - spec/results/unpatched_gem_spec.rb
166
+ - spec/scanner_spec.rb