knife-changelog 1.0.9 → 1.0.10

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: 252d5d072881aadc96d75fa2e59756ed4c4cc8c8a7b7cf02113ae6bd48f19aca
4
- data.tar.gz: 0d53698a58d1a881e0062b5dba606d9be724913718e031f9b1d79e18ef1d018f
3
+ metadata.gz: 6427a7cfa99765ab6a02df18e9695630b841647d09844d8ac56b72a6bb1dfb6a
4
+ data.tar.gz: f44ddf5ff9e5f5be024ee151d76e547c08dd4d7245a837c63142d493b1a6ce80
5
5
  SHA512:
6
- metadata.gz: 8e3fe30b5b8cd44dca34f2312fad8f9aba9b1dc12569690391771a8d80b755630c089a15079914ed6c74a9b991f42037ec637b813cb5160fdd3741dda02d14fa
7
- data.tar.gz: 076e3d39b26f3f1301cd398c1c9a3dc464f89426dbbf14adfe262455cba3b943f8983bc8e7727b863e4758db19e86e875ed03333bb7b9ab6488623992a13d9ce
6
+ metadata.gz: c285457809139a674fe3337aaba0d462adeab532209bdc4a6fc73f88d4d11775c83e873869ea99ac132408cf9401c1d535e829026a0f600e37625bce1ee95209
7
+ data.tar.gz: d009ca6842b5e0974978fe6b0e4759cebb8bae8351343dd72f3e88363591f8ef7dd5ec98a0016fc88df276f32173b36b818f8cfbc6df88cbd77aa8afd4a54012
@@ -1,5 +1,5 @@
1
1
  module Knife
2
2
  module Changelog
3
- VERSION = '1.0.9'.freeze
3
+ VERSION = '1.0.10'.freeze
4
4
  end
5
5
  end
@@ -145,7 +145,22 @@ class PolicyChangelog
145
145
  # @param repo [Git::Base] Git repository object
146
146
  # @return [String] Git tag versioning type
147
147
  def tag_format(repo)
148
- repo.tags.last.name[/^v/] ? 'v' : ''
148
+ sort_by_version(repo.tags).last.name[/^v/] ? 'v' : ''
149
+ end
150
+
151
+ # Sort tags by version and filter out invalid version tags
152
+ #
153
+ # @param tags [Array<Git::Object::Tag>] git tags
154
+ # @return [Array] git tags sorted by version
155
+ def sort_by_version(tags)
156
+ tags.sort_by do |t|
157
+ begin
158
+ Gem::Version.new(t.name.gsub(/^v/, ''))
159
+ rescue ArgumentError => e
160
+ # Skip tag if version is not valid (i.e. a String)
161
+ Gem::Version.new(nil) if e.to_s.include?('Malformed version number string')
162
+ end
163
+ end
149
164
  end
150
165
 
151
166
  # Formats commit changelog to be more readable
@@ -40,6 +40,18 @@ RSpec.describe PolicyChangelog do
40
40
 
41
41
  let(:url) { 'https://supermarket.chef.io/api/v1/cookbooks/users' }
42
42
 
43
+ let(:tags) do
44
+ [
45
+ double(name: '1.0.0'),
46
+ double(name: '0.9.1'),
47
+ double(name: 'v1.0.5'),
48
+ double(name: 'v1.1.1'),
49
+ double(name: 'invalid'),
50
+ double(name: '5.2.1'),
51
+ double(name: 'v0.1.1')
52
+ ]
53
+ end
54
+
43
55
  before(:each) do
44
56
  stub_request(:get, 'https://supermarket.chef.io/api/v1/cookbooks/users').to_return(
45
57
  status: 200,
@@ -209,16 +221,28 @@ RSpec.describe PolicyChangelog do
209
221
 
210
222
  it 'detects type for regular tag' do
211
223
  allow(repo).to receive_message_chain(:tags, :last, :name).and_return('1.0.0')
224
+ allow(changelog).to receive(:sort_by_version).and_return(repo.tags)
212
225
  expect(changelog.tag_format(repo)).to eq('')
213
226
  end
214
227
 
215
228
  it 'detects type for v-tag' do
216
229
  allow(repo).to receive_message_chain(:tags, :last, :name).and_return('v1.0.0')
230
+ allow(changelog).to receive(:sort_by_version).and_return(repo.tags)
217
231
  expect(changelog.tag_format(repo)).to eq('v')
218
232
  end
219
233
  end
220
234
  end
221
235
 
236
+ describe '#sort_by_version' do
237
+ context 'when sorting' do
238
+ it 'sorts' do
239
+ expect(changelog.sort_by_version(tags).map(&:name)).to eq(
240
+ %w[invalid v0.1.1 0.9.1 1.0.0 v1.0.5 v1.1.1 5.2.1]
241
+ )
242
+ end
243
+ end
244
+ end
245
+
222
246
  describe '#reject_version_filter' do
223
247
  context 'when current equal to target' do
224
248
  it 'returns true' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-changelog
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregoire Seux
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-02 00:00:00.000000000 Z
11
+ date: 2018-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -243,7 +243,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
243
  version: '0'
244
244
  requirements: []
245
245
  rubyforge_project:
246
- rubygems_version: 2.7.4
246
+ rubygems_version: 2.7.5
247
247
  signing_key:
248
248
  specification_version: 4
249
249
  summary: Facilitate access to cookbooks changelog