git_tracker 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  tags
19
+ .rvmrc
data/README.md CHANGED
@@ -68,6 +68,26 @@ the top)*
68
68
 
69
69
  ```
70
70
 
71
+ ## Keywords
72
+ You can use the custom keywords that Pivotal Tracker provide with the API.
73
+
74
+ The keywords are [Delivers] and [Fixes]
75
+
76
+ If you use those keywords in your commit message, the keyword will be prepended to the story ID in the commit message.
77
+
78
+ For example:
79
+
80
+ ```bash
81
+ # on branch named `bug/redis_connection_not_initializing_#8675309`
82
+ $ git commit -am "changed the redis connection string [Fixes]"
83
+ ```
84
+
85
+ Will result in a this being appended to the commit message
86
+
87
+ ```bash
88
+ [Fixes #8675309]
89
+ ```
90
+
71
91
  You should then add a [useful and responsible commit message][tpope]. :heart:
72
92
 
73
93
  ### Valid branch names
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
2
+ require 'bundler/gem_tasks'
3
3
  require 'rspec/core/rake_task'
4
4
 
5
5
  RSpec::Core::RakeTask.new(:spec)
data/lib/git_tracker.rb CHANGED
@@ -1,6 +1,6 @@
1
- require "git_tracker/hook"
2
- require "git_tracker/prepare_commit_message"
3
- require "git_tracker/version"
1
+ require 'git_tracker/hook'
2
+ require 'git_tracker/prepare_commit_message'
3
+ require 'git_tracker/version'
4
4
 
5
5
  module GitTracker
6
6
  def self.execute(cmd_arg, *args)
@@ -1,4 +1,5 @@
1
1
  require 'English'
2
+ require 'git_tracker/repository'
2
3
 
3
4
  module GitTracker
4
5
  module Branch
@@ -9,9 +10,15 @@ module GitTracker
9
10
  def self.current
10
11
  branch_path = `git symbolic-ref HEAD`
11
12
 
12
- abort unless $CHILD_STATUS.exitstatus == 0
13
+ Repository.ensure_exists unless exit_successful?
13
14
 
14
15
  branch_path[%r{refs/heads/(?<name>.+)}, :name] || ''
15
16
  end
17
+
18
+ private
19
+
20
+ def self.exit_successful?
21
+ $CHILD_STATUS.exitstatus == 0
22
+ end
16
23
  end
17
24
  end
@@ -10,6 +10,11 @@ module GitTracker
10
10
  @message =~ /^(?!#).*\[(\w+\s)?(#\d+\s)*##{number}(\s#\d+)*(\s\w+)?\]/io
11
11
  end
12
12
 
13
+ def keyword
14
+ @message =~ /\[(Delivers|Fixes)\]/
15
+ $1
16
+ end
17
+
13
18
  def append(text)
14
19
  body, postscript = parse(@message)
15
20
  new_message = format_message(body, text, postscript)
@@ -23,7 +28,7 @@ module GitTracker
23
28
 
24
29
  def parse(message)
25
30
  lines = message.split($/)
26
- body = lines.take_while { |line| !line.start_with?("#") }
31
+ body = lines.take_while { |line| !line.start_with?('#') }
27
32
  postscript = lines.slice(body.length..-1)
28
33
  [body.join("\n"), postscript.join("\n")]
29
34
  end
@@ -16,15 +16,23 @@ module GitTracker
16
16
  end
17
17
 
18
18
  def run
19
- story = story_number_from_branch
19
+ exit_when_commit_exists
20
20
 
21
+ story = story_number_from_branch
21
22
  message = CommitMessage.new(file)
22
23
  exit if message.mentions_story?(story)
23
- message.append("[##{story}]")
24
+ keyword = message.keyword
25
+
26
+ message_addition = [keyword, "##{story}"].compact.join(' ')
27
+ message.append("[#{message_addition}]")
24
28
  end
25
29
 
26
30
  private
27
31
 
32
+ def exit_when_commit_exists
33
+ exit if source == 'commit'
34
+ end
35
+
28
36
  def story_number_from_branch
29
37
  story = Branch.story_number
30
38
  exit unless story
@@ -9,5 +9,9 @@ module GitTracker
9
9
  path
10
10
  end
11
11
 
12
+ def self.ensure_exists
13
+ root
14
+ end
15
+
12
16
  end
13
17
  end
@@ -1,3 +1,3 @@
1
1
  module GitTracker
2
- VERSION = "1.1.0"
2
+ VERSION = '1.2.0'
3
3
  end
@@ -1,3 +1,4 @@
1
+ require 'spec_helper'
1
2
  require 'git_tracker/branch'
2
3
 
3
4
  describe GitTracker::Branch do
@@ -16,40 +17,41 @@ describe GitTracker::Branch do
16
17
  subject.current
17
18
  end
18
19
 
19
- it 'aborts with non-zero exit status when not in a Git repository' do
20
- stub_branch(nil, 128)
20
+ it 'ensures in a Git repository when looking for HEAD exits with non-zero status' do
21
+ stub_branch('', 128)
21
22
 
22
- -> { subject.current }.should raise_error SystemExit
23
+ GitTracker::Repository.should_receive(:ensure_exists)
24
+ subject.current
23
25
  end
24
26
  end
25
27
 
26
28
  describe '.story_number' do
27
- context "Current branch has a story number" do
28
- it "finds the story that starts with a hash" do
29
+ context 'Current branch has a story number' do
30
+ it 'finds the story that starts with a hash' do
29
31
  stub_branch('refs/heads/a_very_descriptive_name_#8675309')
30
32
  subject.story_number.should == '8675309'
31
33
  end
32
34
 
33
- it "finds the story without a leading hash" do
35
+ it 'finds the story without a leading hash' do
34
36
  stub_branch('refs/heads/a_very_descriptive_name_1235309')
35
37
  subject.story_number.should == '1235309'
36
38
  end
37
39
 
38
- it "finds the story following a forward hash" do
40
+ it 'finds the story following a forward hash' do
39
41
  stub_branch('refs/heads/alindeman/8675309_got_her_number')
40
42
  subject.story_number.should == '8675309'
41
43
  end
42
44
  end
43
45
 
44
- context "The current branch doesn't have a story number" do
45
- it "finds no story" do
46
+ context 'The current branch does not have a story number' do
47
+ it 'finds no story' do
46
48
  stub_branch('refs/heads/a_very_descriptive_name_without_a_#number')
47
49
  subject.story_number.should_not be
48
50
  end
49
51
  end
50
52
 
51
- context "Not on a branch (HEAD doesn't exist)" do
52
- it "finds no story" do
53
+ context 'Not on a branch (HEAD does not exist)' do
54
+ it 'finds no story' do
53
55
  stub_branch('')
54
56
  subject.story_number.should_not be
55
57
  end
@@ -6,76 +6,88 @@ describe GitTracker::CommitMessage do
6
6
  include CommitMessageHelper
7
7
 
8
8
  subject { described_class.new(file) }
9
- let(:file) { "COMMIT_EDITMSG" }
9
+ let(:file) { 'COMMIT_EDITMSG' }
10
10
 
11
- it "requires path to the temporary commit message file" do
12
- -> { GitTracker::CommitMessage.new }.should raise_error ArgumentError
11
+ it 'requires path to the temporary commit message file' do
12
+ lambda { GitTracker::CommitMessage.new }.should raise_error ArgumentError
13
13
  end
14
14
 
15
- describe "#mentions_story?" do
16
- def stub_commit_message(story_text)
17
- File.stub(:read).with(file) { example_commit_message(story_text) }
15
+ def stub_commit_message(story_text)
16
+ File.stub(:read).with(file) { example_commit_message(story_text) }
17
+ end
18
+
19
+ describe '#keyword' do
20
+ it 'should return the correct keyword' do
21
+ stub_commit_message('[Delivers]')
22
+ subject.keyword.should == 'Delivers'
23
+ end
24
+
25
+ it 'should return nil when there no keyword matching' do
26
+ stub_commit_message('[Something]')
27
+ subject.keyword.should be_nil
18
28
  end
29
+ end
19
30
 
20
- context "commit message contains the special Pivotal Tracker story syntax" do
21
- it "allows just the number" do
22
- stub_commit_message("[#8675309]")
23
- subject.should be_mentions_story("8675309")
31
+ describe '#mentions_story?' do
32
+ context 'commit message contains the special Pivotal Tracker story syntax' do
33
+ it 'allows just the number' do
34
+ stub_commit_message('[#8675309]')
35
+ subject.should be_mentions_story('8675309')
24
36
  end
25
37
 
26
- it "allows multiple numbers" do
27
- stub_commit_message("[#99 #777 #8675309 #111222]")
28
- subject.should be_mentions_story("99")
29
- subject.should be_mentions_story("777")
30
- subject.should be_mentions_story("8675309")
31
- subject.should be_mentions_story("111222")
38
+ it 'allows multiple numbers' do
39
+ stub_commit_message('[#99 #777 #8675309 #111222]')
40
+ subject.should be_mentions_story('99')
41
+ subject.should be_mentions_story('777')
42
+ subject.should be_mentions_story('8675309')
43
+ subject.should be_mentions_story('111222')
32
44
  end
33
45
 
34
- it "allows state change before number" do
35
- stub_commit_message("[Fixes #8675309]")
36
- subject.should be_mentions_story("8675309")
46
+ it 'allows state change before number' do
47
+ stub_commit_message('[Fixes #8675309]')
48
+ subject.should be_mentions_story('8675309')
37
49
  end
38
50
 
39
- it "allows state change after the number" do
40
- stub_commit_message("[#8675309 Delivered]")
41
- subject.should be_mentions_story("8675309")
51
+ it 'allows state change after the number' do
52
+ stub_commit_message('[#8675309 Delivered]')
53
+ subject.should be_mentions_story('8675309')
42
54
  end
43
55
 
44
- it "allows surrounding text" do
45
- stub_commit_message("derp de #herp [Fixes #8675309] de herp-ity derp")
46
- subject.should be_mentions_story("8675309")
56
+ it 'allows surrounding text' do
57
+ stub_commit_message('derp de #herp [Fixes #8675309] de herp-ity derp')
58
+ subject.should be_mentions_story('8675309')
47
59
  end
48
60
  end
49
61
 
50
- context "commit message doesn't contain the special Pivotal Tracker story syntax" do
51
- it "requires brackets" do
52
- stub_commit_message("#8675309")
53
- subject.should_not be_mentions_story("8675309")
62
+ context 'commit message doesn not contain the special Pivotal Tracker story syntax' do
63
+ it 'requires brackets' do
64
+ stub_commit_message('#8675309')
65
+ subject.should_not be_mentions_story('8675309')
54
66
  end
55
67
 
56
- it "requires a pound sign" do
57
- stub_commit_message("[8675309]")
58
- subject.should_not be_mentions_story("8675309")
68
+ it 'requires a pound sign' do
69
+ stub_commit_message('[8675309]')
70
+ subject.should_not be_mentions_story('8675309')
59
71
  end
60
72
 
61
- it "doesn't allow the bare number" do
62
- stub_commit_message("8675309")
63
- subject.should_not be_mentions_story("8675309")
73
+ it 'does not allow the bare number' do
74
+ stub_commit_message('8675309')
75
+ subject.should_not be_mentions_story('8675309')
64
76
  end
65
77
 
66
- it "doesn't allow multiple state changes" do
67
- stub_commit_message("[Fixes Deploys #8675309]")
68
- subject.should_not be_mentions_story("8675309")
78
+ it 'does not allow multiple state changes' do
79
+ stub_commit_message('[Fixes Deploys #8675309]')
80
+ subject.should_not be_mentions_story('8675309')
69
81
  end
70
82
 
71
- it "doesn't allow comments" do
72
- stub_commit_message("#[#8675309]")
73
- subject.should_not be_mentions_story("8675309")
83
+ it 'does not allow comments' do
84
+ stub_commit_message('#[#8675309]')
85
+ subject.should_not be_mentions_story('8675309')
74
86
  end
75
87
  end
76
88
  end
77
89
 
78
- describe "#append" do
90
+ describe '#append' do
79
91
  let(:fake_file) { GitTracker::FakeFile.new }
80
92
  before do
81
93
  File.stub(:open).and_yield(fake_file)
@@ -84,9 +96,9 @@ describe GitTracker::CommitMessage do
84
96
  File.stub(:read) { message }
85
97
  end
86
98
 
87
- it "handles no existing message" do
99
+ it 'handles no existing message' do
88
100
  stub_original_commit_message("\n\n# some other comments\n")
89
- subject.append("[#8675309]")
101
+ subject.append('[#8675309]')
90
102
 
91
103
  fake_file.content.should == <<-COMMIT_MESSAGE.strip_heredoc
92
104
 
@@ -96,9 +108,9 @@ describe GitTracker::CommitMessage do
96
108
  COMMIT_MESSAGE
97
109
  end
98
110
 
99
- it "preserves existing messages" do
111
+ it 'preserves existing messages' do
100
112
  stub_original_commit_message("A first line\n\nWith more here\n# other comments\n")
101
- subject.append("[#8675309]")
113
+ subject.append('[#8675309]')
102
114
 
103
115
  fake_file.content.should == <<-COMMIT_MESSAGE.strip_heredoc
104
116
  A first line
@@ -110,9 +122,9 @@ describe GitTracker::CommitMessage do
110
122
  COMMIT_MESSAGE
111
123
  end
112
124
 
113
- it "preserves line breaks in comments" do
125
+ it 'preserves line breaks in comments' do
114
126
  stub_original_commit_message("# comment #1\n# comment B\n# comment III")
115
- subject.append("[#8675309]")
127
+ subject.append('[#8675309]')
116
128
 
117
129
  fake_file.content.should == <<-COMMIT_MESSAGE.strip_heredoc
118
130
 
@@ -124,5 +136,4 @@ describe GitTracker::CommitMessage do
124
136
  COMMIT_MESSAGE
125
137
  end
126
138
  end
127
-
128
139
  end
@@ -1,73 +1,96 @@
1
+ require 'spec_helper'
1
2
  require 'git_tracker/prepare_commit_message'
2
3
 
3
4
  describe GitTracker::PrepareCommitMessage do
4
5
  subject { GitTracker::PrepareCommitMessage }
5
6
 
6
7
  describe '.run' do
7
- let(:hook) { stub("PrepareCommitMessage") }
8
+ let(:hook) { stub('PrepareCommitMessage') }
8
9
  before do
9
10
  subject.stub(:new) { hook }
10
11
  end
11
12
 
12
- it "runs the hook" do
13
+ it 'runs the hook' do
13
14
  hook.should_receive(:run)
14
- subject.run("FILE1", "hook_source", "sha1234")
15
+ subject.run('FILE1', 'hook_source', 'sha1234')
15
16
  end
16
17
  end
17
18
 
18
- describe ".new" do
19
+ describe '.new' do
19
20
 
20
- it "requires the name of the commit message file" do
21
+ it 'requires the name of the commit message file' do
21
22
  lambda { subject.new }.should raise_error(ArgumentError)
22
23
  end
23
24
 
24
- it "remembers the name of the commit message file" do
25
- subject.new("FILE1").file.should == "FILE1"
25
+ it 'remembers the name of the commit message file' do
26
+ subject.new('FILE1').file.should == 'FILE1'
26
27
  end
27
28
 
28
- it "optionally accepts a message source" do
29
- hook = subject.new("FILE1", "merge").source.should == "merge"
29
+ it 'optionally accepts a message source' do
30
+ hook = subject.new('FILE1', 'merge').source.should == 'merge'
30
31
  end
31
32
 
32
- it "optionally accepts the SHA-1 of a commit" do
33
- hook = subject.new("FILE1", "commit", "abc1234").commit_sha.should == "abc1234"
33
+ it 'optionally accepts the SHA-1 of a commit' do
34
+ hook = subject.new('FILE1', 'commit', 'abc1234').commit_sha.should == 'abc1234'
34
35
  end
35
36
  end
36
37
 
37
38
  describe '#run' do
38
- let(:hook) { GitTracker::PrepareCommitMessage.new("FILE1") }
39
+ let(:hook) { GitTracker::PrepareCommitMessage.new('FILE1') }
39
40
  before do
40
41
  GitTracker::Branch.stub(:story_number) { story }
41
42
  end
42
43
 
43
- context "branch name without a Pivotal Tracker story number" do
44
+ context 'with an existing commit (via `-c`, `-C`, or `--amend` options)' do
45
+ let(:hook) { described_class.new('FILE2', 'commit', '60a086f3') }
46
+
47
+ it 'exits with status code 0' do
48
+ lambda { hook.run }.should succeed
49
+ end
50
+ end
51
+
52
+ context 'branch name without a Pivotal Tracker story number' do
44
53
  let(:story) { nil }
45
54
 
46
- it "exits without updating the commit message" do
47
- lambda { hook.run }.should raise_exception(SystemExit)
55
+ it 'exits without updating the commit message' do
56
+ lambda { hook.run }.should succeed
48
57
  GitTracker::CommitMessage.should_not have_received(:append)
49
58
  end
50
59
  end
51
60
 
52
- context "branch name with a Pivotal Tracker story number" do
53
- let(:story) { "8675309" }
54
- let(:commit_message) { stub("CommitMessage", mentions_story?: false) }
61
+ context 'branch name with a Pivotal Tracker story number' do
62
+ let(:story) { '8675309' }
63
+ let(:commit_message) { stub('CommitMessage', mentions_story?: false) }
64
+
55
65
  before do
66
+ commit_message.stub(:keyword) { nil }
56
67
  GitTracker::CommitMessage.stub(:new) { commit_message }
57
68
  end
58
69
 
59
- it "appends the number to the commit message" do
60
- commit_message.should_receive(:append).with("[#8675309]")
70
+ it 'appends the number to the commit message' do
71
+ commit_message.should_receive(:append).with('[#8675309]')
61
72
  hook.run
62
73
  end
63
74
 
64
- context "number already mentioned in the commit message" do
75
+ context 'keyword mentioned in the commit message' do
76
+ before do
77
+ commit_message.stub(:mentions_story?).with('8675309') { false }
78
+ commit_message.stub(:keyword) { 'Delivers' }
79
+ end
80
+
81
+ it 'appends the keyword and the story number' do
82
+ commit_message.should_receive(:append).with('[Delivers #8675309]')
83
+ hook.run
84
+ end
85
+ end
86
+
87
+ context 'number already mentioned in the commit message' do
65
88
  before do
66
- commit_message.stub(:mentions_story?).with("8675309") { true }
89
+ commit_message.stub(:mentions_story?).with('8675309') { true }
67
90
  end
68
91
 
69
- it "exits without updating the commit message" do
70
- lambda { hook.run }.should raise_exception(SystemExit)
92
+ it 'exits without updating the commit message' do
93
+ lambda { hook.run }.should succeed
71
94
  GitTracker::CommitMessage.should_not have_received(:append)
72
95
  end
73
96
  end
@@ -1,23 +1,31 @@
1
+ require 'spec_helper'
1
2
  require 'git_tracker/repository'
2
3
 
3
4
  describe GitTracker::Repository do
4
5
  subject { described_class }
6
+ let(:git_command) { 'git rev-parse --show-toplevel' }
7
+ before do
8
+ allow_message_expectations_on_nil
9
+ subject.stub(:`).with(git_command) { "/path/to/git/repo/root\n" }
10
+ end
5
11
 
6
12
  describe '.root' do
7
- let(:git_command) { 'git rev-parse --show-toplevel' }
8
- before do
9
- allow_message_expectations_on_nil
10
- subject.stub(:`).with(git_command) { "/path/to/git/repo/root\n" }
13
+
14
+ it 'gets the path to the top-level directory of the local Repository' do
11
15
  $?.stub(:exitstatus) { 0 }
16
+ subject.root.should == '/path/to/git/repo/root'
12
17
  end
13
18
 
14
- it "gets the path to the local Repository's top-level directory" do
15
- subject.root.should == '/path/to/git/repo/root'
19
+ it 'aborts when not in a git repository' do
20
+ $?.stub(:exitstatus) { 128 }
21
+ lambda { subject.root }.should_not succeed
16
22
  end
23
+ end
17
24
 
25
+ describe '.ensure_exists' do
18
26
  it 'aborts when not in a git repository' do
19
27
  $?.stub(:exitstatus) { 128 }
20
- -> { subject.root }.should raise_error SystemExit
28
+ lambda { subject.root }.should_not succeed
21
29
  end
22
30
  end
23
31
 
@@ -1,34 +1,34 @@
1
+ require 'spec_helper'
1
2
  require 'git_tracker'
2
3
 
3
4
  describe GitTracker do
4
5
  subject { described_class }
5
- let(:args) { ["a_file", "the_source", "sha1234"] }
6
+ let(:args) { ['a_file', 'the_source', 'sha1234'] }
6
7
 
7
- describe ".execute" do
8
+ describe '.execute' do
8
9
  before do
9
10
  subject.stub(:prepare_commit_msg) { true }
10
11
  end
11
12
 
12
- it "runs the hook, passing the args" do
13
+ it 'runs the hook, passing the args' do
13
14
  subject.should_receive(:prepare_commit_msg).with(*args) { true }
14
15
  subject.execute('prepare-commit-msg', *args)
15
16
  end
16
17
 
17
18
  # TODO: stop the abort from writing to stderr during tests?
18
- it "doesn't run hooks we don't know about" do
19
- lambda { subject.execute('non-existent-hook', *args) }.
20
- should raise_error SystemExit, "[git_tracker] command: 'non-existent-hook' does not exist."
19
+ it 'does not run hooks we do not know about' do
20
+ lambda { subject.execute('non-existent-hook', *args) }.should_not succeed
21
21
  end
22
22
  end
23
23
 
24
- describe ".prepare_commit_msg" do
25
- it "runs the hook, passing the args" do
24
+ describe '.prepare_commit_msg' do
25
+ it 'runs the hook, passing the args' do
26
26
  GitTracker::PrepareCommitMessage.should_receive(:run).with(*args) { true }
27
27
  subject.prepare_commit_msg(*args)
28
28
  end
29
29
  end
30
30
 
31
- describe ".install" do
31
+ describe '.install' do
32
32
  it 'tells the hook to install itself' do
33
33
  GitTracker::Hook.should_receive(:install)
34
34
  subject.install
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'fake_file'
2
2
  require 'commit_message_helper'
3
+ require_relative 'support/matchers/exit_code_matchers'
3
4
 
4
5
  RSpec.configure do |config|
5
6
  config.treat_symbols_as_metadata_keys_with_true_values = true
@@ -0,0 +1,33 @@
1
+ require 'rspec/expectations'
2
+
3
+ RSpec::Matchers.define :succeed do
4
+ actual = nil
5
+
6
+ match do |block|
7
+ begin
8
+ block.call
9
+ rescue SystemExit => e
10
+ actual = e.status
11
+ end
12
+ actual and actual == successful_exit_code
13
+ end
14
+
15
+ failure_message_for_should do |block|
16
+ "expected block to call exit(#{successful_exit_code}) but exit" +
17
+ (actual.nil? ? ' not called' : "(#{actual}) was called")
18
+ end
19
+
20
+ failure_message_for_should_not do |block|
21
+ "expected block not to call exit(#{successful_exit_code})"
22
+ end
23
+
24
+ description do
25
+ "expect block to call exit(#{successful_exit_code})"
26
+ end
27
+
28
+ def successful_exit_code
29
+ 0
30
+ end
31
+
32
+ end
33
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_tracker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-03 00:00:00.000000000 Z
12
+ date: 2012-04-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70367025411540 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 2.9.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70367025411540
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.9.0
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rspec-spies
27
- requirement: &70367025410760 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '2.0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70367025410760
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '2.0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: pry
38
- requirement: &70367025410280 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 0.9.8
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70367025410280
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.8
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: activesupport
49
- requirement: &70367025409820 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '3.2'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70367025409820
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '3.2'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: rake
60
- requirement: &70367025409440 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,7 +85,12 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *70367025409440
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  description: ! " Some simple tricks that make working with Pivotal Tracker even\n
70
95
  \ better... and easier... um, besier!\n"
71
96
  email:
@@ -101,6 +126,7 @@ files:
101
126
  - spec/spec_helper.rb
102
127
  - spec/support/commit_message_helper.rb
103
128
  - spec/support/fake_file.rb
129
+ - spec/support/matchers/exit_code_matchers.rb
104
130
  homepage: https://github.com/highgroove/git_tracker
105
131
  licenses: []
106
132
  post_install_message:
@@ -121,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
147
  version: '0'
122
148
  requirements: []
123
149
  rubyforge_project:
124
- rubygems_version: 1.8.17
150
+ rubygems_version: 1.8.21
125
151
  signing_key:
126
152
  specification_version: 3
127
153
  summary: Teaching Git about Pivotal Tracker.
@@ -135,3 +161,4 @@ test_files:
135
161
  - spec/spec_helper.rb
136
162
  - spec/support/commit_message_helper.rb
137
163
  - spec/support/fake_file.rb
164
+ - spec/support/matchers/exit_code_matchers.rb