danger-samsao 0.1.1 → 0.2.0

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
  SHA1:
3
- metadata.gz: ce381ca0181a3c9df3c2c536e6d707bce6defcbe
4
- data.tar.gz: 14d687d8d21fb34fd864526eb1fd82832b0835cd
3
+ metadata.gz: 17a57df336d68834fbc0789edfd27de8f66ad1b6
4
+ data.tar.gz: a1465dc66e0437c9659bbe61d4baae682133dc3a
5
5
  SHA512:
6
- metadata.gz: c73357ebc4b5683b292f389f08e810fb5467997bddbcc6c5b6bc27250c8b659b822de6a7d36106e5392b292d29fe8d8f516f20877028ee523407054e291a6695
7
- data.tar.gz: 00bec8ce51b8b01b75a3d2b9ee6fe5fab5a550b1763714eea63a2386837be29a85182b558b3ec01bbc9e20d581be1b096b08507638114e0095ea2cc24750c68b
6
+ metadata.gz: 942d127d15303f2a7fcf8fb1df32ba074e5c401e5e23b732646c3b12ca5130ac2ed6fa6a2d3d602614201935a1755186570b467cf17d37813e05b483298606c2
7
+ data.tar.gz: 7f7b39dc19d1a8fbc998e2afc17191043b16947a61a61636576159b400a78f2a33635d89a1c95856959ae3547b46fe47917bb9851c50afb77a3d9b1cddf6e8dd
data/CHANGELOG.md CHANGED
@@ -1,9 +1,50 @@
1
+ ## 0.2.0 (May 9, 2017)
2
+
3
+ #### Breaking Changes
4
+
5
+ * Changed `trivial_change?` logic by only flagging PR as trivial using
6
+ the PR title and not the branch name anymore.
7
+
8
+ * Removed `trivial_branch?` support. It was replaced by `support_branch?`
9
+ instead to more closely follow git flow branching model.
10
+
11
+ #### Features
12
+
13
+ * Enhanced the changelog missing action to not fail when changelog is
14
+ not updated, project is of type `:application` and PR is on a support
15
+ branch.
16
+
17
+ * Added config option `project_type` which can be one of `:application`
18
+ or `:library` and defaults to `:application`.
19
+
20
+ * Enhanced `fix_branch?` to support `hotfix/` and `bugfix/` prefixes.
21
+
22
+ * Added `support_branch?` support.
23
+
24
+ * Updated `trivial_change?` helper to support variations in marker
25
+ for `#typo` marker, now supports `#typos`.
26
+
27
+ #### Fixes
28
+
29
+ * Fixed branching model to fully support git flow branching model which
30
+ is the branching model we use.
31
+
32
+ #### Support
33
+
34
+ * Added `Danger` to project, eating our own dog food.
35
+
36
+ * Reformatted `CHANGELOG.md` a bit to split by sections.
37
+
1
38
  ## 0.1.1 (May 4, 2017)
2
39
 
40
+ #### Features
41
+
3
42
  * Open source to MIT.
4
43
 
5
44
  ## 0.1.0 (May 1, 2017)
6
45
 
46
+ #### Features
47
+
7
48
  * Added `fail_when_merge_commit_detected` action.
8
49
 
9
50
  * Added `warn_when_work_in_progess_pr` action.
data/Dangerfile ADDED
@@ -0,0 +1,22 @@
1
+ # rubocop:disable Style/FileName
2
+
3
+ ## Config
4
+ samsao.config do
5
+ project_type :library
6
+ sources '.*'
7
+ end
8
+
9
+ ## Errors
10
+ samsao.fail_when_changelog_update_missing
11
+ samsao.fail_when_merge_commit_detected
12
+ samsao.fail_when_non_single_commit_feature
13
+ samsao.fail_when_wrong_branching_model
14
+
15
+ ## Warnings
16
+ samsao.warn_when_work_in_progess_pr
17
+
18
+ ## Messages
19
+ unless status_report[:errors].empty?
20
+ message 'If this was a trivial change, typo fix or tooling related, ' \
21
+ 'you can add #trivial, #typo or #tool respectively in your PR title.'
22
+ end
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in danger-samsao.gemspec
4
3
  gemspec
4
+
5
+ gem 'danger', '~> 5.1'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-samsao (0.1.1)
4
+ danger-samsao (0.2.0)
5
5
  danger-plugin-api (~> 1.0)
6
6
 
7
7
  GEM
@@ -19,7 +19,7 @@ GEM
19
19
  colored2 (3.1.2)
20
20
  cork (0.3.0)
21
21
  colored2 (~> 3.1)
22
- danger (5.1.1)
22
+ danger (5.2.1)
23
23
  claide (~> 1.0)
24
24
  claide-plugins (>= 0.9.2)
25
25
  colored2 (~> 3.1)
@@ -86,19 +86,19 @@ GEM
86
86
  rb-fsevent (0.9.8)
87
87
  rb-inotify (0.9.8)
88
88
  ffi (>= 0.5.0)
89
- rspec (3.5.0)
90
- rspec-core (~> 3.5.0)
91
- rspec-expectations (~> 3.5.0)
92
- rspec-mocks (~> 3.5.0)
93
- rspec-core (3.5.4)
94
- rspec-support (~> 3.5.0)
95
- rspec-expectations (3.5.0)
89
+ rspec (3.6.0)
90
+ rspec-core (~> 3.6.0)
91
+ rspec-expectations (~> 3.6.0)
92
+ rspec-mocks (~> 3.6.0)
93
+ rspec-core (3.6.0)
94
+ rspec-support (~> 3.6.0)
95
+ rspec-expectations (3.6.0)
96
96
  diff-lcs (>= 1.2.0, < 2.0)
97
- rspec-support (~> 3.5.0)
98
- rspec-mocks (3.5.0)
97
+ rspec-support (~> 3.6.0)
98
+ rspec-mocks (3.6.0)
99
99
  diff-lcs (>= 1.2.0, < 2.0)
100
- rspec-support (~> 3.5.0)
101
- rspec-support (3.5.0)
100
+ rspec-support (~> 3.6.0)
101
+ rspec-support (3.6.0)
102
102
  rubocop (0.48.1)
103
103
  parser (>= 2.3.3.1, < 3.0)
104
104
  powerpack (~> 0.1)
@@ -122,6 +122,7 @@ PLATFORMS
122
122
 
123
123
  DEPENDENCIES
124
124
  bundler (~> 1.3)
125
+ danger (~> 5.1)
125
126
  danger-samsao!
126
127
  guard (~> 2.14)
127
128
  guard-rspec (~> 4.7)
@@ -129,7 +130,7 @@ DEPENDENCIES
129
130
  pry (~> 0.11.0.pre2)
130
131
  rake (~> 10.0)
131
132
  rspec (~> 3.4)
132
- rubocop (~> 0.41)
133
+ rubocop (~> 0.48)
133
134
  yard (~> 0.8)
134
135
 
135
136
  BUNDLED WITH
data/README.md CHANGED
@@ -7,6 +7,32 @@ A Danger plugin bringing Samsao's PR guideline into code.
7
7
  Simply add `danger-samsao` to your `Gemfile` and configure your `Dangerfile`
8
8
  using all the nice goodies.
9
9
 
10
+ ## Quick Start
11
+
12
+ Here a sample `Dangerfile` that you can use to bootstrap your project:
13
+
14
+ ```
15
+ ## Config
16
+ samsao.config do
17
+ sources '.*'
18
+ end
19
+
20
+ ## Errors
21
+ samsao.fail_when_changelog_update_missing
22
+ samsao.fail_when_merge_commit_detected
23
+ samsao.fail_when_non_single_commit_feature
24
+ samsao.fail_when_wrong_branching_model
25
+
26
+ ## Warnings
27
+ samsao.warn_when_work_in_progess_pr
28
+
29
+ ## Messages
30
+ unless status_report[:errors].empty?
31
+ message 'If this was a trivial change, typo fix or tooling related, ' \
32
+ 'you can add #trivial, #typo or #tool respectively in your PR title.'
33
+ end
34
+ ```
35
+
10
36
  ## Usage
11
37
 
12
38
  Methods and attributes from this plugin are available in
@@ -22,13 +48,13 @@ your `Dangerfile` under the `samsao` namespace.
22
48
  * [samsao.fail_when_wrong_branching_model](#branching-model)
23
49
  * [samsao.warn_when_work_in_progess_pr](#when-work-in-progess-pr)
24
50
  * [Helpers](#helpers)
25
- * [samsao.changelog_modified?](#changelog-modified-)
26
- * [samsao.feature_branch?](#feature-branch-)
27
- * [samsao.fix_branch?](#fix-branch-)
28
- * [samsao.has_app_changes?](#has-app-changes-)
29
- * [samsao.release_branch?](#release-branch-)
30
- * [samsao.trivial_branch?](#trivial-branch-)
31
- * [samsao.trivial_change?](#trivial-change-)
51
+ * [samsao.changelog_modified?](#changelog-modified)
52
+ * [samsao.feature_branch?](#feature-branch)
53
+ * [samsao.fix_branch?](#fix-branch)
54
+ * [samsao.has_app_changes?](#has-app-changes)
55
+ * [samsao.release_branch?](#release-branch)
56
+ * [samsao.support_branch?](#support-branch)
57
+ * [samsao.trivial_change?](#trivial-change)
32
58
 
33
59
  ### Config
34
60
 
@@ -38,20 +64,32 @@ easier. This is done by using the `config` attributes the plugin:
38
64
  ```
39
65
  samsao.config do
40
66
  changelogs 'CHANGELOG.yml'
67
+ project_type :library
41
68
  sources 'app/src'
42
69
  end
43
70
  ```
44
71
 
45
72
  #### Changelogs
46
73
 
47
- Default: `CHANGELOG.md`
74
+ Defaults: `[CHANGELOG.md]`
48
75
 
49
76
  Enable to change the CHANGELOG file paths looked upon when checking if
50
77
  CHANGELOG file has been modified or not.
51
78
 
79
+ #### Project Type
80
+
81
+ Defaults: `:application`
82
+
83
+ Change the kind of project your are currently developing. This settings
84
+ affects these actions and helpers:
85
+
86
+ * [samsao.fail_when_changelog_update_missing](#changelog-update-missing)
87
+
88
+ See the exact actions or helpers for precise details about implications.
89
+
52
90
  #### Sources
53
91
 
54
- Default: `<Empty>`
92
+ Default: `[]`
55
93
 
56
94
  Enable to change which paths are considered has being source files of the
57
95
  project. Multiple entries can be passed. Accepts multiple entries to be passed:
@@ -88,7 +126,15 @@ samsao.fail_when_wrong_branching_model
88
126
  ```
89
127
 
90
128
  Going to make the PR fails when the branch does not respect the git branching
91
- model.
129
+ model. We follow git flow branching model and failure will occurs if the branch
130
+ name does not start with one of the following prefixes:
131
+
132
+ * `fix/`
133
+ * `bugfix/`
134
+ * `hotfix/`
135
+ * `feature/`
136
+ * `release/`
137
+ * `support/`
92
138
 
93
139
  #### CHANGELOG Update Missing
94
140
 
@@ -96,8 +142,13 @@ model.
96
142
  samsao.fail_when_changelog_update_missing
97
143
  ```
98
144
 
99
- Going to make the PR fails when it's a feature branch (starts with `feature/`)
100
- or fix branch (`fix/`) and the CHANGELOG file was not updated.
145
+ This action reports a failure when a PR is made that is not flagged
146
+ as a [trivial change](#trivial-change) and the changelog (based on
147
+ `changelogs` config options) has not been modified.
148
+
149
+ When the project is of type `:application`, a change made to a [support
150
+ branch](#support-branch) will not trigger a failure even if the changelog
151
+ is not updated.
101
152
 
102
153
  #### Feature Branch Multiple Commits
103
154
 
@@ -171,7 +222,7 @@ Returns true if the PR branch starts with `feature/`.
171
222
  samsao.fix_branch?
172
223
  ```
173
224
 
174
- Returns true if the PR branch starts with `fix/`.
225
+ Returns true if the PR branch starts with `fix/`, `bugfix/` or `hotfix/`.
175
226
 
176
227
  #### Release Branch?
177
228
 
@@ -181,13 +232,13 @@ samsao.release_branch?
181
232
 
182
233
  Returns true if the PR branch starts with `release/`.
183
234
 
184
- #### Trivial Branch?
235
+ #### Support Branch?
185
236
 
186
237
  ```
187
- samsao.trivial_branch?
238
+ samsao.support_branch?
188
239
  ```
189
240
 
190
- Returns true if the PR branch starts with `trivial/`.
241
+ Returns true if the PR branch starts with `support/`.
191
242
 
192
243
  #### Trivial Change?
193
244
 
@@ -195,8 +246,7 @@ Returns true if the PR branch starts with `trivial/`.
195
246
  samsao.trivial_change?
196
247
  ```
197
248
 
198
- Returns true if the PR title contains `#trivial` or `#typo` or the branch is a
199
- trivial branch ([trivial_branch?](#trivial-branch-) helper).
249
+ Returns true if the PR title contains `#trivial`, `#typo` or `#typos`.
200
250
 
201
251
  ## Development
202
252
 
@@ -232,11 +282,12 @@ Assume for the rest of this section that we are releasing version `0.1.0`
232
282
  and today's date is `May 1st, 2017`. Terminal commands are given, but feel
233
283
  free to use `SourceTree` or anything else.
234
284
 
235
- Start by checking out the commit that was flagged as the release commit (could be
236
- the `develop` branch) and name the branch `release/0.1.0`:
285
+ Start by checking out the `develop` branch and ensure you are up-to-date
286
+ with remote
237
287
 
238
288
  ```
239
- git checkout -b release/0.1.0 aeb156fb4a
289
+ git checkout develop
290
+ git pull
240
291
  ```
241
292
 
242
293
  Once on the branch, modify `CHANGELOG.md` so that `In progress` is replaced by
@@ -256,17 +307,21 @@ Once the commit is done, simply run `bundle exec rake release`. This will
256
307
  ask you for the Samsao's RubyGems credentials (only if it's your first
257
308
  release, ask a system administrator to get them). It will create a tag
258
309
  on the current commit of the current branch (should be the release commit
259
- made earlier) named `v0.1.0`. And it will finally push the tag to the
310
+ made earlier) named `v0.1.0`. And it will finally push the branch & tag to the
260
311
  repository as well as building and publishing the gem on RubyGems.
261
312
 
262
313
  Last thing to do is bumping to next development version. Edit back
263
314
  `CHANGELOG.md` so that `## In progress` is the new section header and
264
315
  add a bunch of empty lines (around 10, only 2 shown in the example for
265
- brevity) starting with a **space** followed by a **star**:
316
+ brevity) into single `Features` section (add other sections when updating
317
+ the CHANGELOG). Each line should be starting with a **space** followed by
318
+ a **star**:
266
319
 
267
320
  ```
268
321
  ## In progress
269
322
 
323
+ #### Features
324
+
270
325
  *
271
326
 
272
327
  *
data/bitrise.yml CHANGED
@@ -25,6 +25,7 @@ workflows:
25
25
  before_run:
26
26
  - _cache_pull
27
27
  - _prepare
28
+ - _danger
28
29
  - _lint
29
30
  - _test
30
31
 
@@ -48,6 +49,15 @@ workflows:
48
49
  - cache-pull@0.9.2:
49
50
  title: Pull cache
50
51
 
52
+ _danger:
53
+ steps:
54
+ - script@1.1.3:
55
+ title: Danger
56
+ run_if: .IsPR
57
+ inputs:
58
+ - content: |-
59
+ bundle exec danger
60
+
51
61
  _lint:
52
62
  steps:
53
63
  - script@1.1.3:
@@ -19,6 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
+ spec.required_ruby_version = '~> 2.0'
23
+
22
24
  spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
23
25
 
24
26
  spec.add_development_dependency 'bundler', '~> 1.3'
@@ -27,7 +29,7 @@ Gem::Specification.new do |spec|
27
29
  spec.add_development_dependency 'guard-rspec', '~> 4.7'
28
30
  spec.add_development_dependency 'pry', '~> 0.11.0.pre2'
29
31
  spec.add_development_dependency 'rake', '~> 10.0'
30
- spec.add_development_dependency 'rubocop', '~> 0.41'
32
+ spec.add_development_dependency 'rubocop', '~> 0.48'
31
33
  spec.add_development_dependency 'rspec', '~> 3.4'
32
34
  spec.add_development_dependency 'yard', '~> 0.8'
33
35
  end
@@ -5,7 +5,7 @@ module Samsao
5
5
  #
6
6
  # @return [void]
7
7
  def fail_when_wrong_branching_model
8
- message = 'Your branch should be prefixed with feature/, fix/, trivial/ or release/!'
8
+ message = 'Your branch should be prefixed with feature/, fix/, bugfix/, hotfix/, release/ or support/!'
9
9
 
10
10
  fail message unless respects_branching_model
11
11
  end
@@ -25,10 +25,9 @@ module Samsao
25
25
  # @return [void]
26
26
  def fail_when_changelog_update_missing
27
27
  return if trivial_change?
28
+ return if support_branch? && config.project_type == :application
28
29
 
29
- message = 'You did a fix or a feature without updating CHANGELOG file!'
30
-
31
- fail message unless changelog_modified?
30
+ fail 'You did a change without updating CHANGELOG file!' unless changelog_modified?
32
31
  end
33
32
 
34
33
  # Fails when one or more merge commit is detected.
data/lib/samsao/config.rb CHANGED
@@ -1,9 +1,12 @@
1
1
  module Danger
2
2
  # Samsao's config class
3
3
  class SamsaoConfig
4
+ PROJECT_TYPES = [:application, :library].freeze
5
+
4
6
  def initialize
5
7
  @changelogs = ['CHANGELOG.md']
6
8
  @sources = []
9
+ @project_type = :application
7
10
  end
8
11
 
9
12
  def changelogs(*entries)
@@ -12,10 +15,31 @@ module Danger
12
15
  @changelogs = entries
13
16
  end
14
17
 
18
+ def project_type(type = nil)
19
+ return @project_type if type.nil?
20
+
21
+ @project_type = validate_project_type(type)
22
+ end
23
+
15
24
  def sources(*entries)
16
25
  return @sources if entries.nil? || entries.empty?
17
26
 
18
27
  @sources = entries
19
28
  end
29
+
30
+ private
31
+
32
+ def validate_project_type(type)
33
+ return type if valid_project_type?(type)
34
+
35
+ actual_type = type.is_a?(Symbol) ? ":#{type}" : type.to_s
36
+ valid_types = PROJECT_TYPES.map { |valid_type| ":#{valid_type}" }.join(', ')
37
+
38
+ raise "Project type '#{actual_type}' is invalid, must be one of '#{valid_types}'"
39
+ end
40
+
41
+ def valid_project_type?(type)
42
+ PROJECT_TYPES.include?(type)
43
+ end
20
44
  end
21
45
  end
@@ -1,3 +1,3 @@
1
1
  module Samsao
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
@@ -20,11 +20,11 @@ module Samsao
20
20
  git_branch.start_with?('feature/')
21
21
  end
22
22
 
23
- # Return true if the current PR branch is a feature branch
23
+ # Return true if the current PR branch is a bug fix branch
24
24
  #
25
25
  # @return [void]
26
26
  def fix_branch?
27
- git_branch.start_with?('fix/')
27
+ !(%r{^(bug|hot)?fix/} =~ git_branch).nil?
28
28
  end
29
29
 
30
30
  # Return true if the current PR branch is a release branch
@@ -34,19 +34,19 @@ module Samsao
34
34
  git_branch.start_with?('release/')
35
35
  end
36
36
 
37
- # Return true if the current PR branch is a trivial branch
37
+ # Return true if the current PR branch is a support branch
38
38
  #
39
39
  # @return [void]
40
- def trivial_branch?
41
- git_branch.start_with?('trivial/')
40
+ def support_branch?
41
+ git_branch.start_with?('support/')
42
42
  end
43
43
 
44
- # Return true if the current PR is a trivial change (branch is `trivial_branch?`)
45
- # or PR title contains #trivial or #typo markers.
44
+ # Return true if the current PR is a trivial change, i.e. if
45
+ # PR title contains #trivial or #typo markers.
46
46
  #
47
47
  # @return [void]
48
48
  def trivial_change?
49
- trivial_branch? || ['#trivial', '#typo'].any? { |modifier| github.pr_title.include?(modifier) }
49
+ !(/#(trivial|typo(s)?)/ =~ github.pr_title).nil?
50
50
  end
51
51
 
52
52
  # Return true if any source files are in the git modified files list.
@@ -73,7 +73,7 @@ module Samsao
73
73
  end
74
74
 
75
75
  def respects_branching_model
76
- feature_branch? || fix_branch? || release_branch? || trivial_branch?
76
+ feature_branch? || fix_branch? || release_branch? || support_branch?
77
77
  end
78
78
  end
79
79
  end
@@ -26,6 +26,9 @@ module Danger
26
26
  data_set = [
27
27
  { branch: 'feature/a', expected: false },
28
28
  { branch: 'fix/a', expected: true },
29
+ { branch: 'bugfix/a', expected: true },
30
+ { branch: 'hotfix/a', expected: true },
31
+ { branch: 'otherfix/a', expected: false },
29
32
  { branch: 'random', expected: false },
30
33
  ]
31
34
 
@@ -48,16 +51,16 @@ module Danger
48
51
  end
49
52
  end
50
53
 
51
- it 'supports trivial_branch? correctly' do
54
+ it 'supports support_branch? correctly' do
52
55
  data_set = [
53
- { branch: 'trivial/a', expected: true },
56
+ { branch: 'support/a', expected: true },
54
57
  { branch: 'fix/a', expected: false },
55
58
  { branch: 'random', expected: false },
56
59
  ]
57
60
 
58
61
  data_set.each do |data|
59
62
  allow(@plugin.github).to receive(:branch_for_head).and_return(data[:branch])
60
- expect(@plugin.trivial_branch?).to be(data[:expected])
63
+ expect(@plugin.support_branch?).to be(data[:expected])
61
64
  end
62
65
  end
63
66
  end
@@ -6,11 +6,12 @@ module Danger
6
6
  before do
7
7
  @dangerfile = testing_dangerfile
8
8
  @plugin = @dangerfile.samsao
9
- @wrong_branching_model = 'Your branch should be prefixed with feature/, fix/, trivial/ or release/!'
9
+ @wrong_branching_model = 'Your branch should be prefixed with feature/, fix/, ' \
10
+ 'bugfix/, hotfix/, release/ or support/!'
10
11
  end
11
12
 
12
13
  describe 'branching model' do
13
- ['fix', 'feature', 'release', 'trivial'].each do |branch_prefix|
14
+ ['fix', 'bugfix', 'hotfix', 'feature', 'release', 'support'].each do |branch_prefix|
14
15
  it "continues on #{branch_prefix}/ prefix" do
15
16
  allow(@plugin.github).to receive(:branch_for_head).and_return("#{branch_prefix}/something")
16
17
 
@@ -6,36 +6,38 @@ module Danger
6
6
  before do
7
7
  @dangerfile = testing_dangerfile
8
8
  @plugin = @dangerfile.samsao
9
- @changelog_needs_update = 'You did a fix or a feature without updating CHANGELOG file!'
9
+ @changelog_needs_update = 'You did a change without updating CHANGELOG file!'
10
10
 
11
11
  allow(@plugin.github).to receive(:pr_title).and_return('Something')
12
12
  end
13
13
 
14
14
  describe 'changelog updated' do
15
- it 'continues on non-feature & non-fix branch' do
16
- allow(@plugin.github).to receive(:branch_for_head).and_return('trivial/a')
15
+ it 'continues on support branch' do
16
+ allow(@plugin.github).to receive(:branch_for_head).and_return('support/a')
17
17
 
18
18
  @plugin.fail_when_changelog_update_missing
19
19
 
20
20
  expect(@dangerfile).to have_no_error
21
21
  end
22
22
 
23
- it 'continues on feature branch and CHANGELOG updated' do
24
- allow(@plugin.github).to receive(:branch_for_head).and_return('feature/a')
25
- allow(@plugin.git).to receive(:modified_files).and_return(['CHANGELOG.md'])
23
+ ['fix', 'bugfix', 'hotfix', 'feature', 'release'].each do |branch|
24
+ it "continues on #{branch} branch and CHANGELOG updated" do
25
+ allow(@plugin.github).to receive(:branch_for_head).and_return("#{branch}/a")
26
+ allow(@plugin.git).to receive(:modified_files).and_return(['CHANGELOG.md'])
26
27
 
27
- @plugin.fail_when_changelog_update_missing
28
+ @plugin.fail_when_changelog_update_missing
28
29
 
29
- expect(@dangerfile).to have_no_error
30
- end
30
+ expect(@dangerfile).to have_no_error
31
+ end
31
32
 
32
- it 'continues on fix branch and CHANGELOG updated' do
33
- allow(@plugin.github).to receive(:branch_for_head).and_return('fix/a')
34
- allow(@plugin.git).to receive(:modified_files).and_return(['CHANGELOG.md'])
33
+ it "fails on #{branch} branch and CHANGELOG not updated" do
34
+ allow(@plugin.github).to receive(:branch_for_head).and_return("#{branch}/a")
35
+ allow(@plugin.git).to receive(:modified_files).and_return([])
35
36
 
36
- @plugin.fail_when_changelog_update_missing
37
+ @plugin.fail_when_changelog_update_missing
37
38
 
38
- expect(@dangerfile).to have_no_error
39
+ expect(@dangerfile).to have_error(@changelog_needs_update)
40
+ end
39
41
  end
40
42
 
41
43
  it 'accepts customized changelogs path' do
@@ -73,8 +75,25 @@ module Danger
73
75
  expect(@dangerfile).to have_no_error
74
76
  end
75
77
 
76
- it 'fails on feature branch and CHANGELOG not updated' do
77
- allow(@plugin.github).to receive(:branch_for_head).and_return('feature/a')
78
+ it 'continues on support_branch within application project and CHANGELOG not updated' do
79
+ @plugin.config do
80
+ project_type :application
81
+ end
82
+
83
+ allow(@plugin).to receive(:support_branch?).and_return(true)
84
+ allow(@plugin.git).to receive(:modified_files).and_return([])
85
+
86
+ @plugin.fail_when_changelog_update_missing
87
+
88
+ expect(@dangerfile).to have_no_error
89
+ end
90
+
91
+ it 'fails on support_branch within library project and CHANGELOG not updated' do
92
+ @plugin.config do
93
+ project_type :library
94
+ end
95
+
96
+ allow(@plugin).to receive(:support_branch?).and_return(true)
78
97
  allow(@plugin.git).to receive(:modified_files).and_return([])
79
98
 
80
99
  @plugin.fail_when_changelog_update_missing
@@ -8,7 +8,11 @@ module Danger
8
8
  @plugin = @dangerfile.samsao
9
9
  end
10
10
 
11
- describe 'samsao_config' do
11
+ describe 'config sources' do
12
+ it 'defaults to empty array when not set' do
13
+ expect(@plugin.config.sources).to eq([])
14
+ end
15
+
12
16
  it 'can configure single source' do
13
17
  @plugin.config do
14
18
  sources 'app/src'
@@ -25,6 +29,56 @@ module Danger
25
29
  expect(@plugin.config.sources).to eq(['app/src', 'lib/src'])
26
30
  end
27
31
  end
32
+
33
+ describe 'config changelogs' do
34
+ it 'defaults to [CHANGELOG.md] array when not set' do
35
+ expect(@plugin.config.changelogs).to eq(['CHANGELOG.md'])
36
+ end
37
+
38
+ it 'can configure single changelog' do
39
+ @plugin.config do
40
+ changelogs 'a'
41
+ end
42
+
43
+ expect(@plugin.config.changelogs).to eq(['a'])
44
+ end
45
+
46
+ it 'can configure multiple changelogs' do
47
+ @plugin.config do
48
+ changelogs 'a', 'b'
49
+ end
50
+
51
+ expect(@plugin.config.changelogs).to eq(['a', 'b'])
52
+ end
53
+ end
54
+
55
+ describe 'config project_type' do
56
+ it 'defaults to :application when not set' do
57
+ expect(@plugin.config.project_type).to eq(:application)
58
+ end
59
+
60
+ [:application, :library].each do |type|
61
+ it "accepts :#{type} type" do
62
+ @plugin.config do
63
+ project_type type
64
+ end
65
+
66
+ expect(@plugin.config.project_type).to eq(type)
67
+ end
68
+ end
69
+
70
+ it 'rejects invalid types when wrong type is a symbol' do
71
+ message = "Project type ':custom' is invalid, must be one of ':application, :library'"
72
+
73
+ expect { @plugin.config { project_type :custom } }.to raise_error(message)
74
+ end
75
+
76
+ it 'rejects invalid types when wrong type is a string' do
77
+ message = "Project type 'custom' is invalid, must be one of ':application, :library'"
78
+
79
+ expect { @plugin.config { project_type 'custom' } }.to raise_error(message)
80
+ end
81
+ end
28
82
  end
29
83
  end
30
84
  end
@@ -12,45 +12,31 @@ module Danger
12
12
  end
13
13
 
14
14
  describe 'trivial_change?' do
15
- ['#trivial', '#typo'].each do |marker|
15
+ ['#trivial', '#typo', '#typos'].each do |marker|
16
16
  it "returns true when PR title contains #{marker} at the end" do
17
- allow(@plugin.github).to receive(:pr_title).and_return("Trivial at the end #{marker}")
17
+ allow(@plugin.github).to receive(:pr_title).and_return("Marker at the end #{marker}")
18
18
 
19
19
  expect(@plugin.trivial_change?).to be(true)
20
20
  end
21
21
 
22
22
  it "returns true when PR title contains #{marker} at the start" do
23
- allow(@plugin.github).to receive(:pr_title).and_return("#{marker} Trivial at the start")
23
+ allow(@plugin.github).to receive(:pr_title).and_return("#{marker} Marker at the start")
24
24
 
25
25
  expect(@plugin.trivial_change?).to be(true)
26
26
  end
27
27
 
28
28
  it "returns true when PR title contains #{marker} in the middle" do
29
- allow(@plugin.github).to receive(:pr_title).and_return("Trivial in #{marker} the middle")
30
-
31
- expect(@plugin.trivial_change?).to be(true)
32
- end
33
-
34
- it "returns true when branch is a trivial branch and PR include #{marker}" do
35
- allow(@plugin.github).to receive(:branch_for_head).and_return('trivial/a')
36
- allow(@plugin.github).to receive(:pr_title).and_return("##{marker}")
29
+ allow(@plugin.github).to receive(:pr_title).and_return("Marker in #{marker} the middle")
37
30
 
38
31
  expect(@plugin.trivial_change?).to be(true)
39
32
  end
40
33
  end
41
34
 
42
- it 'returns false when not trivial branch and no trivial marker(s) in PR title' do
43
- allow(@plugin.github).to receive(:branch_for_head).and_return('feature/a')
35
+ it 'returns false no trivial marker(s) in PR title' do
44
36
  allow(@plugin.github).to receive(:pr_title).and_return('Something')
45
37
 
46
38
  expect(@plugin.trivial_change?).to be(false)
47
39
  end
48
-
49
- it 'returns true when branch is a trivial branch' do
50
- allow(@plugin.github).to receive(:branch_for_head).and_return('trivial/a')
51
-
52
- expect(@plugin.trivial_change?).to be(true)
53
- end
54
40
  end
55
41
  end
56
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-samsao
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samsao Development Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-04 00:00:00.000000000 Z
11
+ date: 2017-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger-plugin-api
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0.41'
117
+ version: '0.48'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0.41'
124
+ version: '0.48'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -162,6 +162,7 @@ files:
162
162
  - ".rubocop.yml"
163
163
  - ".travis.yml"
164
164
  - CHANGELOG.md
165
+ - Dangerfile
165
166
  - Gemfile
166
167
  - Gemfile.lock
167
168
  - Guardfile
@@ -206,9 +207,9 @@ require_paths:
206
207
  - lib
207
208
  required_ruby_version: !ruby/object:Gem::Requirement
208
209
  requirements:
209
- - - ">="
210
+ - - "~>"
210
211
  - !ruby/object:Gem::Version
211
- version: '0'
212
+ version: '2.0'
212
213
  required_rubygems_version: !ruby/object:Gem::Requirement
213
214
  requirements:
214
215
  - - ">="