diff options
-rw-r--r-- | src/main.rs | 4 | ||||
-rw-r--r-- | t/103-fails-with-more-than-one-ref-argument.t | 48 |
2 files changed, 51 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index efe4477..dd2da1c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -46,8 +46,10 @@ fn main() { process::exit(exitcode::USAGE); }, } + } else if matches.free.len() > 1 { + eprintln(&"too many ref arguments"); + process::exit(exitcode::USAGE); } else { - // TODO: error if more than one ref given let refname = &matches.free[0]; let object = match repo.revparse_single(&refname) { diff --git a/t/103-fails-with-more-than-one-ref-argument.t b/t/103-fails-with-more-than-one-ref-argument.t new file mode 100644 index 0000000..b376137 --- /dev/null +++ b/t/103-fails-with-more-than-one-ref-argument.t @@ -0,0 +1,48 @@ +#!/usr/bin/env perl -w + +use strict; + +use File::Copy; +use Test::More; + +use Bin qw($BIN); + +my $file = 'git-sugdiff.rs'; + +chdir 't-git-repo' or die $!; + +system('git checkout -b fork-point'); +ok !$?; + +open(my $input, '<', $file) or die $!; +open(my $output, '>', "$file.out") or die $!; + +while (<$input>) { + if ($. == 34) { + print $output " // TODO: 100-shows-todo-comments-since-fork-point\n"; + } + + print $output $_; +} + +close $input; +close $output; + +move("$file.out", $file) or die $!; + +system('git add git-sugdiff.rs'); +ok !$?; + +system('git commit -m "New TODO"'); +ok !$?; + +system("$BIN master fork-point"); +is $? & 64, 0; + + +# Teardown +system('git checkout master'); +system('git branch -D fork-point'); + + +done_testing; |