aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgit-branch-list4
-rw-r--r--t/103-drop-does-not-drop-other-branches-with-similar-names.t37
2 files changed, 39 insertions, 2 deletions
diff --git a/git-branch-list b/git-branch-list
index 0c6a74a..75167a3 100755
--- a/git-branch-list
+++ b/git-branch-list
@@ -44,7 +44,7 @@ __EOF__
function save_branch () {
local branch=$(branch_or_current_branch "$1")
- if fgrep "$branch" "$DATABASE" > /dev/null; then
+ if fgrep --line-regexp "$branch" "$DATABASE" > /dev/null; then
return 1
fi
@@ -78,7 +78,7 @@ function drop_branch () {
done
for branch in "${branch_names[@]}"; do
- sed -i '.bak' "/$branch/d" "$DATABASE"
+ sed -i '.bak' "/^$branch$/d" "$DATABASE"
done
rm "${DATABASE}.bak"
diff --git a/t/103-drop-does-not-drop-other-branches-with-similar-names.t b/t/103-drop-does-not-drop-other-branches-with-similar-names.t
new file mode 100644
index 0000000..05360cb
--- /dev/null
+++ b/t/103-drop-does-not-drop-other-branches-with-similar-names.t
@@ -0,0 +1,37 @@
+#!/usr/bin/env perl -w
+
+use strict;
+
+use Test::More;
+
+use Bin qw($BIN);
+
+chdir 't-git-repo' or die $!;
+
+system('git checkout -b first-similar-name');
+ok !$?;
+
+system("$BIN save");
+ok !$?;
+
+system('git checkout -b first');
+ok !$?;
+
+system("$BIN save");
+ok !$?;
+
+system("$BIN drop");
+ok !$?;
+
+my $branch_list = qx($BIN);
+is $branch_list, ' 1 first-similar-name
+';
+
+
+# Teardown
+system('git checkout master');
+system('git branch -d first first-similar-name');
+system("$BIN clear");
+
+
+done_testing;