diff --git a/lib/git_tracker/commit_message.rb b/lib/git_tracker/commit_message.rb index a380651..b0d3e38 100644 --- a/lib/git_tracker/commit_message.rb +++ b/lib/git_tracker/commit_message.rb @@ -5,9 +5,9 @@ def initialize(file) @file = file end - def contains?(pattern) + def mentions_story?(number) message = File.read(@file) - message.include?(pattern) + message =~ %r{\[\w*\s?##{number}]} end end diff --git a/lib/git_tracker/prepare_commit_message.rb b/lib/git_tracker/prepare_commit_message.rb index 124a0bb..4e02b16 100644 --- a/lib/git_tracker/prepare_commit_message.rb +++ b/lib/git_tracker/prepare_commit_message.rb @@ -19,7 +19,7 @@ def run story = story_number_from_branch message = CommitMessage.new(file) - exit if message.contains?("[##{story}]") + exit if message.mentions_story?(story) message.append!("[##{story}]") end diff --git a/spec/git_tracker/commit_message_spec.rb b/spec/git_tracker/commit_message_spec.rb index 54cb522..8778de8 100644 --- a/spec/git_tracker/commit_message_spec.rb +++ b/spec/git_tracker/commit_message_spec.rb @@ -8,7 +8,7 @@ -> { GitTracker::CommitMessage.new }.should raise_error ArgumentError end - describe "#contains?" do + describe "#mentions_story?" do subject { described_class.new(file) } let(:file) { "COMMIT_EDITMSG" } before do @@ -17,12 +17,17 @@ context "commit message contains the special Pivotal Tracker story syntax" do let(:commit_message_text) { example_commit_message("[#8675309]") } - it { subject.should be_contains("[#8675309]") } + it { subject.should be_mentions_story("8675309") } + + context "with state change" do + let(:commit_message_text) { example_commit_message("[Fixes #8675309]") } + it { subject.should be_mentions_story("8675309") } + end end context "commit message doesn't contain the special Pivotal Tracker story syntax" do - let(:commit_message_text) { example_commit_message("[#not_it]") } - it { subject.should_not be_contains("[#8675309]") } + let(:commit_message_text) { example_commit_message("#8675309") } + it { subject.should_not be_mentions_story("8675309") } end end diff --git a/spec/git_tracker/prepare_commit_message_spec.rb b/spec/git_tracker/prepare_commit_message_spec.rb index 8db8a4c..bffe303 100644 --- a/spec/git_tracker/prepare_commit_message_spec.rb +++ b/spec/git_tracker/prepare_commit_message_spec.rb @@ -46,7 +46,7 @@ context "branch name with a Pivotal Tracker story number" do let(:story) { "8675309" } - let(:commit_message) { stub("CommitMessage", contains?: false) } + let(:commit_message) { stub("CommitMessage", mentions_story?: false) } before do GitTracker::CommitMessage.stub(:new) { commit_message } end @@ -58,7 +58,7 @@ context "number already mentioned in the commit message" do before do - commit_message.stub(:contains?).with("[#8675309]") { true } + commit_message.stub(:mentions_story?).with("8675309") { true } end it "exits without updating the commit message" do