danger-changelog 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +2 -7
- data/CHANGELOG.md +7 -0
- data/Dangerfile +1 -1
- data/README.md +37 -18
- data/danger-changelog.gemspec +1 -1
- data/lib/changelog/config.rb +30 -1
- data/lib/changelog/gem_version.rb +1 -1
- data/lib/changelog/parsers.rb +15 -7
- data/lib/changelog/plugin.rb +43 -20
- data/lib/danger_plugin.rb +1 -1
- data/spec/changelog_placeholder_line_spec.rb +2 -6
- data/spec/changelog_spec.rb +74 -27
- data/spec/config_spec.rb +67 -27
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dda179f0ffebc733fa943723d9b16c6db3720beab1e5c43ee57746cb6f20577
|
4
|
+
data.tar.gz: b1797cb0bd4d0eef3aead4e9a0409c057205d995efc3d56f200f106055900fe9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 897e573a11db0076fd9c7bb745b5c8f39d47d94f4d2b69b298a1565cade582a9aaadf17d0667b48a1d9569bc0566558000e9baaec7bf9a6054d4818ed5475f1d
|
7
|
+
data.tar.gz: c92f5ae706ada26bb3006adffae2df8aef0b79de05d1f6464257918004511a7bdc926a2430c6386d32961df4011c3e48b29162dea763a98865087e6df8fd4375
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2019-07-28 16:00:45 -0400 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
|
@@ -14,11 +14,6 @@ Layout/IndentHeredoc:
|
|
14
14
|
Exclude:
|
15
15
|
- 'lib/changelog/plugin.rb'
|
16
16
|
|
17
|
-
# Offense count: 1
|
18
|
-
Lint/DuplicateMethods:
|
19
|
-
Exclude:
|
20
|
-
- 'lib/changelog/config.rb'
|
21
|
-
|
22
17
|
# Offense count: 1
|
23
18
|
# Configuration parameters: ContextCreatingMethods, MethodCreatingMethods.
|
24
19
|
Lint/UselessAccessModifier:
|
@@ -36,7 +31,7 @@ Naming/PredicateName:
|
|
36
31
|
- 'spec/**/*'
|
37
32
|
- 'lib/changelog/plugin.rb'
|
38
33
|
|
39
|
-
# Offense count:
|
34
|
+
# Offense count: 1
|
40
35
|
Style/DoubleNegation:
|
41
36
|
Exclude:
|
42
37
|
- 'lib/changelog/changelog_file.rb'
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
## Changelog
|
2
2
|
|
3
|
+
### 0.6.0 (2019/07/28)
|
4
|
+
|
5
|
+
* [#47](https://github.com/dblock/danger-changelog/pull/47): Configure `Config#placeholder_line` at plugin level - [@dblock](https://github.com/dblock).
|
6
|
+
* [#47](https://github.com/dblock/danger-changelog/pull/47): Deprecate `Danger::Changelog.configure` - [@dblock](https://github.com/dblock).
|
7
|
+
* [#48](https://github.com/dblock/danger-changelog/pull/48): Deprecate `check` in favor of `check!` and configure `format` separately - [@dblock](https://github.com/dblock).
|
8
|
+
* [#49](https://github.com/dblock/danger-changelog/pull/48): Added `Config#ignore_files` with filename and regex support - [@dblock](https://github.com/dblock).
|
9
|
+
|
3
10
|
### 0.5.0 (2019/05/31)
|
4
11
|
|
5
12
|
* [#41](https://github.com/dblock/danger-changelog/pull/41): Document what's a correctly-formatted CHANGELOG - [@ivoanjo](https://github.com/ivoanjo).
|
data/Dangerfile
CHANGED
data/README.md
CHANGED
@@ -8,50 +8,69 @@ It can make sure, for example, that changes are attributed properly, have a vali
|
|
8
8
|
|
9
9
|
## What's a correctly formatted CHANGELOG file?
|
10
10
|
|
11
|
-
By design, `danger-changelog` is quite strict with what it allows as a valid changelog file.
|
12
|
-
|
13
|
-
* By default, it uses the [Intridea style](doc/intridea.md)
|
14
|
-
* Optionally, you can enable the [Keep a Changelog style](doc/keep_a_changelog.md)
|
11
|
+
By design, `danger-changelog` is quite strict with what it allows as a valid changelog file, using the [Intridea style](doc/intridea.md), [used by this library itself](CHANGELOG.md). It also supports the [Keep a Changelog](doc/keep_a_changelog.md) format.
|
15
12
|
|
16
13
|
## Installation
|
17
14
|
|
18
15
|
Add `danger-changelog` to your Gemfile.
|
19
16
|
|
20
17
|
```
|
21
|
-
gem 'danger-changelog', '~> 0.
|
18
|
+
gem 'danger-changelog', '~> 0.6.0'
|
22
19
|
```
|
23
20
|
|
24
|
-
|
21
|
+
Call `changelog.check!` from your `Dangerfile`. Make a pull request and see this plugin in action.
|
25
22
|
|
26
23
|
## Usage
|
27
24
|
|
28
25
|
Methods and attributes from this plugin are available in your `Dangerfile` under the `changelog` namespace.
|
29
26
|
|
30
|
-
|
27
|
+
## Configuration
|
28
|
+
|
29
|
+
The following options and checks are supported.
|
30
|
+
|
31
|
+
### changelog.filename
|
32
|
+
|
33
|
+
Set the CHANGELOG file name, defaults to `CHANGELOG.md`.
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
changelog.filename = 'CHANGES.md'
|
37
|
+
```
|
38
|
+
|
39
|
+
### changelog.format
|
31
40
|
|
32
|
-
|
41
|
+
Set the format of the CHANGELOG file.
|
33
42
|
|
34
43
|
```ruby
|
35
|
-
|
36
|
-
config.placeholder_line = "Nothing yet."
|
37
|
-
end
|
44
|
+
changelog.format = :keep_a_changelog
|
38
45
|
```
|
39
46
|
|
40
|
-
|
47
|
+
Available formats are [Intridea](doc/intridea.md) (default) and [Keep a Changelog](doc/keep_a_changelog.md).
|
41
48
|
|
42
|
-
|
49
|
+
### changelog.placeholder_line
|
43
50
|
|
44
51
|
Customize the `* Your contribution here.` line. Set the value to `nil` to stop checking for one.
|
45
52
|
|
46
|
-
|
53
|
+
```ruby
|
54
|
+
changelog.placeholder_line = "* Your change here.\n"
|
55
|
+
```
|
47
56
|
|
48
|
-
|
57
|
+
### changelog.ignore_files
|
58
|
+
|
59
|
+
Ignore additions and changes with a certain name or expression, default is to ignore `README.md` changes.
|
60
|
+
|
61
|
+
For example, ignore `UPGRADING.md` and all `.txt` files.
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
changelog.ignore_files = ['README.md', 'UPGRADING.md', /\.txt$/]
|
65
|
+
```
|
66
|
+
|
67
|
+
## Checks
|
49
68
|
|
50
|
-
|
69
|
+
Invoke check methods.
|
51
70
|
|
52
|
-
|
71
|
+
### changelog.check!
|
53
72
|
|
54
|
-
|
73
|
+
Run all checks with defaults, including `have_you_updated_changelog?` and `is_changelog_format_correct?`.
|
55
74
|
|
56
75
|
#### changelog.have_you_updated_changelog?
|
57
76
|
|
data/danger-changelog.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
|
21
21
|
|
22
22
|
spec.add_development_dependency 'activesupport'
|
23
|
-
spec.add_development_dependency 'bundler'
|
23
|
+
spec.add_development_dependency 'bundler'
|
24
24
|
spec.add_development_dependency 'guard', '~> 2.14'
|
25
25
|
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
26
26
|
spec.add_development_dependency 'listen', '3.0.7'
|
data/lib/changelog/config.rb
CHANGED
@@ -3,7 +3,18 @@ module Danger
|
|
3
3
|
module Config
|
4
4
|
extend self
|
5
5
|
|
6
|
-
|
6
|
+
ATTRIBUTES = %i[
|
7
|
+
placeholder_line
|
8
|
+
filename
|
9
|
+
format
|
10
|
+
ignore_files
|
11
|
+
].freeze
|
12
|
+
|
13
|
+
ACCESSORS = ATTRIBUTES.map { |name| "#{name}=".to_sym }
|
14
|
+
|
15
|
+
DELEGATORS = ATTRIBUTES + ACCESSORS
|
16
|
+
|
17
|
+
attr_accessor(*Config::ATTRIBUTES)
|
7
18
|
|
8
19
|
def placeholder_line=(value)
|
9
20
|
if value
|
@@ -16,12 +27,29 @@ module Danger
|
|
16
27
|
end
|
17
28
|
end
|
18
29
|
|
30
|
+
def format=(value)
|
31
|
+
raise ArgumentError, "Invalid format: #{value}" unless Danger::Changelog::Parsers.valid?(value)
|
32
|
+
|
33
|
+
@format = value
|
34
|
+
end
|
35
|
+
|
19
36
|
def placeholder_line?
|
20
37
|
!@placeholder_line.nil?
|
21
38
|
end
|
22
39
|
|
40
|
+
def ignore_files=(value)
|
41
|
+
@ignore_files = Array(value)
|
42
|
+
end
|
43
|
+
|
44
|
+
def parser
|
45
|
+
Danger::Changelog::Parsers.lookup(format)
|
46
|
+
end
|
47
|
+
|
23
48
|
def reset
|
24
49
|
self.placeholder_line = "* Your contribution here.\n"
|
50
|
+
self.filename = 'CHANGELOG.md'
|
51
|
+
self.format = Danger::Changelog::Parsers.default_format
|
52
|
+
self.ignore_files = ['README.md']
|
25
53
|
end
|
26
54
|
|
27
55
|
reset
|
@@ -29,6 +57,7 @@ module Danger
|
|
29
57
|
|
30
58
|
class << self
|
31
59
|
def configure
|
60
|
+
warn '[DEPRECATION] `configure` is deprecated. Please directly configure the Danger plugin via `changelog.xyz=` instead.'
|
32
61
|
block_given? ? yield(Config) : Config
|
33
62
|
end
|
34
63
|
|
data/lib/changelog/parsers.rb
CHANGED
@@ -5,14 +5,22 @@ require 'changelog/parsers/keep_a_changelog'
|
|
5
5
|
module Danger
|
6
6
|
module Changelog
|
7
7
|
module Parsers
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
FORMATS = { intridea: IntrideaFormat, keep_a_changelog: KeepAChangelog }.freeze
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def default_format
|
12
|
+
:intridea
|
13
|
+
end
|
14
|
+
|
15
|
+
def valid?(format)
|
16
|
+
FORMATS.keys.map(&:to_s).include?(format.to_s)
|
17
|
+
end
|
11
18
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
19
|
+
def lookup(format)
|
20
|
+
FORMATS
|
21
|
+
.fetch(format, IntrideaFormat)
|
22
|
+
.new
|
23
|
+
end
|
16
24
|
end
|
17
25
|
end
|
18
26
|
end
|
data/lib/changelog/plugin.rb
CHANGED
@@ -5,31 +5,35 @@ module Danger
|
|
5
5
|
#
|
6
6
|
# @example Run all checks on the default CHANGELOG.md.
|
7
7
|
#
|
8
|
-
# changelog.check
|
8
|
+
# changelog.check!
|
9
9
|
#
|
10
10
|
# @example Customize the CHANGELOG file name and remind the requester to update it when necessary.
|
11
11
|
#
|
12
12
|
# changelog.filename = 'CHANGES.md'
|
13
|
+
# changelog.placeholder_line = "* Your contribution here.\n"
|
13
14
|
# changelog.have_you_updated_changelog?
|
14
15
|
#
|
15
16
|
# @see dblock/danger-changelog
|
16
17
|
# @tags changelog
|
17
18
|
|
18
19
|
class DangerChangelog < Plugin
|
19
|
-
|
20
|
-
# @return [String]
|
21
|
-
attr_accessor :filename
|
20
|
+
extend Forwardable
|
22
21
|
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
def_delegators Danger::Changelog.config, *Danger::Changelog::Config::DELEGATORS
|
23
|
+
|
24
|
+
# Run all checks.
|
25
|
+
# @return [Boolean] true when the check passes
|
26
|
+
def check!
|
27
|
+
have_you_updated_changelog? && is_changelog_format_correct?
|
26
28
|
end
|
27
29
|
|
28
30
|
# Run all checks.
|
29
31
|
# @param format [Symbol] the format to check against
|
30
32
|
# @return [Boolean] true when the check passes
|
31
|
-
def check(
|
32
|
-
|
33
|
+
def check(parser = Danger::Changelog::Config.format)
|
34
|
+
warn '[DEPRECATION] `check` is deprecated. Set format with `.format` and use `check!` instead.'
|
35
|
+
config.format = parser
|
36
|
+
check!
|
33
37
|
end
|
34
38
|
|
35
39
|
# Has the CHANGELOG file been modified?
|
@@ -38,28 +42,34 @@ module Danger
|
|
38
42
|
git.modified_files.include?(filename) || git.added_files.include?(filename)
|
39
43
|
end
|
40
44
|
|
45
|
+
# Are any files CHANGELOG cares about modified?
|
46
|
+
# @return [boolean]
|
47
|
+
def file_changes?
|
48
|
+
all_files = git.modified_files + git.added_files
|
49
|
+
Danger::Changelog::Config.ignore_files.each do |f|
|
50
|
+
all_files.reject! { |modified_file| f.is_a?(Regexp) ? f.match?(modified_file) : f == modified_file }
|
51
|
+
break if all_files.empty?
|
52
|
+
end
|
53
|
+
all_files.any?
|
54
|
+
end
|
55
|
+
|
41
56
|
# Have you updated CHANGELOG.md?
|
42
57
|
# @return [boolean]
|
43
58
|
def have_you_updated_changelog?
|
44
59
|
if changelog_changes?
|
45
60
|
true
|
46
|
-
|
47
|
-
|
48
|
-
Here's an example of a #{filename} entry:
|
49
|
-
|
50
|
-
```markdown
|
51
|
-
#{Danger::Changelog::ChangelogEntryLine.example(github)}
|
52
|
-
```
|
53
|
-
MARKDOWN
|
54
|
-
warn "Unless you're refactoring existing code or improving documentation, please update #{filename}.", sticky: false
|
61
|
+
elsif file_changes?
|
62
|
+
warn_update_changelog
|
55
63
|
false
|
64
|
+
else
|
65
|
+
true
|
56
66
|
end
|
57
67
|
end
|
58
68
|
|
59
69
|
# Is the CHANGELOG.md format correct?
|
60
70
|
# @return [boolean]
|
61
|
-
def is_changelog_format_correct?
|
62
|
-
parser = Danger::Changelog::
|
71
|
+
def is_changelog_format_correct?
|
72
|
+
parser = Danger::Changelog::Config.parser
|
63
73
|
changelog_file = Danger::Changelog::ChangelogFile.new(filename, parser: parser)
|
64
74
|
|
65
75
|
if changelog_file.exists?
|
@@ -82,5 +92,18 @@ Here's an example of a #{filename} entry:
|
|
82
92
|
false
|
83
93
|
end
|
84
94
|
end
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
def warn_update_changelog
|
99
|
+
markdown <<-MARKDOWN
|
100
|
+
Here's an example of a #{filename} entry:
|
101
|
+
|
102
|
+
```markdown
|
103
|
+
#{Danger::Changelog::ChangelogEntryLine.example(github)}
|
104
|
+
```
|
105
|
+
MARKDOWN
|
106
|
+
warn "Unless you're refactoring existing code or improving documentation, please update #{filename}.", sticky: false
|
107
|
+
end
|
85
108
|
end
|
86
109
|
end
|
data/lib/danger_plugin.rb
CHANGED
@@ -4,6 +4,6 @@ require 'changelog/changelog_line/changelog_line_parser'
|
|
4
4
|
require 'changelog/changelog_line/changelog_placeholder_line'
|
5
5
|
require 'changelog/changelog_line/changelog_line'
|
6
6
|
require 'changelog/changelog_file'
|
7
|
-
require 'changelog/config'
|
8
7
|
require 'changelog/parsers'
|
8
|
+
require 'changelog/config'
|
9
9
|
require 'changelog/plugin'
|
@@ -3,9 +3,7 @@ require File.expand_path('spec_helper', __dir__)
|
|
3
3
|
describe Danger::Changelog::ChangelogPlaceholderLine do
|
4
4
|
context 'with a custom placeholder line' do
|
5
5
|
before do
|
6
|
-
Danger::Changelog.
|
7
|
-
config.placeholder_line = "* Nothing yet here.\n"
|
8
|
-
end
|
6
|
+
Danger::Changelog.config.placeholder_line = "* Nothing yet here.\n"
|
9
7
|
end
|
10
8
|
|
11
9
|
context 'when line is equal to placeholder_line from config' do
|
@@ -21,9 +19,7 @@ describe Danger::Changelog::ChangelogPlaceholderLine do
|
|
21
19
|
|
22
20
|
context 'with a blank placeholder line' do
|
23
21
|
before do
|
24
|
-
Danger::Changelog.
|
25
|
-
config.placeholder_line = nil
|
26
|
-
end
|
22
|
+
Danger::Changelog.config.placeholder_line = nil
|
27
23
|
end
|
28
24
|
|
29
25
|
context 'when line is not blank' do
|
data/spec/changelog_spec.rb
CHANGED
@@ -14,6 +14,12 @@ describe Danger::Changelog do
|
|
14
14
|
end
|
15
15
|
let(:status_report) { changelog.status_report }
|
16
16
|
|
17
|
+
describe 'config' do
|
18
|
+
it 'placeholder_line' do
|
19
|
+
expect(changelog.placeholder_line).to eq "* Your contribution here.\n"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
17
23
|
describe 'in a PR' do
|
18
24
|
before do
|
19
25
|
# typical PR JSON looks like https://raw.githubusercontent.com/danger/danger/bffc246a11dac883d76fc6636319bd6c2acd58a3/spec/fixtures/pr_response.json
|
@@ -33,16 +39,62 @@ describe Danger::Changelog do
|
|
33
39
|
end
|
34
40
|
|
35
41
|
context 'without CHANGELOG changes' do
|
36
|
-
|
37
|
-
|
38
|
-
|
42
|
+
context 'when something was modified' do
|
43
|
+
before do
|
44
|
+
allow(changelog.git).to receive(:modified_files).and_return(['some-file.txt'])
|
45
|
+
allow(changelog.git).to receive(:added_files).and_return(['another-file.txt'])
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'complains when no CHANGELOG can be found' do
|
49
|
+
expect(subject).to be false
|
50
|
+
expect(status_report[:errors]).to eq []
|
51
|
+
expect(status_report[:warnings]).to eq ["Unless you're refactoring existing code or improving documentation, please update #{filename}."]
|
52
|
+
expect(status_report[:markdowns].map(&:message)).to eq ["Here's an example of a #{filename} entry:\n\n```markdown\n* [#123](https://github.com/dblock/danger-changelog/pull/123): Being dangerous - [@dblock](https://github.com/dblock).\n```\n"]
|
53
|
+
end
|
39
54
|
end
|
40
55
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
56
|
+
context 'with a README.md' do
|
57
|
+
before do
|
58
|
+
allow(changelog.git).to receive(:modified_files).and_return(['README.md'])
|
59
|
+
allow(changelog.git).to receive(:added_files).and_return([])
|
60
|
+
end
|
61
|
+
it 'has no complaints' do
|
62
|
+
expect(subject).to be true
|
63
|
+
expect(status_report[:errors]).to eq []
|
64
|
+
expect(status_report[:warnings]).to eq []
|
65
|
+
expect(status_report[:markdowns]).to eq []
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'with files being ignored' do
|
70
|
+
context 'name' do
|
71
|
+
before do
|
72
|
+
changelog.ignore_files = ['WHATEVER.md']
|
73
|
+
allow(changelog.git).to receive(:modified_files).and_return(['WHATEVER.md'])
|
74
|
+
allow(changelog.git).to receive(:added_files).and_return([])
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'has no complaints' do
|
78
|
+
expect(subject).to be true
|
79
|
+
expect(status_report[:errors]).to eq []
|
80
|
+
expect(status_report[:warnings]).to eq []
|
81
|
+
expect(status_report[:markdowns]).to eq []
|
82
|
+
end
|
83
|
+
end
|
84
|
+
context 'mixed' do
|
85
|
+
before do
|
86
|
+
changelog.ignore_files = ['WHATEVER.md', /\.txt$/]
|
87
|
+
allow(changelog.git).to receive(:modified_files).and_return(['WHATEVER.md'])
|
88
|
+
allow(changelog.git).to receive(:added_files).and_return(['one.txt', 'two.txt'])
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'has no complaints' do
|
92
|
+
expect(subject).to be true
|
93
|
+
expect(status_report[:errors]).to eq []
|
94
|
+
expect(status_report[:warnings]).to eq []
|
95
|
+
expect(status_report[:markdowns]).to eq []
|
96
|
+
end
|
97
|
+
end
|
46
98
|
end
|
47
99
|
end
|
48
100
|
|
@@ -77,7 +129,8 @@ describe Danger::Changelog do
|
|
77
129
|
|
78
130
|
context 'is_changelog_format_correct?' do
|
79
131
|
subject do
|
80
|
-
changelog.
|
132
|
+
changelog.format = Danger::Changelog::Parsers.default_format
|
133
|
+
changelog.is_changelog_format_correct?
|
81
134
|
end
|
82
135
|
|
83
136
|
context 'without a CHANGELOG file' do
|
@@ -103,9 +156,7 @@ describe Danger::Changelog do
|
|
103
156
|
|
104
157
|
context 'customized' do
|
105
158
|
before do
|
106
|
-
|
107
|
-
config.placeholder_line = "* Nothing yet.\n"
|
108
|
-
end
|
159
|
+
changelog.placeholder_line = "* Nothing yet.\n"
|
109
160
|
end
|
110
161
|
|
111
162
|
let(:filename) { File.expand_path('fixtures/changelogs/customized.md', __dir__) }
|
@@ -122,9 +173,7 @@ describe Danger::Changelog do
|
|
122
173
|
|
123
174
|
context 'when placeholder line is customized' do
|
124
175
|
before do
|
125
|
-
|
126
|
-
config.placeholder_line = "* Nothing yet.\n"
|
127
|
-
end
|
176
|
+
changelog.placeholder_line = "* Nothing yet.\n"
|
128
177
|
end
|
129
178
|
|
130
179
|
it 'complains' do
|
@@ -146,9 +195,7 @@ describe Danger::Changelog do
|
|
146
195
|
|
147
196
|
context 'when placeholder line is nil' do
|
148
197
|
before do
|
149
|
-
|
150
|
-
config.placeholder_line = nil
|
151
|
-
end
|
198
|
+
changelog.placeholder_line = nil
|
152
199
|
end
|
153
200
|
|
154
201
|
it 'is ok' do
|
@@ -171,9 +218,7 @@ describe Danger::Changelog do
|
|
171
218
|
|
172
219
|
context 'when placeholder line is nil' do
|
173
220
|
before do
|
174
|
-
|
175
|
-
config.placeholder_line = nil
|
176
|
-
end
|
221
|
+
changelog.placeholder_line = nil
|
177
222
|
end
|
178
223
|
|
179
224
|
it 'complains' do
|
@@ -213,6 +258,7 @@ describe Danger::Changelog do
|
|
213
258
|
let(:filename) { File.expand_path('fixtures/changelogs/keep_a_changelog.md', __dir__) }
|
214
259
|
let(:dangerfile) { testing_dangerfile }
|
215
260
|
let(:changelog) do
|
261
|
+
dangerfile.changelog.format = :keep_a_changelog
|
216
262
|
dangerfile.changelog.filename = filename
|
217
263
|
dangerfile.changelog
|
218
264
|
end
|
@@ -230,13 +276,15 @@ describe Danger::Changelog do
|
|
230
276
|
}
|
231
277
|
end
|
232
278
|
|
233
|
-
context '#check
|
234
|
-
subject
|
279
|
+
context '#check!' do
|
280
|
+
subject do
|
281
|
+
changelog.check!
|
282
|
+
end
|
235
283
|
|
236
284
|
context 'without CHANGELOG changes' do
|
237
285
|
before do
|
238
|
-
allow(changelog.git).to receive(:modified_files).and_return([])
|
239
|
-
allow(changelog.git).to receive(:added_files).and_return([])
|
286
|
+
allow(changelog.git).to receive(:modified_files).and_return(['some-file.txt'])
|
287
|
+
allow(changelog.git).to receive(:added_files).and_return(['some-file.txt'])
|
240
288
|
end
|
241
289
|
|
242
290
|
it 'complains when no CHANGELOG can be found' do
|
@@ -254,8 +302,7 @@ describe Danger::Changelog do
|
|
254
302
|
end
|
255
303
|
|
256
304
|
it 'has no complaints' do
|
257
|
-
subject
|
258
|
-
# expect(subject).to be true
|
305
|
+
expect(subject).to be true
|
259
306
|
expect(status_report[:errors]).to eq []
|
260
307
|
expect(status_report[:warnings]).to eq []
|
261
308
|
expect(status_report[:markdowns]).to eq []
|
data/spec/config_spec.rb
CHANGED
@@ -1,43 +1,83 @@
|
|
1
1
|
require File.expand_path('spec_helper', __dir__)
|
2
2
|
|
3
3
|
describe Danger::Changelog::Config do
|
4
|
-
describe '
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
config.placeholder_line = "Nothing yet.\n"
|
10
|
-
end
|
11
|
-
end
|
4
|
+
describe 'placeholder_line' do
|
5
|
+
context 'when without markdown star' do
|
6
|
+
before do
|
7
|
+
Danger::Changelog.config.placeholder_line = "Nothing yet.\n"
|
8
|
+
end
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
end
|
10
|
+
it 'ads missing star and saves configuration' do
|
11
|
+
expect(Danger::Changelog.config.placeholder_line).to eq "* Nothing yet.\n"
|
16
12
|
end
|
13
|
+
end
|
17
14
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
15
|
+
context 'when without trailing newline' do
|
16
|
+
before do
|
17
|
+
Danger::Changelog.config.placeholder_line = '* Nothing yet.'
|
18
|
+
end
|
24
19
|
|
25
|
-
|
26
|
-
|
27
|
-
|
20
|
+
it 'ads missing trailing newline and saves configuration' do
|
21
|
+
expect(Danger::Changelog.config.placeholder_line).to eq "* Nothing yet.\n"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when valid' do
|
26
|
+
before do
|
27
|
+
Danger::Changelog.config.placeholder_line = "* Nothing yet.\n"
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
it 'saves configuration' do
|
31
|
+
expect(Danger::Changelog.config.placeholder_line).to eq "* Nothing yet.\n"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
describe 'format' do
|
36
|
+
it 'default' do
|
37
|
+
expect(Danger::Changelog.config.format).to eq :intridea
|
38
|
+
end
|
39
|
+
it 'with an invalid format' do
|
40
|
+
expect { Danger::Changelog.config.format = :foobar }.to raise_error ArgumentError, 'Invalid format: foobar'
|
41
|
+
end
|
42
|
+
it 'with a string' do
|
43
|
+
expect { Danger::Changelog.config.format = 'intridea' }.to_not raise_error
|
44
|
+
end
|
45
|
+
it 'with a symbol' do
|
46
|
+
expect { Danger::Changelog.config.format = :intridea }.to_not raise_error
|
47
|
+
end
|
48
|
+
Danger::Changelog::Parsers::FORMATS.each_pair do |format, parser|
|
49
|
+
context format do
|
31
50
|
before do
|
32
|
-
Danger::Changelog.
|
33
|
-
config.placeholder_line = "* Nothing yet.\n"
|
34
|
-
end
|
51
|
+
Danger::Changelog.config.format = format
|
35
52
|
end
|
36
|
-
|
37
|
-
|
38
|
-
|
53
|
+
it 'sets format' do
|
54
|
+
expect(Danger::Changelog.config.format).to eq format
|
55
|
+
end
|
56
|
+
it 'creates parser' do
|
57
|
+
expect(Danger::Changelog.config.parser).to be_a parser
|
39
58
|
end
|
40
59
|
end
|
41
60
|
end
|
42
61
|
end
|
62
|
+
describe 'ignore_files' do
|
63
|
+
it 'default' do
|
64
|
+
expect(Danger::Changelog.config.ignore_files).to eq(['README.md'])
|
65
|
+
end
|
66
|
+
context 'with a file name' do
|
67
|
+
before do
|
68
|
+
Danger::Changelog.config.ignore_files = 'WHATEVER.md'
|
69
|
+
end
|
70
|
+
it 'transforms it into an array' do
|
71
|
+
expect(Danger::Changelog.config.ignore_files).to eq(['WHATEVER.md'])
|
72
|
+
end
|
73
|
+
end
|
74
|
+
context 'with multiple names' do
|
75
|
+
before do
|
76
|
+
Danger::Changelog.config.ignore_files = ['WHATEVER.md', /\*.md$/]
|
77
|
+
end
|
78
|
+
it 'transforms it into an array' do
|
79
|
+
expect(Danger::Changelog.config.ignore_files).to eq(['WHATEVER.md', /\*.md$/])
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
43
83
|
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
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dblock
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: danger-plugin-api
|
@@ -42,16 +42,16 @@ dependencies:
|
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: guard
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|