danger-changelog 0.4.1 → 0.4.2

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: 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