mr_bump 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- N2IwZTVlYTM1MWZmMTNiYzFiYzUzMjczODFiMjMwNjU1ZTEyMGQxOA==
4
+ NjQ1YzdhMzBhYTY0YTkyMmYwMDM2YzBjNzY5OWZmN2UzZmE1MTU0Yg==
5
5
  data.tar.gz: !binary |-
6
- Zjk1NDg5MDkxZmZlYjk2MzI4YzA2ZWY1MWQ2ZWEzYjY5MDEzMTdiMg==
6
+ NjAzZTRkNGNmOWY0MTg1MTQxZWVjMWI3OTk2NjdmYTZhYzhhOGMzYg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MTY5NjlkMDE0MmI0NDdhMDM1MTJkYzU3YzMwYThjNmJjOTNmYzBiNzEzZDRi
10
- YjQ5OTZjYmRmZTI5ZmM5ODgyNmVjOWUxZmUzNzFjODBmYjNkMTZkOWIyMjA1
11
- ODliYzA3ODdiOTBlNWFiZWFmNmJhMGY1MzA5NGE4OTkzMWMwOGE=
9
+ M2Y3ZDVlM2FlMDk4OTQ4NjEwZjk0OTZiMjhjMzlhN2JkZjIzMGI1NGY1YWM2
10
+ MjdkODhjZDVkMGY3NmU2OWU4N2ZiYTVjZTJkYzczODBmZDgzMTg2N2VjYTI1
11
+ ODZmMWJiZDk0OWI3NTliN2Q3NWZhN2ZlMDg3ZjM1ZTRmN2MxNWM=
12
12
  data.tar.gz: !binary |-
13
- M2NjY2EzMWU0ZDU1YWJjYTU3N2I5ODJkYmMzODc5ODQ0ZjI5OTdlNGU1NDFj
14
- ZmIwNDhiMzFkMWIxNGVlYTA0N2M0MzkxM2JlZTg1OTlmMmFkZDU5NmVkYTM5
15
- ZDIyNjg2ZDEzYmUwMGMxMWRkZTUwMWJjN2VkMjcwMGQ1YTVkZmM=
13
+ OTg2NmNjNDU4ZDM0MmIwMjk5OWUwZDk4OGNjNjNjMDAzZTY1YTllYjY0NDBh
14
+ OGYyMGNmNzlkZTI0YmJhYzE4M2FiMzYwZTdjZDY2OGFlYzFmNDYzOTk3Nzlj
15
+ NjE4NjMwMjQ3YTRjMTNlNjhmMTI2YzZlNTJiNDFiMDE1ODQ1OGY=
data/bin/mr_bump CHANGED
@@ -99,7 +99,7 @@ unless develop
99
99
  puts github_client.sorted_prs(MrBump.git_config.path)
100
100
  loop do
101
101
  print 'Enter the PR number to merge : '
102
- pr_id = gets.chomp
102
+ pr_id = STDIN.gets.chomp
103
103
  if options[:dryrun]
104
104
  puts "dryrun: Would merge ##{pr_id}"
105
105
  else
@@ -205,10 +205,13 @@ menu '[A]ccept these changes / Manually [E]dit / [C]ancel Release' do |choice|
205
205
  MrBump.file_prepend(changelog, md_changes) unless options[:dryrun]
206
206
  end
207
207
 
208
- if run("git commit -m 'Bump version to #{new_release}' -- #{changelog}") &&
208
+ push_branch_cmd = develop ? "git push --set-upstream origin #{new_branch}" : 'git push'
209
+
210
+ if (!develop || run("git checkout -b #{new_branch}")) &&
211
+ run("git commit -m 'Bump version to #{new_release}' -- #{changelog}") &&
209
212
  run("git tag #{new_release}") &&
210
- run('git push && git push --tags') &&
211
- (!develop || run("git checkout -b #{new_branch} && git push --set-upstream origin #{new_branch}"))
213
+ run(push_branch_cmd) &&
214
+ run("git push origin refs/tags/#{new_release}")
212
215
  MrBump.slack_notifier(new_release, changes) unless options[:dryrun]
213
216
 
214
217
  branch_type = master ? 'master' : 'release'
data/defaults.yml CHANGED
@@ -24,7 +24,7 @@
24
24
  # - comment_lines: Array of all lines in commit comment
25
25
  # - first_commit_line: The first line of the commit comment
26
26
  # - comment_body: The rest of the lines in the comment
27
- markdown_template: " * {{branch_type}} - {{dev_id}} - {{first_comment_line}}{{#comment_body}}\n {{.}}{{/comment_body}}"
27
+ markdown_template: " * {{branch_type}} - {{#dev_id}}{{.}} - {{/dev_id}}{{first_comment_line}}{{#comment_body}}\n {{.}}{{/comment_body}}"
28
28
 
29
29
  # Prefix for release branches, this allows arbitrary text to be added before the version number on a release branch
30
30
  release_prefix: release/
data/lib/mr_bump.rb CHANGED
@@ -113,7 +113,7 @@ module MrBump
113
113
  def self.change_log_items_for_range(rev, head)
114
114
  ignored_branch = Regexp.new("^(#{release_branch_regex}|master|develop)$")
115
115
  make_change = lambda do |title, comment = []|
116
- change = MrBump::Change.new(config_file, title, comment)
116
+ change = MrBump::Change.from_gitlog(config_file, title, comment)
117
117
  change unless ignored_branch.match(change.branch_name)
118
118
  end
119
119
 
@@ -146,7 +146,7 @@ module MrBump
146
146
 
147
147
  def self.slack_notifier(version, changelog)
148
148
  if config_file.key? 'slack'
149
- MrBump::Slack.new(git_config, config_file['slack']).bump(version, changelog)
149
+ MrBump::Slack.new(git_config, config_file).bump(version, changelog)
150
150
  end
151
151
  end
152
152
 
@@ -3,29 +3,36 @@
3
3
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
4
 
5
5
  require 'mustache'
6
+ require 'mr_bump/regex_template'
6
7
 
7
8
  module MrBump
8
9
  # This class acts parses merge information from a commit message string
9
10
  class Change
10
11
  attr_reader :pr_number, :branch_type, :dev_id, :config, :comment_lines, :branch_name
11
12
 
12
- BRANCH_NAME_FMT = '(?<branch_name>(?<dev_id>\w+[-_]?\d+)?([\w\d\-_/\.])*)'.freeze
13
- BRANCH_FMT = "((?<branch_type>bugfix|feature|hotfix)/)?#{BRANCH_NAME_FMT}".freeze
14
- MERGE_PR_FMT = "^Merge pull request #(?<pr_number>\\d+) from [\\w\\-_]+/#{BRANCH_FMT}".freeze
15
- MERGE_MANUAL_FMT = "^Merge branch '#{BRANCH_FMT}'".freeze
16
- MERGE_REGEX = Regexp.new(MERGE_PR_FMT + '|' + MERGE_MANUAL_FMT).freeze
13
+ BRANCH_TYPES = %w(Bugfix Feature Hotfix Task).freeze
17
14
 
18
- def initialize(config, commit_msg, comment_lines)
19
- matches = MERGE_REGEX.match(commit_msg)
20
- raise ArgumentError, "Couldn't extract merge information from commit message " \
21
- "'#{commit_msg}'" unless matches
15
+ FORMATS = {
16
+ dev_id: '\w+[-_]?\d+',
17
+ branch_type: "#{BRANCH_TYPES.join('|')}",
18
+ pr_number: '\d+',
19
+ first_comment_line: '(?=\w)[^\n]*',
20
+ comment_body: '(?=\w)[^\n]*'
21
+ }.freeze
22
+
23
+ BRANCH_FMT = "((?<branch_type>#{FORMATS[:branch_type]})/)?(?<branch_name>(?<dev_id>#{FORMATS[:dev_id]})?([\\w\\d\\-_/\\.])*)".freeze
24
+ MERGE_PR_FMT = "^Merge pull request #(?<pr_number>#{FORMATS[:pr_number]}) from [\\w\\-_]+/#{BRANCH_FMT}/?".freeze
25
+ MERGE_MANUAL_FMT = "^Merge branch '(#{BRANCH_FMT}/?)'".freeze
26
+ MERGE_REGEX = Regexp.new(MERGE_PR_FMT + '|' + MERGE_MANUAL_FMT, 'i').freeze
27
+
28
+ def initialize(config, branch_type = nil, branch_name = nil, dev_id = nil, pr_number = nil, comment_lines = nil)
22
29
  @config = config
23
- @branch_type = (matches['branch_type'] || 'Task').capitalize
24
- @branch_name = matches['branch_name']
25
- @dev_id = matches['dev_id'] || 'UNKNOWN'
26
- @pr_number = matches['pr_number'] || ''
30
+ @branch_type = (branch_type || 'Task')
31
+ @branch_name = branch_name
32
+ @dev_id = dev_id
33
+ @pr_number = pr_number || ''
27
34
  @comment_lines = Array(comment_lines)
28
- unless @comment_lines.empty? || @dev_id == 'UNKNOWN'
35
+ unless @comment_lines.empty? || @dev_id.nil?
29
36
  id = Regexp.escape(@dev_id)
30
37
  prefix_regex = /^(\[#{id}\]|\(#{id}\)|#{id})\s*([:\-]\s*)?/
31
38
  @comment_lines[0] = @comment_lines[0].sub(prefix_regex, '')
@@ -43,5 +50,44 @@ module MrBump
43
50
  def to_md
44
51
  Mustache.render(config['markdown_template'], self)
45
52
  end
53
+
54
+ def self.from_gitlog(config, commit_msg, comment_lines)
55
+ matches = MERGE_REGEX.match(commit_msg)
56
+ raise ArgumentError, "Couldn't extract merge information from commit message " \
57
+ "'#{commit_msg}'" unless matches
58
+ Change.new(
59
+ config,
60
+ (matches['branch_type'] || 'task').capitalize,
61
+ matches['branch_name'],
62
+ matches['dev_id'],
63
+ matches['pr_number'],
64
+ comment_lines
65
+ )
66
+ end
67
+
68
+ def self.from_md(config, md)
69
+ regex = RegexTemplate.render(config['markdown_template'], FORMATS, 'i')
70
+ matches = regex.match md
71
+ raise ArgumentError, "Couldn't extract merge information from markdown " \
72
+ "'#{md}'" unless matches
73
+ # Convert whole string matches into smaller individual matches
74
+ match_hash = FORMATS.map do |key, reg|
75
+ key = key.to_s
76
+ find = matches.names.include?(key) ? matches[key] : ''
77
+ [key.to_s, find.scan(Regexp.new(reg)).reject(&:empty?)]
78
+ end
79
+ match_hash = Hash[match_hash]
80
+
81
+ comment_lines = match_hash['first_comment_line'] + match_hash['comment_body']
82
+
83
+ Change.new(
84
+ config,
85
+ (match_hash['branch_type'].first || 'task').capitalize,
86
+ nil,
87
+ match_hash['dev_id'].first,
88
+ match_hash['pr_number'].first,
89
+ comment_lines
90
+ )
91
+ end
46
92
  end
47
93
  end
@@ -0,0 +1,57 @@
1
+ # This Source Code Form is subject to the terms of the Mozilla Public
2
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
+
5
+ module MrBump
6
+ class RegexTemplate < Mustache
7
+ def render(data = template, ctx = {}, opts = '')
8
+ Regexp.new(super(data, ctx), opts)
9
+ end
10
+
11
+ class Template < Mustache::Template
12
+ def compile(src = @source)
13
+ Generator.new.compile(tokens(src))
14
+ end
15
+ end
16
+
17
+ def self.templateify(obj, _options = {})
18
+ obj.is_a?(Template) ? obj : Template.new(obj)
19
+ end
20
+
21
+ class Generator < Mustache::Generator
22
+ def str(s)
23
+ Regexp.escape(super)
24
+ end
25
+
26
+ def ev(s)
27
+ "' + (#{s}) + '"
28
+ end
29
+ def compile(exp)
30
+ "'#{compile!(exp)}'"
31
+ end
32
+
33
+ def make_group(names, regex)
34
+ return regex if names.empty?
35
+ "(?<#{names.join('.')}>#{regex})"
36
+ end
37
+
38
+ def on_etag(name, _offset)
39
+ make_group(name[2], ev(compile!(name).to_s))
40
+ end
41
+
42
+ def on_utag(name, _offset)
43
+ make_group(name[2], ev(compile!(name).to_s))
44
+ end
45
+
46
+ def on_section(name, _offset, content, _raw, _delims)
47
+ one_repeat = ev("v = #{compile!(name)}; ctx.push(v); r = '#{compile!(content)}'; ctx.pop; r;")
48
+ make_group(name[2], "(#{one_repeat})*")
49
+ end
50
+
51
+ def on_inverted_section(name, _offset, content, _raw, _delims)
52
+ one_repeat = ev("v = #{compile!(name)}; ctx.push(v); r = '#{compile!(content)}'; ctx.pop; r;")
53
+ make_group( name[2], "(#{one_repeat})?")
54
+ end
55
+ end
56
+ end
57
+ end
data/lib/mr_bump/slack.rb CHANGED
@@ -8,12 +8,14 @@ module MrBump
8
8
  class Slack
9
9
  attr_accessor :webhook, :username, :jira_url, :icon, :git
10
10
 
11
- def initialize(git_config, opts)
11
+ def initialize(git_config, config)
12
+ opts = config['slack'] || {}
12
13
  raise ArgumentError, 'No Slack webhook found.' unless opts['webhook_url']
13
14
  @webhook = opts['webhook_url']
14
15
  @username = opts['username'] || 'Mr Bump'
15
16
  @jira_url = opts['jira_url']
16
17
  @icon = Array(opts['icon']).sample
18
+ @config = config
17
19
  @git = git_config
18
20
  end
19
21
 
@@ -29,7 +31,13 @@ module MrBump
29
31
  end
30
32
 
31
33
  def jira_ids(changes)
32
- changes.split('* ').map { |i| i.split(' - ', 3)[1] }.compact
34
+ changes.split(/$\n?(?=\s*\*)/).map do |i|
35
+ begin
36
+ MrBump::Change.from_md(@config, i).dev_id
37
+ rescue ArgumentError
38
+ nil
39
+ end
40
+ end.compact
33
41
  end
34
42
 
35
43
  def jira_urls(changes)
data/spec/change_spec.rb CHANGED
@@ -8,275 +8,537 @@ require 'mr_bump/change'
8
8
  describe MrBump::Change do
9
9
  let(:config) do
10
10
  {
11
- 'markdown_template' => ' * {{branch_type}} - {{dev_id}} - {{first_comment_line}}' \
12
- "{{#comment_body}}\n {{.}}{{/comment_body}}"
11
+ 'markdown_template' => ' * {{branch_type}} - {{#dev_id}}{{.}} - {{/dev_id}}' \
12
+ "{{first_comment_line}}{{#comment_body}}\n {{.}}{{/comment_body}}"
13
13
  }
14
14
  end
15
15
 
16
- let(:change) { described_class.new(config, merge_str, ['Line 1', 'Line 2']) }
16
+ context 'when loading from git log message' do
17
+ let(:change) { described_class.from_gitlog(config, merge_str, ['Line 1', 'Line 2']) }
17
18
 
18
- context 'when given a merge string in the default PR format for a feature' do
19
- let(:merge_str) { 'Merge pull request #555 from AGithubUsername/feature/DEV-1_Stuff' }
19
+ context 'when given a merge string in the default PR format for a feature' do
20
+ let(:merge_str) { 'Merge pull request #555 from AGithubUsername/feature/DEV-1_Stuff' }
20
21
 
21
- it 'extracts the correct PR Number' do
22
- expect(change.pr_number).to eq('555')
23
- end
22
+ it 'extracts the correct PR Number' do
23
+ expect(change.pr_number).to eq('555')
24
+ end
24
25
 
25
- it 'extracts the correct branch type' do
26
- expect(change.branch_type).to eq('Feature')
27
- end
26
+ it 'extracts the correct branch type' do
27
+ expect(change.branch_type).to eq('Feature')
28
+ end
28
29
 
29
- it 'extracts the correct dev ID' do
30
- expect(change.dev_id).to eq('DEV-1')
31
- end
30
+ it 'extracts the correct dev ID' do
31
+ expect(change.dev_id).to eq('DEV-1')
32
+ end
32
33
 
33
- it 'renders to markdown correctly' do
34
- expect(change.to_md).to eq(" * Feature - DEV-1 - Line 1\n Line 2")
34
+ it 'renders to markdown correctly' do
35
+ expect(change.to_md).to eq(" * Feature - DEV-1 - Line 1\n Line 2")
36
+ end
35
37
  end
36
- end
37
38
 
38
- context 'when given a merge string in the default PR format for a feature' do
39
- let(:merge_str) { 'Merge pull request #555 from AGithubUsername/feature/Stuff' }
39
+ context 'when given a merge string in the default PR format for a feature' do
40
+ let(:merge_str) { 'Merge pull request #555 from AGithubUsername/feature/Stuff' }
40
41
 
41
- it 'extracts the correct PR Number' do
42
- expect(change.pr_number).to eq('555')
43
- end
42
+ it 'extracts the correct PR Number' do
43
+ expect(change.pr_number).to eq('555')
44
+ end
44
45
 
45
- it 'extracts the correct branch type' do
46
- expect(change.branch_type).to eq('Feature')
47
- end
46
+ it 'extracts the correct branch type' do
47
+ expect(change.branch_type).to eq('Feature')
48
+ end
48
49
 
49
- it 'defaults the dev ID to UNKNOWN' do
50
- expect(change.dev_id).to eq('UNKNOWN')
51
- end
50
+ it 'fails to extract dev ID' do
51
+ expect(change.dev_id).to be_nil
52
+ end
52
53
 
53
- it 'renders to markdown correctly' do
54
- expect(change.to_md).to eq(" * Feature - UNKNOWN - Line 1\n Line 2")
54
+ it 'renders to markdown correctly' do
55
+ expect(change.to_md).to eq(" * Feature - Line 1\n Line 2")
56
+ end
55
57
  end
56
- end
57
58
 
58
- context 'when given a merge string in the default PR format for a bugfix' do
59
- let(:merge_str) { 'Merge pull request #555 from AGithubUsername/bugfix/DEV-1_Stuff' }
59
+ context 'when given a merge string in the default PR format for a bugfix' do
60
+ let(:merge_str) { 'Merge pull request #555 from AGithubUsername/bugfix/DEV-1_Stuff' }
60
61
 
61
- it 'extracts the correct PR Number' do
62
- expect(change.pr_number).to eq('555')
63
- end
62
+ it 'extracts the correct PR Number' do
63
+ expect(change.pr_number).to eq('555')
64
+ end
64
65
 
65
- it 'extracts the correct branch type' do
66
- expect(change.branch_type).to eq('Bugfix')
67
- end
66
+ it 'extracts the correct branch type' do
67
+ expect(change.branch_type).to eq('Bugfix')
68
+ end
68
69
 
69
- it 'extracts the correct dev ID' do
70
- expect(change.dev_id).to eq('DEV-1')
71
- end
70
+ it 'extracts the correct dev ID' do
71
+ expect(change.dev_id).to eq('DEV-1')
72
+ end
72
73
 
73
- it 'renders to markdown correctly' do
74
- expect(change.to_md).to eq(" * Bugfix - DEV-1 - Line 1\n Line 2")
74
+ it 'renders to markdown correctly' do
75
+ expect(change.to_md).to eq(" * Bugfix - DEV-1 - Line 1\n Line 2")
76
+ end
75
77
  end
76
- end
77
78
 
78
- context 'when given a merge string in the default PR format for a bugfix' do
79
- let(:merge_str) { 'Merge pull request #555 from AGithubUsername/bugfix/Stuff' }
79
+ context 'when given a merge string in the default PR format for a bugfix' do
80
+ let(:merge_str) { 'Merge pull request #555 from AGithubUsername/bugfix/Stuff' }
80
81
 
81
- it 'extracts the correct PR Number' do
82
- expect(change.pr_number).to eq('555')
83
- end
82
+ it 'extracts the correct PR Number' do
83
+ expect(change.pr_number).to eq('555')
84
+ end
84
85
 
85
- it 'extracts the correct branch type' do
86
- expect(change.branch_type).to eq('Bugfix')
87
- end
86
+ it 'extracts the correct branch type' do
87
+ expect(change.branch_type).to eq('Bugfix')
88
+ end
88
89
 
89
- it 'defaults the dev ID to UNKNOWN' do
90
- expect(change.dev_id).to eq('UNKNOWN')
91
- end
90
+ it 'fails to extract dev ID' do
91
+ expect(change.dev_id).to be_nil
92
+ end
92
93
 
93
- it 'renders to markdown correctly' do
94
- expect(change.to_md).to eq(" * Bugfix - UNKNOWN - Line 1\n Line 2")
94
+ it 'renders to markdown correctly' do
95
+ expect(change.to_md).to eq(" * Bugfix - Line 1\n Line 2")
96
+ end
95
97
  end
96
- end
97
98
 
98
- context 'when given a merge string in the default PR format for a hotfix' do
99
- let(:merge_str) { 'Merge pull request #555 from AGithubUsername/hotfix/DEV-1_Stuff' }
99
+ context 'when given a merge string in the default PR format for a hotfix' do
100
+ let(:merge_str) { 'Merge pull request #555 from AGithubUsername/hotfix/DEV-1_Stuff' }
100
101
 
101
- it 'extracts the correct PR Number' do
102
- expect(change.pr_number).to eq('555')
103
- end
102
+ it 'extracts the correct PR Number' do
103
+ expect(change.pr_number).to eq('555')
104
+ end
104
105
 
105
- it 'extracts the correct branch type' do
106
- expect(change.branch_type).to eq('Hotfix')
107
- end
106
+ it 'extracts the correct branch type' do
107
+ expect(change.branch_type).to eq('Hotfix')
108
+ end
108
109
 
109
- it 'extracts the correct dev ID' do
110
- expect(change.dev_id).to eq('DEV-1')
111
- end
110
+ it 'extracts the correct dev ID' do
111
+ expect(change.dev_id).to eq('DEV-1')
112
+ end
112
113
 
113
- it 'renders to markdown correctly' do
114
- expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1\n Line 2")
114
+ it 'renders to markdown correctly' do
115
+ expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1\n Line 2")
116
+ end
115
117
  end
116
- end
117
118
 
118
- context 'when given a merge string in the default PR format for a hotfix' do
119
- let(:merge_str) { 'Merge pull request #555 from AGithubUsername/hotfix/Stuff' }
119
+ context 'when given a merge string in the default PR format for a hotfix' do
120
+ let(:merge_str) { 'Merge pull request #555 from AGithubUsername/hotfix/Stuff' }
120
121
 
121
- it 'extracts the correct PR Number' do
122
- expect(change.pr_number).to eq('555')
123
- end
122
+ it 'extracts the correct PR Number' do
123
+ expect(change.pr_number).to eq('555')
124
+ end
124
125
 
125
- it 'extracts the correct branch type' do
126
- expect(change.branch_type).to eq('Hotfix')
127
- end
126
+ it 'extracts the correct branch type' do
127
+ expect(change.branch_type).to eq('Hotfix')
128
+ end
128
129
 
129
- it 'defaults the dev ID to UNKNOWN' do
130
- expect(change.dev_id).to eq('UNKNOWN')
131
- end
130
+ it 'fails to extract dev ID' do
131
+ expect(change.dev_id).to be_nil
132
+ end
132
133
 
133
- it 'renders to markdown correctly' do
134
- expect(change.to_md).to eq(" * Hotfix - UNKNOWN - Line 1\n Line 2")
134
+ it 'renders to markdown correctly' do
135
+ expect(change.to_md).to eq(" * Hotfix - Line 1\n Line 2")
136
+ end
135
137
  end
136
- end
137
138
 
138
- context 'when given a merge string in the default manual format for a feature' do
139
- let(:merge_str) { "Merge branch 'feature/DEV-1_Stuff'" }
139
+ context 'when given a merge string in the default manual format for a feature' do
140
+ let(:merge_str) { "Merge branch 'feature/DEV-1_Stuff'" }
140
141
 
141
- it 'defaults PR Number to a blank string' do
142
- expect(change.pr_number).to eq('')
143
- end
142
+ it 'defaults PR Number to a blank string' do
143
+ expect(change.pr_number).to eq('')
144
+ end
144
145
 
145
- it 'extracts the correct branch type' do
146
- expect(change.branch_type).to eq('Feature')
147
- end
146
+ it 'extracts the correct branch type' do
147
+ expect(change.branch_type).to eq('Feature')
148
+ end
148
149
 
149
- it 'extracts the correct dev ID' do
150
- expect(change.dev_id).to eq('DEV-1')
151
- end
150
+ it 'extracts the correct dev ID' do
151
+ expect(change.dev_id).to eq('DEV-1')
152
+ end
152
153
 
153
- it 'renders to markdown correctly' do
154
- expect(change.to_md).to eq(" * Feature - DEV-1 - Line 1\n Line 2")
154
+ it 'renders to markdown correctly' do
155
+ expect(change.to_md).to eq(" * Feature - DEV-1 - Line 1\n Line 2")
156
+ end
155
157
  end
156
- end
157
158
 
158
- context 'when given a merge string in the default PR format for a feature' do
159
- let(:merge_str) { "Merge branch 'feature/Stuff'" }
159
+ context 'when given a merge string in the default PR format for a feature' do
160
+ let(:merge_str) { "Merge branch 'feature/Stuff'" }
160
161
 
161
- it 'defaults PR Number to a blank string' do
162
- expect(change.pr_number).to eq('')
163
- end
162
+ it 'defaults PR Number to a blank string' do
163
+ expect(change.pr_number).to eq('')
164
+ end
164
165
 
165
- it 'extracts the correct branch type' do
166
- expect(change.branch_type).to eq('Feature')
167
- end
166
+ it 'extracts the correct branch type' do
167
+ expect(change.branch_type).to eq('Feature')
168
+ end
169
+
170
+ it 'fails to extract dev ID' do
171
+ expect(change.dev_id).to be_nil
172
+ end
168
173
 
169
- it 'defaults the dev ID to UNKNOWN' do
170
- expect(change.dev_id).to eq('UNKNOWN')
174
+ it 'renders to markdown correctly' do
175
+ expect(change.to_md).to eq(" * Feature - Line 1\n Line 2")
176
+ end
171
177
  end
172
178
 
173
- it 'renders to markdown correctly' do
174
- expect(change.to_md).to eq(" * Feature - UNKNOWN - Line 1\n Line 2")
179
+ context 'when given a merge string in the default manual format for a bugfix' do
180
+ let(:merge_str) { "Merge branch 'bugfix/DEV-1_Stuff'" }
181
+
182
+ it 'defaults PR Number to a blank string' do
183
+ expect(change.pr_number).to eq('')
184
+ end
185
+
186
+ it 'extracts the correct branch type' do
187
+ expect(change.branch_type).to eq('Bugfix')
188
+ end
189
+
190
+ it 'extracts the correct dev ID' do
191
+ expect(change.dev_id).to eq('DEV-1')
192
+ end
193
+
194
+ it 'renders to markdown correctly' do
195
+ expect(change.to_md).to eq(" * Bugfix - DEV-1 - Line 1\n Line 2")
196
+ end
175
197
  end
176
- end
177
198
 
178
- context 'when given a merge string in the default manual format for a bugfix' do
179
- let(:merge_str) { "Merge branch 'bugfix/DEV-1_Stuff'" }
199
+ context 'when given a merge string in the default PR format for a bugfix' do
200
+ let(:merge_str) { "Merge branch 'bugfix/Stuff'" }
201
+
202
+ it 'defaults PR Number to a blank string' do
203
+ expect(change.pr_number).to eq('')
204
+ end
205
+
206
+ it 'extracts the correct branch type' do
207
+ expect(change.branch_type).to eq('Bugfix')
208
+ end
209
+
210
+ it 'fails to extract dev ID' do
211
+ expect(change.dev_id).to be_nil
212
+ end
180
213
 
181
- it 'defaults PR Number to a blank string' do
182
- expect(change.pr_number).to eq('')
214
+ it 'renders to markdown correctly' do
215
+ expect(change.to_md).to eq(" * Bugfix - Line 1\n Line 2")
216
+ end
183
217
  end
184
218
 
185
- it 'extracts the correct branch type' do
186
- expect(change.branch_type).to eq('Bugfix')
219
+ context 'when given a merge string in the default manual format for a hotfix' do
220
+ let(:merge_str) { "Merge branch 'hotfix/DEV-1_Stuff'" }
221
+
222
+ it 'defaults PR Number to a blank string' do
223
+ expect(change.pr_number).to eq('')
224
+ end
225
+
226
+ it 'extracts the correct branch type' do
227
+ expect(change.branch_type).to eq('Hotfix')
228
+ end
229
+
230
+ it 'extracts the correct dev ID' do
231
+ expect(change.dev_id).to eq('DEV-1')
232
+ end
233
+
234
+ it 'renders to markdown correctly' do
235
+ expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1\n Line 2")
236
+ end
187
237
  end
188
238
 
189
- it 'extracts the correct dev ID' do
190
- expect(change.dev_id).to eq('DEV-1')
239
+ context 'when given a merge string in the default PR format for a hotfix' do
240
+ let(:merge_str) { "Merge branch 'hotfix/Stuff'" }
241
+
242
+ it 'defaults PR Number to a blank string' do
243
+ expect(change.pr_number).to eq('')
244
+ end
245
+
246
+ it 'extracts the correct branch type' do
247
+ expect(change.branch_type).to eq('Hotfix')
248
+ end
249
+
250
+ it 'fails to extract dev ID' do
251
+ expect(change.dev_id).to be_nil
252
+ end
253
+
254
+ it 'renders to markdown correctly' do
255
+ expect(change.to_md).to eq(" * Hotfix - Line 1\n Line 2")
256
+ end
191
257
  end
192
258
 
193
- it 'renders to markdown correctly' do
194
- expect(change.to_md).to eq(" * Bugfix - DEV-1 - Line 1\n Line 2")
259
+ context 'when no merge type given' do
260
+ let(:merge_str) { 'Merge pull request #1224 from Xulaus/gem_bump' }
261
+ it 'extracts the correct PR Number' do
262
+ expect(change.pr_number).to eq('1224')
263
+ end
264
+
265
+ it 'defaults the branch type to "Task"' do
266
+ expect(change.branch_type).to eq('Task')
267
+ end
268
+
269
+ it 'fails to extract dev ID' do
270
+ expect(change.dev_id).to be_nil
271
+ end
272
+
273
+ it 'renders to markdown correctly' do
274
+ expect(change.to_md).to eq(" * Task - Line 1\n Line 2")
275
+ end
195
276
  end
196
277
  end
197
278
 
198
- context 'when given a merge string in the default PR format for a bugfix' do
199
- let(:merge_str) { "Merge branch 'bugfix/Stuff'" }
279
+ context 'when loading from markdown' do
280
+ let(:change) { described_class.from_md(config, md_str) }
281
+
282
+ context 'with bugfix and no DevID given' do
283
+ let(:md_str) { " * Bugfix - Line 1\n Line 2\n Line 3" }
284
+
285
+ it 'extracts the correct branch type' do
286
+ expect(change.branch_type).to eq('Bugfix')
287
+ end
200
288
 
201
- it 'defaults PR Number to a blank string' do
202
- expect(change.pr_number).to eq('')
289
+ it 'fails to extract dev ID' do
290
+ expect(change.dev_id).to be_nil
291
+ end
292
+
293
+ it 'renders to markdown correctly' do
294
+ expect(change.to_md).to eq(md_str)
295
+ end
203
296
  end
204
297
 
205
- it 'extracts the correct branch type' do
206
- expect(change.branch_type).to eq('Bugfix')
298
+ context 'with feature and no DevID given' do
299
+ let(:md_str) { " * Feature - Line 1\n Line 2\n Line 3" }
300
+
301
+ it 'extracts the correct branch type' do
302
+ expect(change.branch_type).to eq('Feature')
303
+ end
304
+
305
+ it 'fails to extract dev ID' do
306
+ expect(change.dev_id).to be_nil
307
+ end
308
+
309
+ it 'renders to markdown correctly' do
310
+ expect(change.to_md).to eq(md_str)
311
+ end
207
312
  end
208
313
 
209
- it 'defaults the dev ID to UNKNOWN' do
210
- expect(change.dev_id).to eq('UNKNOWN')
314
+ context 'with hotfix and no DevID given' do
315
+ let(:md_str) { " * Hotfix - Line 1\n Line 2\n Line 3" }
316
+
317
+ it 'extracts the correct branch type' do
318
+ expect(change.branch_type).to eq('Hotfix')
319
+ end
320
+
321
+ it 'fails to extract dev ID' do
322
+ expect(change.dev_id).to be_nil
323
+ end
324
+
325
+ it 'renders to markdown correctly' do
326
+ expect(change.to_md).to eq(md_str)
327
+ end
211
328
  end
212
329
 
213
- it 'renders to markdown correctly' do
214
- expect(change.to_md).to eq(" * Bugfix - UNKNOWN - Line 1\n Line 2")
330
+ context 'with task and no DevID given' do
331
+ let(:md_str) { " * Task - Line 1\n Line 2\n Line 3" }
332
+
333
+ it 'defaults the branch type to "Task"' do
334
+ expect(change.branch_type).to eq('Task')
335
+ end
336
+
337
+ it 'fails to extract dev ID' do
338
+ expect(change.dev_id).to be_nil
339
+ end
340
+
341
+ it 'renders to markdown correctly' do
342
+ expect(change.to_md).to eq(md_str)
343
+ end
215
344
  end
216
- end
217
345
 
218
- context 'when given a merge string in the default manual format for a hotfix' do
219
- let(:merge_str) { "Merge branch 'hotfix/DEV-1_Stuff'" }
346
+ context 'with bugfix and no DevID given, and no second line' do
347
+ let(:md_str) { " * Bugfix - Line 1" }
348
+
349
+ it 'extracts the correct branch type' do
350
+ expect(change.branch_type).to eq('Bugfix')
351
+ end
352
+
353
+ it 'fails to extract dev ID' do
354
+ expect(change.dev_id).to be_nil
355
+ end
220
356
 
221
- it 'defaults PR Number to a blank string' do
222
- expect(change.pr_number).to eq('')
357
+ it 'renders to markdown correctly' do
358
+ expect(change.to_md).to eq(md_str)
359
+ end
223
360
  end
224
361
 
225
- it 'extracts the correct branch type' do
226
- expect(change.branch_type).to eq('Hotfix')
362
+ context 'with feature and no DevID given, and no second line' do
363
+ let(:md_str) { " * Feature - Line 1" }
364
+
365
+ it 'extracts the correct branch type' do
366
+ expect(change.branch_type).to eq('Feature')
367
+ end
368
+
369
+ it 'fails to extract dev ID' do
370
+ expect(change.dev_id).to be_nil
371
+ end
372
+
373
+ it 'renders to markdown correctly' do
374
+ expect(change.to_md).to eq(md_str)
375
+ end
227
376
  end
228
377
 
229
- it 'extracts the correct dev ID' do
230
- expect(change.dev_id).to eq('DEV-1')
378
+ context 'with hotfix and no DevID given, and no second line' do
379
+ let(:md_str) { " * Hotfix - Line 1" }
380
+
381
+ it 'extracts the correct branch type' do
382
+ expect(change.branch_type).to eq('Hotfix')
383
+ end
384
+
385
+ it 'fails to extract dev ID' do
386
+ expect(change.dev_id).to be_nil
387
+ end
388
+
389
+ it 'renders to markdown correctly' do
390
+ expect(change.to_md).to eq(md_str)
391
+ end
231
392
  end
232
393
 
233
- it 'renders to markdown correctly' do
234
- expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1\n Line 2")
394
+ context 'with task and no DevID given, and no second line' do
395
+ let(:md_str) { " * Task - Line 1" }
396
+
397
+ it 'defaults the branch type to "Task"' do
398
+ expect(change.branch_type).to eq('Task')
399
+ end
400
+
401
+ it 'fails to extract dev ID' do
402
+ expect(change.dev_id).to be_nil
403
+ end
404
+
405
+ it 'renders to markdown correctly' do
406
+ expect(change.to_md).to eq(md_str)
407
+ end
235
408
  end
236
- end
237
409
 
238
- context 'when given a merge string in the default PR format for a hotfix' do
239
- let(:merge_str) { "Merge branch 'hotfix/Stuff'" }
410
+ context 'with bugfix and no DevID given' do
411
+ let(:md_str) { " * Bugfix - ASDASD-123123 - Line 1\n Line 2\n Line 3" }
412
+
413
+ it 'extracts the correct branch type' do
414
+ expect(change.branch_type).to eq('Bugfix')
415
+ end
416
+
417
+ it 'extracts the correct dev ID' do
418
+ expect(change.dev_id).to eq('ASDASD-123123')
419
+ end
240
420
 
241
- it 'defaults PR Number to a blank string' do
242
- expect(change.pr_number).to eq('')
421
+ it 'renders to markdown correctly' do
422
+ expect(change.to_md).to eq(md_str)
423
+ end
243
424
  end
244
425
 
245
- it 'extracts the correct branch type' do
246
- expect(change.branch_type).to eq('Hotfix')
426
+ context 'with feature and no DevID given' do
427
+ let(:md_str) { " * Feature - WHUT00 - Line 1\n Line 2\n Line 3" }
428
+
429
+ it 'extracts the correct branch type' do
430
+ expect(change.branch_type).to eq('Feature')
431
+ end
432
+
433
+ it 'extracts the correct dev ID' do
434
+ expect(change.dev_id).to eq('WHUT00')
435
+ end
436
+
437
+ it 'renders to markdown correctly' do
438
+ expect(change.to_md).to eq(md_str)
439
+ end
247
440
  end
248
441
 
249
- it 'defaults the dev ID to UNKNOWN' do
250
- expect(change.dev_id).to eq('UNKNOWN')
442
+ context 'with hotfix and no DevID given' do
443
+ let(:md_str) { " * Hotfix - WJNASD-123 - Line 1\n Line 2\n Line 3" }
444
+
445
+ it 'extracts the correct branch type' do
446
+ expect(change.branch_type).to eq('Hotfix')
447
+ end
448
+
449
+ it 'extracts the correct dev ID' do
450
+ expect(change.dev_id).to eq('WJNASD-123')
451
+ end
452
+
453
+ it 'renders to markdown correctly' do
454
+ expect(change.to_md).to eq(md_str)
455
+ end
251
456
  end
252
457
 
253
- it 'renders to markdown correctly' do
254
- expect(change.to_md).to eq(" * Hotfix - UNKNOWN - Line 1\n Line 2")
458
+ context 'with task and no DevID given' do
459
+ let(:md_str) { " * Task - lqiwhuweh213 - Line 1\n Line 2\n Line 3" }
460
+
461
+ it 'defaults the branch type to "Task"' do
462
+ expect(change.branch_type).to eq('Task')
463
+ end
464
+
465
+ it 'extracts the correct dev ID' do
466
+ expect(change.dev_id).to eq('lqiwhuweh213')
467
+ end
468
+
469
+ it 'renders to markdown correctly' do
470
+ expect(change.to_md).to eq(md_str)
471
+ end
255
472
  end
256
- end
257
473
 
258
- context 'when no merge type given' do
259
- let(:merge_str) { 'Merge pull request #1224 from Xulaus/gem_bump' }
260
- it 'extracts the correct PR Number' do
261
- expect(change.pr_number).to eq('1224')
474
+ context 'with bugfix and no DevID given, and no second line' do
475
+ let(:md_str) { " * Bugfix - DEV-123 - Line 1" }
476
+
477
+ it 'extracts the correct branch type' do
478
+ expect(change.branch_type).to eq('Bugfix')
479
+ end
480
+
481
+ it 'extracts the correct dev ID' do
482
+ expect(change.dev_id).to eq('DEV-123')
483
+ end
484
+
485
+ it 'renders to markdown correctly' do
486
+ expect(change.to_md).to eq(md_str)
487
+ end
262
488
  end
263
489
 
264
- it 'defaults the branch type to "Task"' do
265
- expect(change.branch_type).to eq('Task')
490
+ context 'with feature and no DevID given, and no second line' do
491
+ let(:md_str) { " * Feature - SAMBA-123 - Line 1" }
492
+
493
+ it 'extracts the correct branch type' do
494
+ expect(change.branch_type).to eq('Feature')
495
+ end
496
+
497
+ it 'extracts the correct dev ID' do
498
+ expect(change.dev_id).to eq('SAMBA-123')
499
+ end
500
+
501
+ it 'renders to markdown correctly' do
502
+ expect(change.to_md).to eq(md_str)
503
+ end
266
504
  end
267
505
 
268
- it 'defaults the dev ID to UNKNOWN' do
269
- expect(change.dev_id).to eq('UNKNOWN')
506
+ context 'with hotfix and no DevID given, and no second line' do
507
+ let(:md_str) { " * Hotfix - asf1 - Line 1" }
508
+
509
+ it 'extracts the correct branch type' do
510
+ expect(change.branch_type).to eq('Hotfix')
511
+ end
512
+
513
+ it 'extracts the correct dev ID' do
514
+ expect(change.dev_id).to eq('asf1')
515
+ end
516
+
517
+ it 'renders to markdown correctly' do
518
+ expect(change.to_md).to eq(md_str)
519
+ end
270
520
  end
271
521
 
272
- it 'renders to markdown correctly' do
273
- expect(change.to_md).to eq(" * Task - UNKNOWN - Line 1\n Line 2")
522
+ context 'with task and no DevID given, and no second line' do
523
+ let(:md_str) { " * Task - JBAJSDB0123 - Line 1" }
524
+
525
+ it 'defaults the branch type to "Task"' do
526
+ expect(change.branch_type).to eq('Task')
527
+ end
528
+
529
+ it 'extracts the correct dev ID' do
530
+ expect(change.dev_id).to eq('JBAJSDB0123')
531
+ end
532
+
533
+ it 'renders to markdown correctly' do
534
+ expect(change.to_md).to eq(md_str)
535
+ end
274
536
  end
275
537
  end
276
538
 
277
539
  context 'when given a change prefixed with a DevID seperated with a colon' do
278
540
  let(:merge_str) { "Merge branch 'hotfix/DEV-1_Stuff'" }
279
- let(:change) { described_class.new(config, merge_str, ['DEV-1: Line 1', 'Line 2']) }
541
+ let(:change) { described_class.from_gitlog(config, merge_str, ['DEV-1: Line 1', 'Line 2']) }
280
542
 
281
543
  it 'removes the DevID and renders to markdown correctly' do
282
544
  expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1\n Line 2")
@@ -285,7 +547,7 @@ describe MrBump::Change do
285
547
 
286
548
  context 'when given a change prefixed with a DevID seperated with a dash' do
287
549
  let(:merge_str) { "Merge branch 'hotfix/DEV-1_Stuff'" }
288
- let(:change) { described_class.new(config, merge_str, ['DEV-1 - Line 1', 'Line 2']) }
550
+ let(:change) { described_class.from_gitlog(config, merge_str, ['DEV-1 - Line 1', 'Line 2']) }
289
551
 
290
552
  it 'removes the DevID and renders to markdown correctly' do
291
553
  expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1\n Line 2")
@@ -294,7 +556,7 @@ describe MrBump::Change do
294
556
 
295
557
  context 'when given a change prefixed with a DevID seperated with a dash, and in square braces' do
296
558
  let(:merge_str) { "Merge branch 'hotfix/DEV-1_Stuff'" }
297
- let(:change) { described_class.new(config, merge_str, ['[DEV-1] - Line 1', 'Line 2']) }
559
+ let(:change) { described_class.from_gitlog(config, merge_str, ['[DEV-1] - Line 1', 'Line 2']) }
298
560
 
299
561
  it 'removes the DevID and renders to markdown correctly' do
300
562
  expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1\n Line 2")
@@ -303,7 +565,7 @@ describe MrBump::Change do
303
565
 
304
566
  context 'when given a change prefixed with a DevID in square braces' do
305
567
  let(:merge_str) { "Merge branch 'hotfix/DEV-1_Stuff'" }
306
- let(:change) { described_class.new(config, merge_str, ['[DEV-1] Line 1', 'Line 2']) }
568
+ let(:change) { described_class.from_gitlog(config, merge_str, ['[DEV-1] Line 1', 'Line 2']) }
307
569
 
308
570
  it 'removes the DevID and renders to markdown correctly' do
309
571
  expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1\n Line 2")
@@ -312,7 +574,7 @@ describe MrBump::Change do
312
574
 
313
575
  context 'when given a change prefixed with a DevID in round braces' do
314
576
  let(:merge_str) { "Merge branch 'hotfix/DEV-1_Stuff'" }
315
- let(:change) { described_class.new(config, merge_str, ['(DEV-1) Line 1', 'Line 2']) }
577
+ let(:change) { described_class.from_gitlog(config, merge_str, ['(DEV-1) Line 1', 'Line 2']) }
316
578
 
317
579
  it 'removes the DevID and renders to markdown correctly' do
318
580
  expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1\n Line 2")
@@ -321,7 +583,7 @@ describe MrBump::Change do
321
583
 
322
584
  context 'when given a change prefixed with a DevID seperated by space only' do
323
585
  let(:merge_str) { "Merge branch 'hotfix/DEV-1_Stuff'" }
324
- let(:change) { described_class.new(config, merge_str, ['DEV-1 Line 1', 'Line 2']) }
586
+ let(:change) { described_class.from_gitlog(config, merge_str, ['DEV-1 Line 1', 'Line 2']) }
325
587
 
326
588
  it 'leaves the DevID and renders to markdown correctly' do
327
589
  expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1\n Line 2")
@@ -330,7 +592,7 @@ describe MrBump::Change do
330
592
 
331
593
  context 'when given a change postfixed with a DevID in round braces' do
332
594
  let(:merge_str) { "Merge branch 'hotfix/DEV-1_Stuff'" }
333
- let(:change) { described_class.new(config, merge_str, ['Line 1 (DEV-1)', 'Line 2']) }
595
+ let(:change) { described_class.from_gitlog(config, merge_str, ['Line 1 (DEV-1)', 'Line 2']) }
334
596
 
335
597
  it 'leaves the DevID and renders to markdown correctly' do
336
598
  expect(change.to_md).to eq(" * Hotfix - DEV-1 - Line 1 (DEV-1)\n Line 2")
@@ -339,7 +601,7 @@ describe MrBump::Change do
339
601
 
340
602
  context 'when given a change with no description' do
341
603
  let(:merge_str) { "Merge branch 'hotfix/DEV-1_Stuff'" }
342
- let(:change) { described_class.new(config, merge_str, []) }
604
+ let(:change) { described_class.from_gitlog(config, merge_str, []) }
343
605
 
344
606
  it 'renders to markdown correctly' do
345
607
  expect(change.to_md).to eq(" * Hotfix - DEV-1 - ")
data/spec/slack_spec.rb CHANGED
@@ -8,9 +8,11 @@ require 'mr_bump/slack'
8
8
  describe MrBump::Slack do
9
9
  let(:config) do
10
10
  {
11
- 'webhook_url' => webhook_url,
12
- 'username' => username,
13
- 'icon' => icons
11
+ 'slack' => {
12
+ 'webhook_url' => webhook_url,
13
+ 'username' => username,
14
+ 'icon' => icons
15
+ }
14
16
  }
15
17
  end
16
18
  let(:git_config) { {} }
@@ -94,4 +96,51 @@ describe MrBump::Slack do
94
96
  end
95
97
  end
96
98
  end
99
+
100
+ describe '#jira_ids' do
101
+ let(:result) do
102
+ described_class.new(
103
+ {},
104
+ 'slack' => { 'webhook_url' => 'dummy' },
105
+ 'markdown_template' => ' * {{branch_type}} - {{dev_id}} - {{first_comment_line}}' \
106
+ "{{#comment_body}}\n {{.}}{{/comment_body}}"
107
+ ).jira_ids(changes)
108
+ end
109
+
110
+ context 'when fed mixed changes in the default format' do
111
+ let(:changes) do
112
+ <<-CHANGES
113
+ * Task - HSDA-123 - jsldafbaksjdblkab
114
+ * Feature - QUAD-213 - asdbasn
115
+ * Bugfix - UKNO-17 - akssnjlsand;kajnsd
116
+ asmdhakjsdhgkaadsdasdsaafssdfgadfa
117
+ * Hotfix - Yo-421 - kjfnjdns
118
+ CHANGES
119
+ end
120
+ let(:devids) { ['HSDA-123', 'QUAD-213', 'UKNO-17', 'Yo-421'] }
121
+
122
+ it "extracts the DevID's where possible" do
123
+ expect(result).to eq(devids)
124
+ end
125
+ end
126
+
127
+ context "when fed mixed changes without DevID's" do
128
+ let(:changes) do
129
+ <<-CHANGES
130
+ * Task - HSDA-123 - jsldafbaksjdblkab
131
+ * Feature - asd213
132
+ * Bugfix - UKNO-17 - akssnjlsand;kajnsd
133
+ asmdhakjsdhgkaadsdasdsaafssdfgadfa
134
+ * Bugfix - akssnjlsand;kajnsd
135
+ asmdhakjsdhgkaadsdasdsaafssdfgadfa
136
+ * Hotfix - Yo-421 - kjfnjdns
137
+ CHANGES
138
+ end
139
+ let(:devids) { ['HSDA-123', 'UKNO-17', 'Yo-421'] }
140
+
141
+ it "extracts the DevID's where possible" do
142
+ expect(result).to eq(devids)
143
+ end
144
+ end
145
+ end
97
146
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mr_bump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Fitzgerald
@@ -29,30 +29,42 @@ dependencies:
29
29
  name: octokit
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - ! '>='
33
33
  - !ruby/object:Gem::Version
34
34
  version: '3.0'
35
+ - - <=
36
+ - !ruby/object:Gem::Version
37
+ version: '5.0'
35
38
  type: :runtime
36
39
  prerelease: false
37
40
  version_requirements: !ruby/object:Gem::Requirement
38
41
  requirements:
39
- - - ~>
42
+ - - ! '>='
40
43
  - !ruby/object:Gem::Version
41
44
  version: '3.0'
45
+ - - <=
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
42
48
  - !ruby/object:Gem::Dependency
43
49
  name: mustache
44
50
  requirement: !ruby/object:Gem::Requirement
45
51
  requirements:
46
- - - ~>
52
+ - - ! '>='
47
53
  - !ruby/object:Gem::Version
48
54
  version: 0.99.3
55
+ - - <
56
+ - !ruby/object:Gem::Version
57
+ version: '2.0'
49
58
  type: :runtime
50
59
  prerelease: false
51
60
  version_requirements: !ruby/object:Gem::Requirement
52
61
  requirements:
53
- - - ~>
62
+ - - ! '>='
54
63
  - !ruby/object:Gem::Version
55
64
  version: 0.99.3
65
+ - - <
66
+ - !ruby/object:Gem::Version
67
+ version: '2.0'
56
68
  - !ruby/object:Gem::Dependency
57
69
  name: OptionParser
58
70
  requirement: !ruby/object:Gem::Requirement
@@ -95,6 +107,20 @@ dependencies:
95
107
  - - ! '>='
96
108
  - !ruby/object:Gem::Version
97
109
  version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rb-readline
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ! '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
98
124
  - !ruby/object:Gem::Dependency
99
125
  name: simplecov
100
126
  requirement: !ruby/object:Gem::Requirement
@@ -179,6 +205,7 @@ files:
179
205
  - lib/mr_bump/config.rb
180
206
  - lib/mr_bump/git_api.rb
181
207
  - lib/mr_bump/git_config.rb
208
+ - lib/mr_bump/regex_template.rb
182
209
  - lib/mr_bump/slack.rb
183
210
  - lib/mr_bump/version.rb
184
211
  - spec/change_spec.rb