commit2jira 0.1.2 → 0.2.3

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.
data/Gemfile CHANGED
@@ -4,4 +4,6 @@ gem "rake"
4
4
 
5
5
  group :development do
6
6
  gem "rspec"
7
+ gem 'cucumber'
8
+ gem 'aruba'
7
9
  end
@@ -1,7 +1,25 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ aruba (0.4.11)
5
+ childprocess (>= 0.2.3)
6
+ cucumber (>= 1.1.1)
7
+ ffi (>= 1.0.11)
8
+ rspec (>= 2.7.0)
9
+ builder (3.0.0)
10
+ childprocess (0.3.1)
11
+ ffi (~> 1.0.6)
12
+ cucumber (1.1.9)
13
+ builder (>= 2.1.2)
14
+ diff-lcs (>= 1.1.2)
15
+ gherkin (~> 2.9.0)
16
+ json (>= 1.4.6)
17
+ term-ansicolor (>= 1.0.6)
4
18
  diff-lcs (1.1.3)
19
+ ffi (1.0.11)
20
+ gherkin (2.9.3)
21
+ json (>= 1.4.6)
22
+ json (1.6.6)
5
23
  rake (0.9.2)
6
24
  rspec (2.7.0)
7
25
  rspec-core (~> 2.7.0)
@@ -11,10 +29,13 @@ GEM
11
29
  rspec-expectations (2.7.0)
12
30
  diff-lcs (~> 1.1.2)
13
31
  rspec-mocks (2.7.0)
32
+ term-ansicolor (1.0.7)
14
33
 
15
34
  PLATFORMS
16
35
  ruby
17
36
 
18
37
  DEPENDENCIES
38
+ aruba
39
+ cucumber
19
40
  rake
20
41
  rspec
@@ -1,5 +1,7 @@
1
1
  # commit2jira
2
2
 
3
+ [![Build Status](https://buildhive.cloudbees.com/job/lookout/job/commit2jira/badge/icon)](https://buildhive.cloudbees.com/job/lookout/job/commit2jira/)
4
+
3
5
 
4
6
  commit2jira is a simple gem for parsing a commit message for JIRAs referenced
5
7
  in the meta-data block of the commit body.
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../lib")
4
+
5
+ require 'optparse'
6
+ require 'rubygems'
7
+ require 'commit2jira'
8
+
9
+
10
+
11
+ options = {}
12
+ parser = OptionParser.new do |opts|
13
+ opts.banner = "Usage: commit2jira [options]"
14
+
15
+ opts.on('-p', '--projects=PROJECTS', "Comma separated list of JIRA projects") do |p|
16
+ options[:projects] = p.split(',')
17
+ end
18
+ end
19
+
20
+ parser.parse!
21
+
22
+ if options[:projects].nil?
23
+ puts parser
24
+ exit 1
25
+ end
26
+
27
+ found = false
28
+ Commit2Jira.from_message(options[:projects], ARGF.read) do |project, number|
29
+ found = true
30
+ puts "#{project.upcase}-#{number}"
31
+ end
32
+
33
+ unless found
34
+ puts "No JIRAs found!"
35
+ exit 1
36
+ end
37
+
@@ -3,11 +3,11 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'commit2jira'
6
- s.version = "0.1.#{ENV['BUILD_NUMBER'] || 'dev'}"
6
+ s.version = "0.2.#{ENV['BUILD_NUMBER'] || 'dev'}"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["R. Tyler Croy"]
9
- s.email = ["rtyler.croy@mylookout.com"]
10
- s.homepage = 'https://source.flexilis.local/rcroy/commit2jira'
9
+ s.email = ["rtyler.croy@lookout.com"]
10
+ s.homepage = 'https://github.com/lookout/commit2jira'
11
11
  s.summary = %q{a gem for parsing jiras from commits}
12
12
  s.description = %q{Herpy derpy}
13
13
 
@@ -0,0 +1,88 @@
1
+ Feature: Allow piping commit messages into a command line tool
2
+ In order to list the JIRAs for a specific commit
3
+ As a command line user
4
+ I should be able to parse out JIRAs from any bit of text
5
+
6
+
7
+ Scenario: Without any options
8
+ When I run `commit2jira`
9
+ Then the exit status should be 1
10
+ And the output should contain:
11
+ """
12
+ Usage: commit2jira
13
+ """
14
+
15
+ Scenario: With a single project
16
+ Given the commit:
17
+ """
18
+ commit 49060a4b0d7c6e9ddfc20a42eae8dbd93d03b458
19
+ Author: R. Tyler Croy <rtyler.croy@mylookout.com>
20
+ Date: Fri Apr 6 17:29:07 2012 -0700
21
+
22
+ Add the MIT license
23
+
24
+ JIRA: DEMO-1
25
+ """
26
+ When I pipe the commit into `commit2jira -p demo`
27
+ Then the exit status should be 0
28
+ And the output should contain exactly:
29
+ """
30
+ DEMO-1
31
+
32
+ """
33
+
34
+ Scenario: A single project with multiple JIRAs
35
+ Given the commit:
36
+ """
37
+ commit 49060a4b0d7c6e9ddfc20a42eae8dbd93d03b458
38
+ Author: R. Tyler Croy <rtyler.croy@mylookout.com>
39
+ Date: Fri Apr 6 17:29:07 2012 -0700
40
+
41
+ Add the MIT license
42
+
43
+ JIRA: DEMO-1, DEMO-2
44
+ """
45
+ When I pipe the commit into `commit2jira -p demo`
46
+ Then the exit status should be 0
47
+ And the output should contain exactly:
48
+ """
49
+ DEMO-1
50
+ DEMO-2
51
+
52
+ """
53
+
54
+ Scenario: Multiple projects
55
+ Given the commit:
56
+ """
57
+ commit 49060a4b0d7c6e9ddfc20a42eae8dbd93d03b458
58
+ Author: R. Tyler Croy <rtyler.croy@mylookout.com>
59
+ Date: Fri Apr 6 17:29:07 2012 -0700
60
+
61
+ Add the MIT license
62
+
63
+ JIRA: DEMO-1, LAB-2
64
+ """
65
+ When I pipe the commit into `commit2jira -p demo,lab`
66
+ Then the exit status should be 0
67
+ And the output should contain exactly:
68
+ """
69
+ DEMO-1
70
+ LAB-2
71
+
72
+ """
73
+
74
+ Scenario: No referenced JIRAs
75
+ Given the commit:
76
+ """
77
+ commit 49060a4b0d7c6e9ddfc20a42eae8dbd93d03b458
78
+ Author: R. Tyler Croy <rtyler.croy@mylookout.com>
79
+ Date: Fri Apr 6 17:29:07 2012 -0700
80
+
81
+ Add the MIT license
82
+ """
83
+ When I pipe the commit into `commit2jira -p demo`
84
+ Then the exit status should be 1
85
+ And the output should contain:
86
+ """
87
+ No JIRAs found!
88
+ """
@@ -0,0 +1,12 @@
1
+ Given /^the commit:$/ do |commit|
2
+ @commit = commit
3
+ end
4
+
5
+ When /^I pipe the commit into `([^`]*)`$/ do |command|
6
+ step %{I run `#{command}` interactively}
7
+ type(@commit)
8
+ processes.each do |command, process|
9
+ process.stdin.close
10
+ end
11
+ end
12
+
@@ -0,0 +1,3 @@
1
+ require 'aruba/cucumber'
2
+
3
+ ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
@@ -2,10 +2,14 @@
2
2
  require 'rubygems'
3
3
 
4
4
  module Commit2Jira
5
- def from_message(projects, message, &block)
5
+ def from_message(projects, message, precise_match=false, &block)
6
6
  if message.nil? or message.empty?
7
7
  return
8
8
  end
9
+ if precise_match
10
+ message = message.split("\n").select {|line| line.start_with?("JIRA:")}.join("\n")
11
+ end
12
+
9
13
  regex = /\b(#{projects.join('|')})-(\d+)\b/i
10
14
 
11
15
  message.scan(regex) do |match|
@@ -32,5 +32,40 @@ END
32
32
  expected_project.should == found_project
33
33
  expected_number.should == found_number
34
34
  end
35
+
36
+ it "should call the block for two JIRAs with the right projects" do
37
+ expected_projects = ['FOO', 'BAR']
38
+ expected_numbers = [4779, 5013]
39
+ message =<<END
40
+ This is a simple commit message referencing #{expected_projects[0]}-#{expected_numbers[0]}
41
+
42
+ JIRA: #{expected_projects[1]}-#{expected_numbers[1]}
43
+ END
44
+ Commit2Jira.from_message(['foo', 'bar'], message) do |project, number|
45
+ expected_projects.shift if project == expected_projects[0]
46
+ expected_numbers.shift if number == expected_numbers[0]
47
+ end
48
+
49
+ expected_projects.should be_empty
50
+ expected_numbers.should be_empty
51
+ end
52
+
53
+ it "should call the block for only the JIRAs explicitly mentioned when specified" do
54
+ expected_projects = ['BAR', 'BAZ']
55
+ expected_numbers = [5013, 8724]
56
+ message =<<END
57
+ This is a simple commit message referencing FOO-4779
58
+
59
+ JIRA: #{expected_projects[0]}-#{expected_numbers[0]}, #{expected_projects[1]}-#{expected_numbers[1]}
60
+ END
61
+
62
+ Commit2Jira.from_message(['foo', 'bar', 'baz'], message, true) do |project, number|
63
+ expected_projects.shift if project == expected_projects[0]
64
+ expected_numbers.shift if number == expected_numbers[0]
65
+ end
66
+
67
+ expected_projects.should be_empty
68
+ expected_numbers.should be_empty
69
+ end
35
70
  end
36
71
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commit2jira
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
8
  - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.2.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - R. Tyler Croy
@@ -15,15 +15,14 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-04-18 00:00:00 +00:00
19
- default_executable:
18
+ date: 2012-11-15 00:00:00 Z
20
19
  dependencies: []
21
20
 
22
21
  description: Herpy derpy
23
22
  email:
24
- - rtyler.croy@mylookout.com
25
- executables: []
26
-
23
+ - rtyler.croy@lookout.com
24
+ executables:
25
+ - commit2jira
27
26
  extensions: []
28
27
 
29
28
  extra_rdoc_files: []
@@ -35,11 +34,14 @@ files:
35
34
  - LICENSE
36
35
  - README.markdown
37
36
  - Rakefile
37
+ - bin/commit2jira
38
38
  - commit2jira.gemspec
39
+ - features/command_line.feature
40
+ - features/step_definitions/cli_steps.rb
41
+ - features/support/env.rb
39
42
  - lib/commit2jira.rb
40
43
  - spec/commit2jira_spec.rb
41
- has_rdoc: true
42
- homepage: https://source.flexilis.local/rcroy/commit2jira
44
+ homepage: https://github.com/lookout/commit2jira
43
45
  licenses: []
44
46
 
45
47
  post_install_message:
@@ -68,9 +70,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
70
  requirements: []
69
71
 
70
72
  rubyforge_project:
71
- rubygems_version: 1.6.2
73
+ rubygems_version: 1.8.24
72
74
  signing_key:
73
75
  specification_version: 3
74
76
  summary: a gem for parsing jiras from commits
75
77
  test_files:
78
+ - features/command_line.feature
79
+ - features/step_definitions/cli_steps.rb
80
+ - features/support/env.rb
76
81
  - spec/commit2jira_spec.rb