diff options
| -rw-r--r-- | src/main.rs | 6 | ||||
| -rw-r--r-- | t/102-accepts-ref-argument.t | 52 | 
2 files changed, 55 insertions, 3 deletions
| diff --git a/src/main.rs b/src/main.rs index 780ab62..4d810b0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -44,15 +44,15 @@ fn main() {          // TODO: error if more than one ref given          let refname = &matches.free[0]; -        let oid = match repo.refname_to_id(&refname) { -            Ok(oid) => oid, +        let object = match repo.revparse_single(&refname) { +            Ok(object) => object,              Err(e) => {                  eprintln(&e);                  process::exit(exitcode::USAGE);              },          }; -        match repo.find_tree(oid) { +        match object.peel_to_tree() {              Ok(t) => t,              Err(e) => {                  eprintln(&e); diff --git a/t/102-accepts-ref-argument.t b/t/102-accepts-ref-argument.t new file mode 100644 index 0000000..a7153df --- /dev/null +++ b/t/102-accepts-ref-argument.t @@ -0,0 +1,52 @@ +#!/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 !$?; + +my $ref = qx(git rev-parse master); +chomp $ref; + +my $todos = qx($BIN $ref); +is $todos, 'git-sugdiff.rs:34:    // TODO: 100-shows-todo-comments-since-fork-point +'; + + +# Teardown +system('git checkout master'); +system('git branch -D fork-point'); + + +done_testing; | 
