diff options
author | Teddy Wing | 2020-09-17 02:34:00 +0200 |
---|---|---|
committer | Teddy Wing | 2020-09-17 02:34:00 +0200 |
commit | e6dee128a2e1cf051fd4f8f2ee810ee0a9a3c7c0 (patch) | |
tree | 428082536ac362d2c2a1ed24dcc2941c8b91f4dc | |
parent | 664b4d1f0bca4891e06dc7a3cb179bed7a842bb1 (diff) | |
download | git-todo-e6dee128a2e1cf051fd4f8f2ee810ee0a9a3c7c0.tar.bz2 |
main.rs: Error when more than one ref argument is given
Since it doesn't really make sense to take multiple refs, don't allow
more than one. We can only diff between two trees, and one is fixed as
the workdir.
Also learned that to get an exit code from a `system()` call in Perl,
you have to shift `$?` by 8
(https://perldoc.perl.org/functions/system.html).
-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; |