danger-changelog 0.4.1 → 0.4.2

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: 23ffe294b89bbc0ab12ea04d4ec4047537296e946185c8c429d2a0342b99f5f3
4
- data.tar.gz: 12d61d6e00b7bafda8f4007b12219f33a11b0b3e12b5442404fb2ff419b263e8
3
+ metadata.gz: 450307fc09c7eaaa1c231f41cd538c3a77ec15b466bcfb0f1e0bd0bbe5948376
4
+ data.tar.gz: 5c59cc348309c6f0b244ee9316ebe9d95b4850bb6a33d4aaf9588947866d3702
5
5
  SHA512:
6
- metadata.gz: 844b03efdd6dbda1f354d0473471ff768d0fe39774521f5e5d092b8b2cc1febcbae5bda93fef8f9da6488e3c4b13c1fb385303b10e37debd7d546a953687875d
7
- data.tar.gz: 94016cf396222b1b0c06eb78b3c940eddc7bf3b4f7fd0114ee5a7779317067f8f33ca4e58348ff629a6c99f470977878676c9c803b47c56ef83d267b3196fbd2
6
+ metadata.gz: 3b117b228586220f9ca929114e838d6811837daff83c0b5822de7283806d607ba66be2f37f393bb0d7b630914487b18b55b74ac79ce52ea2bffb94193b53b671
7
+ data.tar.gz: a4538cb355fa4039ce90715456b16b850fc9e9fc7713b73fd411e8c1f3070ed486c8ab725548921940d762c7af42a35ed43ac305b62e75983933ff4d9763b2e5
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2018-12-20 12:04:45 -0500 using RuboCop version 0.61.1.
3
+ # on 2018-12-20 16:02:35 -0500 using RuboCop version 0.61.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
@@ -1,5 +1,9 @@
1
1
  ## Changelog
2
2
 
3
+ ### 0.4.2 (2018/12/21)
4
+
5
+ * [#37](https://github.com/dblock/danger-changelog/issues/37): Allow for parenthesis and brackets around headers - [@dblock](https://github.com/dblock).
6
+
3
7
  ### 0.4.1 (2018/12/20)
4
8
 
5
9
  * [#37](https://github.com/dblock/danger-changelog/issues/37): Allow for parenthesis and brackets around versions and dates - [@dblock](https://github.com/dblock).
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
21
21
 
22
+ spec.add_development_dependency 'activesupport'
22
23
  spec.add_development_dependency 'bundler', '~> 1.3'
23
24
  spec.add_development_dependency 'guard', '~> 2.14'
24
25
  spec.add_development_dependency 'guard-rspec', '~> 4.7'
@@ -12,7 +12,7 @@ module Danger
12
12
  def valid?
13
13
  stripped_line = line.strip
14
14
 
15
- m = stripped_line.match(/^#{HASHES}\s[\w\s\:]*$/) # title
15
+ m = stripped_line.match(/^#{HASHES}\s#{OPEN_PARENS}[\w\s\:]*#{CLOSE_PARENS}$/) # title
16
16
  m ||= stripped_line.match(/^#{HASHES}\s#{OPEN_PARENS}#{SEMVER}#{CLOSE_PARENS}$/) # semver only
17
17
  m ||= stripped_line.match(/^#{HASHES}\s#{OPEN_PARENS}#{SEMVER}#{CLOSE_PARENS}[\s\-]+#{OPEN_PARENS}(#{ISO8601_DATE}|\w*)#{CLOSE_PARENS}$/) # semver and iso 8601 date or next version description
18
18
 
@@ -1,3 +1,3 @@
1
1
  module Changelog
2
- VERSION = '0.4.1'.freeze
2
+ VERSION = '0.4.2'.freeze
3
3
  end
@@ -1,163 +1,109 @@
1
1
  require File.expand_path('spec_helper', __dir__)
2
2
 
3
3
  describe Danger::Changelog::ChangelogEntryLine do
4
- context 'changelog line' do
5
- it 'validates as changelog line' do
6
- expect(described_class.validates_as_changelog_line?('* Valid without PR link - [@dblock](https://github.com/dblock).')).to be true
7
- expect(described_class.validates_as_changelog_line?('* [#1](https://github.com/dblock/danger-changelog/pull/1): Valid with PR link - [@dblock](https://github.com/dblock).')).to be true
8
- expect(described_class.validates_as_changelog_line?('Missing star - [@dblock](https://github.com/dblock).')).to be true
9
- expect(described_class.validates_as_changelog_line?('* [#1](https://github.com/dblock/danger-changelog/pull/1) - Not a colon - [@dblock](https://github.com/dblock).')).to be true
10
- expect(described_class.validates_as_changelog_line?('* [#1](https://github.com/dblock/danger-changelog/pull/1): No dash [@dblock](https://github.com/dblock).')).to be true
11
- expect(described_class.validates_as_changelog_line?('* [#1](https://github.com/dblock/danger-changelog/pull/1): No final period - [@dblock](https://github.com/dblock)')).to be true
12
- expect(described_class.validates_as_changelog_line?('* [#1](https://github.com/dblock/danger-changelog/pull/1): No name.')).to be true
13
- expect(described_class.validates_as_changelog_line?('* [#1](https://github.com/dblock/danger-changelog/pull/1): No https in github - [@dblock](http://github.com/dblock).')).to be true
14
- expect(described_class.validates_as_changelog_line?('* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra trailing slash - [@dblock](https://github.com/dblock/).')).to be true
15
- expect(described_class.validates_as_changelog_line?('# [#1](https://github.com/dblock/danger-changelog/pull/1): Hash instead of star - [@dblock](https://github.com/dblock).')).to be true
16
- end
17
-
18
- it 'doesnt validate as changelog line' do
19
- expect(described_class.validates_as_changelog_line?('Missing star, PR and author link.')).to be false
20
- expect(described_class.validates_as_changelog_line?('* ')).to be false
21
- expect(described_class.validates_as_changelog_line?('[@dblock](https://github.com/dblock).')).to be false
22
- expect(described_class.validates_as_changelog_line?(' - [@dblock](https://github.com/dblock).')).to be false
23
- expect(described_class.validates_as_changelog_line?('[#1](https://github.com/dblock/danger-changelog/pull/1).')).to be false
24
- expect(described_class.validates_as_changelog_line?('[#1](https://github.com/dblock/danger-changelog/pull/1): ')).to be false
25
- end
26
- end
4
+ it_behaves_like 'validates as changelog entry line', '* Valid without PR link - [@dblock](https://github.com/dblock).'
5
+ it_behaves_like 'validates as changelog entry line', '* Valid without PR link - [@dblock](https://github.com/dblock).'
6
+ it_behaves_like 'validates as changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): Valid with PR link - [@dblock](https://github.com/dblock).'
7
+ it_behaves_like 'validates as changelog entry line', 'Missing star - [@dblock](https://github.com/dblock).'
8
+ it_behaves_like 'validates as changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1) - Not a colon - [@dblock](https://github.com/dblock).'
9
+ it_behaves_like 'validates as changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): No dash [@dblock](https://github.com/dblock).'
10
+ it_behaves_like 'validates as changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): No final period - [@dblock](https://github.com/dblock)'
11
+ it_behaves_like 'validates as changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): No name.'
12
+ it_behaves_like 'validates as changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): No https in github - [@dblock](http://github.com/dblock).'
13
+ it_behaves_like 'validates as changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra trailing slash - [@dblock](https://github.com/dblock/).'
14
+ it_behaves_like 'validates as changelog entry line', '# [#1](https://github.com/dblock/danger-changelog/pull/1): Hash instead of star - [@dblock](https://github.com/dblock).'
15
+
16
+ it_behaves_like 'does not validate as changelog entry line', 'Missing star, PR and author link.'
17
+ it_behaves_like 'does not validate as changelog entry line', '* '
18
+ it_behaves_like 'does not validate as changelog entry line', '[@dblock](https://github.com/dblock).'
19
+ it_behaves_like 'does not validate as changelog entry line', ' - [@dblock](https://github.com/dblock).'
20
+ it_behaves_like 'does not validate as changelog entry line', '[#1](https://github.com/dblock/danger-changelog/pull/1).'
21
+ it_behaves_like 'does not validate as changelog entry line', '[#1](https://github.com/dblock/danger-changelog/pull/1): '
27
22
 
28
23
  context 'changelog entry line' do
29
24
  context 'when without PR link' do
30
- subject { Danger::Changelog::ChangelogEntryLine.new('* Valid without PR link - [@antondomashnev](https://github.com/antondomashnev).') }
31
-
32
- it 'is valid' do
33
- expect(subject.valid?).to be true
34
- end
25
+ it_behaves_like 'valid changelog entry line', '* Valid without PR link - [@antondomashnev](https://github.com/antondomashnev).'
35
26
  end
36
27
 
37
28
  context 'when with PR link' do
38
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1): Valid with PR link - [@dblock](https://github.com/dblock).') }
39
-
40
- it 'is valid' do
41
- expect(subject.valid?).to be true
42
- end
29
+ it_behaves_like 'valid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): Valid with PR link - [@dblock](https://github.com/dblock).'
43
30
  end
44
31
 
45
32
  context 'when missing star' do
46
- subject { Danger::Changelog::ChangelogEntryLine.new('Missing star - [@dblock](https://github.com/dblock).') }
47
-
48
- it 'is invalid' do
49
- expect(subject.invalid?).to be true
50
- end
33
+ it_behaves_like 'invalid changelog entry line', 'Missing star - [@dblock](https://github.com/dblock).'
51
34
  end
52
35
 
53
36
  context 'when not a colon' do
54
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1) - Not a colon - [@dblock](https://github.com/dblock).') }
55
-
56
- it 'is invalid' do
57
- expect(subject.invalid?).to be true
58
- end
37
+ it_behaves_like 'invalid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1) - Not a colon - [@dblock](https://github.com/dblock).'
59
38
  end
60
39
 
61
40
  context 'when no dash' do
62
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1): No dash [@dblock](https://github.com/dblock).') }
63
-
64
- it 'is invalid' do
65
- expect(subject.invalid?).to be true
66
- end
41
+ it_behaves_like 'invalid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): No dash [@dblock](https://github.com/dblock).'
67
42
  end
68
43
 
69
44
  context 'when no final period' do
70
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1): No final period - [@dblock](https://github.com/dblock)') }
71
-
72
- it 'is invalid' do
73
- expect(subject.invalid?).to be true
74
- end
45
+ it_behaves_like 'invalid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): No final period - [@dblock](https://github.com/dblock)'
75
46
  end
76
47
 
77
48
  context 'when no name' do
78
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1): No name.') }
79
-
80
- it 'is invalid' do
81
- expect(subject.invalid?).to be true
82
- end
49
+ it_behaves_like 'invalid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): No name.'
83
50
  end
84
51
 
85
52
  context 'when no https in GitHub' do
86
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1): No https in github - [@dblock](http://github.com/dblock).') }
87
-
88
- it 'is invalid' do
89
- expect(subject.invalid?).to be true
90
- end
53
+ it_behaves_like 'invalid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): No https in github - [@dblock](http://github.com/dblock).'
91
54
  end
92
55
 
93
56
  context 'when extra trailing slash' do
94
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra trailing slash - [@dblock](https://github.com/dblock/).') }
95
-
96
- it 'is invalid' do
97
- expect(subject.invalid?).to be true
98
- end
57
+ it_behaves_like 'invalid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra trailing slash - [@dblock](https://github.com/dblock/).'
99
58
  end
100
59
 
101
60
  context 'when extra period' do
102
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra period. - [@dblock](https://github.com/dblock).') }
103
-
104
- it 'is invalid' do
105
- expect(subject.invalid?).to be true
106
- end
61
+ it_behaves_like 'invalid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra period. - [@dblock](https://github.com/dblock).'
107
62
  end
108
63
 
109
64
  context 'when extra colon' do
110
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra colon, - [@dblock](https://github.com/dblock).') }
111
-
112
- it 'is invalid' do
113
- expect(subject.invalid?).to be true
114
- end
65
+ it_behaves_like 'invalid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra colon, - [@dblock](https://github.com/dblock).'
115
66
  end
116
67
 
117
68
  context 'when extra hash' do
118
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1): With # - [@dblock](https://github.com/dblock).') }
119
-
120
- it 'is valid' do
121
- expect(subject.valid?).to be true
122
- end
69
+ it_behaves_like 'valid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): With # - [@dblock](https://github.com/dblock).'
123
70
  end
124
71
 
125
72
  context 'when with question mark' do
126
- subject { Danger::Changelog::ChangelogEntryLine.new('* [#1](https://github.com/dblock/danger-changelog/pull/1): With ? - [@dblock](https://github.com/dblock).') }
127
-
128
- it 'is valid' do
129
- expect(subject.valid?).to be true
130
- end
73
+ it_behaves_like 'valid changelog entry line', '* [#1](https://github.com/dblock/danger-changelog/pull/1): With ? - [@dblock](https://github.com/dblock).'
131
74
  end
132
75
 
133
76
  context 'when hash instead of star' do
134
- subject { Danger::Changelog::ChangelogEntryLine.new('# [#1](https://github.com/dblock/danger-changelog/pull/1): Hash instead of star - [@dblock](https://github.com/dblock).') }
135
-
136
- it 'is invalid' do
137
- expect(subject.invalid?).to be true
138
- end
77
+ it_behaves_like 'invalid changelog entry line', '# [#1](https://github.com/dblock/danger-changelog/pull/1): Hash instead of star - [@dblock](https://github.com/dblock).'
139
78
  end
140
79
  end
141
80
 
142
81
  context 'example' do
143
82
  let(:github) do
144
- double(Danger::RequestSources::GitHub,
145
- pr_json: { 'number' => 123, 'html_url' => 'https://github.com/dblock/danger-changelog/pull/123' },
146
- pr_author: 'dblock',
147
- pr_title: pr_title)
83
+ double(
84
+ Danger::RequestSources::GitHub,
85
+ pr_json: {
86
+ 'number' => 123, 'html_url' => 'https://github.com/dblock/danger-changelog/pull/123'
87
+ },
88
+ pr_author: 'dblock',
89
+ pr_title: pr_title
90
+ )
148
91
  end
92
+
149
93
  context 'no transformation required' do
150
94
  let(:pr_title) { 'Test' }
151
95
  it 'uses title as is' do
152
96
  expect(described_class.example(github)).to eq '* [#123](https://github.com/dblock/danger-changelog/pull/123): Test - [@dblock](https://github.com/dblock).'
153
97
  end
154
98
  end
99
+
155
100
  context 'with lowercase title' do
156
101
  let(:pr_title) { 'test' }
157
102
  it 'capitalizes it' do
158
103
  expect(described_class.example(github)).to eq '* [#123](https://github.com/dblock/danger-changelog/pull/123): Test - [@dblock](https://github.com/dblock).'
159
104
  end
160
105
  end
106
+
161
107
  context 'with a trailing period' do
162
108
  let(:pr_title) { 'Test.' }
163
109
  it 'removes it' do
@@ -1,145 +1,93 @@
1
1
  require File.expand_path('spec_helper', __dir__)
2
2
 
3
3
  describe Danger::Changelog::ChangelogHeaderLine do
4
- context 'changelog line' do
5
- it 'validates as changelog line' do
6
- expect(described_class.validates_as_changelog_line?('# 1.0.1')).to be true
7
- expect(described_class.validates_as_changelog_line?('## Version 1.0.1')).to be true
8
- expect(described_class.validates_as_changelog_line?('### Lollypop')).to be true
9
- expect(described_class.validates_as_changelog_line?('#### Four hashes is too much')).to be true
10
- expect(described_class.validates_as_changelog_line?('# 1.0.1 (1/2/3)')).to be true
11
- end
12
-
13
- it 'doesnt validate as changelog line' do
14
- expect(described_class.validates_as_changelog_line?('* Star is invalid.')).to be false
15
- expect(described_class.validates_as_changelog_line?('It requires a hash symbol')).to be false
16
- expect(described_class.validates_as_changelog_line?('1.1.1')).to be false
17
- expect(described_class.validates_as_changelog_line?('Version 2.0.1')).to be false
18
- expect(described_class.validates_as_changelog_line?('#')).to be false
19
- expect(described_class.validates_as_changelog_line?('## ')).to be false
20
- expect(described_class.validates_as_changelog_line?('##### I can not validate five')).to be false
21
- end
22
- end
23
-
24
- context 'changelog header line' do
25
- context 'when one hash symbol' do
26
- subject { Danger::Changelog::ChangelogHeaderLine.new('# 1.0.1') }
27
-
28
- it 'is valid' do
29
- expect(subject.valid?).to be true
30
- end
31
- end
32
-
33
- context 'with a Next date' do
34
- subject { Danger::Changelog::ChangelogHeaderLine.new('# 1.0.1 (Next)') }
35
-
36
- it 'is valid' do
37
- expect(subject.valid?).to be true
38
- end
39
- end
40
-
41
- context 'with a date in ISO 8601 format' do
42
- subject { Danger::Changelog::ChangelogHeaderLine.new('# 1.0.1 (2018/1/2)') }
43
-
44
- it 'is valid' do
45
- expect(subject.valid?).to be true
46
- end
47
- end
48
-
49
- context 'with a date not in ISO 8601 format' do
50
- subject { Danger::Changelog::ChangelogHeaderLine.new('# 1.0.1 (1/2/2018)') }
51
-
52
- it 'is valid' do
53
- expect(subject.valid?).to be false
54
- end
55
- end
56
-
57
- context 'when two hash symbols' do
58
- subject { Danger::Changelog::ChangelogHeaderLine.new('## 1.0.1') }
59
-
60
- it 'is valid' do
61
- expect(subject.valid?).to be true
62
- end
63
- end
64
-
65
- context 'when three hash symbols' do
66
- subject { Danger::Changelog::ChangelogHeaderLine.new('### Lollypop') }
67
-
68
- it 'is valid' do
69
- expect(subject.valid?).to be true
70
- end
71
- end
72
-
73
- context 'when four hash symbols' do
74
- subject { Danger::Changelog::ChangelogHeaderLine.new('#### Four hashes is too much') }
75
-
76
- it 'is valid' do
77
- expect(subject.valid?).to be true
78
- end
79
- end
80
-
81
- context 'when no hash symbol' do
82
- subject { Danger::Changelog::ChangelogHeaderLine.new('* Star is invalid.') }
83
-
84
- it 'is invalid' do
85
- expect(subject.invalid?).to be true
86
- end
87
- end
88
-
89
- context 'when star instead of hash symbol' do
90
- subject { Danger::Changelog::ChangelogHeaderLine.new('* Star is invalid.') }
91
-
92
- it 'is invalid' do
93
- expect(subject.invalid?).to be true
94
- end
95
- end
96
-
97
- context 'when no hash symbol' do
98
- subject { Danger::Changelog::ChangelogHeaderLine.new('It requires hash symbol.') }
99
-
100
- it 'is invalid' do
101
- expect(subject.invalid?).to be true
102
- end
103
- end
104
-
105
- context 'when hash symbol without space' do
106
- subject { Danger::Changelog::ChangelogHeaderLine.new('###Lollypop') }
107
-
108
- it 'is invalid' do
109
- expect(subject.invalid?).to be true
110
- end
111
- end
112
-
113
- context 'when hash symbol without header title' do
114
- subject { Danger::Changelog::ChangelogHeaderLine.new('### ') }
115
-
116
- it 'is invalid' do
117
- expect(subject.invalid?).to be true
118
- end
119
- end
4
+ it_behaves_like 'validates as changelog header line', '# 1.0.1'
5
+ it_behaves_like 'validates as changelog header line', '## Version 1.0.1'
6
+ it_behaves_like 'validates as changelog header line', '### three hashes'
7
+ it_behaves_like 'validates as changelog header line', '#### Four hashes is too much'
8
+ it_behaves_like 'does not validate as changelog header line', 'something else'
9
+
10
+ it_behaves_like 'valid changelog header line', '# 1.0.1'
11
+ it_behaves_like 'valid changelog header line', '### Lollypop'
12
+
13
+ it_behaves_like 'invalid changelog header line', '# 1.0.1 (1/2/3)'
14
+ it_behaves_like 'invalid changelog header line', '* Star is invalid.'
15
+ it_behaves_like 'invalid changelog header line', '* Star is invalid.'
16
+ it_behaves_like 'invalid changelog header line', 'It requires a hash symbol'
17
+ it_behaves_like 'invalid changelog header line', '1.1.1'
18
+ it_behaves_like 'invalid changelog header line', 'Version 2.0.1'
19
+ it_behaves_like 'invalid changelog header line', '#'
20
+ it_behaves_like 'invalid changelog header line', '## '
21
+ it_behaves_like 'invalid changelog header line', '##### I can not validate five'
22
+
23
+ it_behaves_like 'valid changelog header line', '# 1.0.1 (Next)'
24
+
25
+ context 'ISO 8601 format date' do
26
+ it_behaves_like 'valid changelog header line', '# 1.0.1 (2018/1/2)'
27
+ end
28
+
29
+ context 'date not in ISO 8601 format' do
30
+ it_behaves_like 'invalid changelog header line', '# 1.0.1 (1/2/2018)'
31
+ end
32
+
33
+ context 'two hash symbols' do
34
+ it_behaves_like 'valid changelog header line', '## 1.0.1'
35
+ end
36
+
37
+ context 'three hash symbols' do
38
+ it_behaves_like 'valid changelog header line', '### Lollypop'
39
+ end
40
+
41
+ context 'four hash symbols' do
42
+ it_behaves_like 'valid changelog header line', '#### Four hashes is too much'
43
+ end
44
+
45
+ context 'when no hash symbol' do
46
+ it_behaves_like 'invalid changelog header line', '* Star is invalid.'
47
+ end
48
+
49
+ context 'when star instead of hash symbol' do
50
+ it_behaves_like 'invalid changelog header line', '* Star is invalid.'
51
+ end
120
52
 
121
- context 'when five hash symbols' do
122
- subject { Danger::Changelog::ChangelogHeaderLine.new('##### Tooooo much') }
53
+ context 'when no hash symbol' do
54
+ it_behaves_like 'invalid changelog header line', 'It requires hash symbol.'
55
+ end
56
+
57
+ context 'when hash symbol without space' do
58
+ it_behaves_like 'invalid changelog header line', '###Lollypop'
59
+ end
123
60
 
124
- it 'is invalid' do
125
- expect(subject.invalid?).to be true
126
- end
127
- end
128
-
129
- context 'with a string as semver' do
130
- subject { Danger::Changelog::ChangelogHeaderLine.new('# Invalid (Next)') }
61
+ context 'when hash symbol without header title' do
62
+ it_behaves_like 'invalid changelog header line', '### '
63
+ end
131
64
 
132
- it 'is invalid' do
133
- expect(subject.valid?).to be false
134
- end
135
- end
136
-
137
- context 'with an invalid semver' do
138
- subject { Danger::Changelog::ChangelogHeaderLine.new('# 0.1.') }
65
+ context 'when five hash symbols' do
66
+ it_behaves_like 'invalid changelog header line', '##### Tooooo much'
67
+ end
68
+
69
+ context 'with a string as semver' do
70
+ it_behaves_like 'invalid changelog header line', '# Invalid (Next)'
71
+ end
72
+
73
+ context 'with an invalid semver' do
74
+ it_behaves_like 'invalid changelog header line', '# 0.1.'
75
+ end
76
+
77
+ context 'with a colon' do
78
+ it_behaves_like 'valid changelog header line', '### Changed:'
79
+ end
80
+
81
+ context 'in brackets' do
82
+ it_behaves_like 'valid changelog header line', '### [Unreleased]'
83
+ end
139
84
 
140
- it 'is invalid' do
141
- expect(subject.valid?).to be false
142
- end
143
- end
85
+ context 'in parenthesis' do
86
+ it_behaves_like 'valid changelog header line', '### (Unreleased)'
87
+ it_behaves_like 'invalid changelog header line', '### (Unreleased'
88
+ it_behaves_like 'invalid changelog header line', '### Unreleased)'
89
+ it_behaves_like 'invalid changelog header line', '### [Unreleased'
90
+ it_behaves_like 'invalid changelog header line', '### (Unreleased]'
91
+ it_behaves_like 'invalid changelog header line', '### Unreleased]'
144
92
  end
145
93
  end
@@ -8,36 +8,14 @@ describe Danger::Changelog::ChangelogPlaceholderLine do
8
8
  end
9
9
  end
10
10
 
11
- describe 'validates_as_changelog_line?' do
12
- context 'when line is equal to placeholder_line from config' do
13
- it 'validates as changelog line' do
14
- expect(described_class.validates_as_changelog_line?("* Nothing yet here.\n")).to be true
15
- end
16
- end
17
-
18
- context 'when line is not equal to placeholder_line from config' do
19
- it 'validates as changelog line' do
20
- expect(described_class.validates_as_changelog_line?("* Put your contribution here.\n")).to be false
21
- end
22
- end
11
+ context 'when line is equal to placeholder_line from config' do
12
+ it_behaves_like 'validates as changelog placeholder line', "* Nothing yet here.\n"
13
+ it_behaves_like 'valid changelog placeholder line', "* Nothing yet here.\n"
23
14
  end
24
15
 
25
- describe 'valid?' do
26
- context 'when is equal to config placeholder line' do
27
- subject { Danger::Changelog::ChangelogPlaceholderLine.new("* Nothing yet here.\n") }
28
-
29
- it 'is valid' do
30
- expect(subject.valid?).to be true
31
- end
32
- end
33
-
34
- context 'when is not equal to config placeholder line' do
35
- subject { Danger::Changelog::ChangelogPlaceholderLine.new("* Your change here.\n") }
36
-
37
- it 'is not valid' do
38
- expect(subject.valid?).to be false
39
- end
40
- end
16
+ context 'when line is not equal to placeholder_line from config' do
17
+ it_behaves_like 'does not validate as changelog placeholder line', "* Put your contribution here.\n"
18
+ it_behaves_like 'invalid changelog placeholder line', "* Put your contribution here.\n"
41
19
  end
42
20
  end
43
21
 
@@ -48,22 +26,9 @@ describe Danger::Changelog::ChangelogPlaceholderLine do
48
26
  end
49
27
  end
50
28
 
51
- describe 'validates_as_changelog_line?' do
52
- context 'when line is not blank' do
53
- it 'validates as changelog line' do
54
- expect(described_class.validates_as_changelog_line?("* Whatever.\n")).to be false
55
- end
56
- end
57
- end
58
-
59
- describe 'valid?' do
60
- context 'when is not blank' do
61
- subject { Danger::Changelog::ChangelogPlaceholderLine.new("* Your change here.\n") }
62
-
63
- it 'is not valid' do
64
- expect(subject.valid?).to be false
65
- end
66
- end
29
+ context 'when line is not blank' do
30
+ it_behaves_like 'does not validate as changelog placeholder line', "* Whatever.\n"
31
+ it_behaves_like 'invalid changelog placeholder line', "* Whatever.\n"
67
32
  end
68
33
  end
69
34
  end
@@ -1,8 +1,3 @@
1
- ## Changelog
2
-
3
- ### Changed:
4
- ### Fixed:
5
-
6
1
  ### 0.0.0
7
2
  ### 0.0.1
8
3
  ### 1.2.3 (2018/1/1)
@@ -13,7 +8,6 @@
13
8
  ### 0.0.4
14
9
  ### 10.2.3-DEV-SNAPSHOT
15
10
  ### 99999999999999999999999.999999999999999999.99999999999999999
16
-
17
11
  ### 0.1.1 [2018/1/1]
18
12
  ### [0.1.1] [2018/1/1]
19
13
  ## [0.2.2] - 2017-06-20
@@ -39,3 +39,9 @@ def testing_dangerfile
39
39
  env = Danger::EnvironmentManager.new(testing_env)
40
40
  Danger::Dangerfile.new(env, testing_ui)
41
41
  end
42
+
43
+ require 'active_support'
44
+
45
+ Dir[File.join(File.dirname(__FILE__), 'support', '**/*.rb')].each do |file|
46
+ require file
47
+ end
@@ -0,0 +1,41 @@
1
+ [
2
+ Danger::Changelog::ChangelogHeaderLine,
3
+ Danger::Changelog::ChangelogPlaceholderLine,
4
+ Danger::Changelog::ChangelogEntryLine
5
+ ].each do |klass|
6
+ desc = ActiveSupport::Inflector.titleize(klass.name.split(':').last).downcase
7
+
8
+ RSpec.shared_examples "validates as #{desc}" do |line|
9
+ describe line do
10
+ it 'correctly' do
11
+ expect(klass.validates_as_changelog_line?(line)).to be true
12
+ end
13
+ end
14
+ end
15
+
16
+ RSpec.shared_examples "does not validate as #{desc}" do |line|
17
+ describe line do
18
+ it 'correctly' do
19
+ expect(klass.validates_as_changelog_line?(line)).to be false
20
+ end
21
+ end
22
+ end
23
+
24
+ RSpec.shared_examples "valid #{desc}" do |line|
25
+ describe line do
26
+ subject { klass.new(line) }
27
+ it 'is valid' do
28
+ expect(subject.valid?).to be true
29
+ end
30
+ end
31
+ end
32
+
33
+ RSpec.shared_examples "invalid #{desc}" do |line|
34
+ describe line do
35
+ subject { klass.new(line) }
36
+ it 'is valid' do
37
+ expect(subject.valid?).to be false
38
+ end
39
+ end
40
+ end
41
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-changelog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - dblock
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-20 00:00:00.000000000 Z
11
+ date: 2018-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger-plugin-api
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -200,6 +214,7 @@ files:
200
214
  - spec/fixtures/changelogs/missing_your_contribution_here.md
201
215
  - spec/fixtures/changelogs/semver.md
202
216
  - spec/spec_helper.rb
217
+ - spec/support/shared/changelog.rb
203
218
  homepage: https://github.com/dblock/danger-changelog
204
219
  licenses:
205
220
  - MIT
@@ -240,3 +255,4 @@ test_files:
240
255
  - spec/fixtures/changelogs/missing_your_contribution_here.md
241
256
  - spec/fixtures/changelogs/semver.md
242
257
  - spec/spec_helper.rb
258
+ - spec/support/shared/changelog.rb