diff options
-rw-r--r-- | src/lib.rs | 12 | ||||
-rw-r--r-- | t/105-works-on-untracked-files.t | 50 |
2 files changed, 60 insertions, 2 deletions
@@ -18,7 +18,7 @@ use std::io::Write; -use git2::{Repository, Tree}; +use git2::{DiffOptions, Repository, Tree}; use thiserror::Error; @@ -46,7 +46,15 @@ impl Todos<'_> { tree: Tree<'_>, write_to: &mut W, ) -> Result<(), Error> { - let diff = self.repo.diff_tree_to_workdir(Some(&tree), None)?; + let mut diff_options = DiffOptions::new(); + diff_options + .show_untracked_content(true) + .recurse_untracked_dirs(true); + + let diff = self.repo.diff_tree_to_workdir_with_index( + Some(&tree), + Some(&mut diff_options), + )?; diff.foreach( &mut |_file, _progress| { diff --git a/t/105-works-on-untracked-files.t b/t/105-works-on-untracked-files.t new file mode 100644 index 0000000..9c7683f --- /dev/null +++ b/t/105-works-on-untracked-files.t @@ -0,0 +1,50 @@ +#!/usr/bin/env perl -w + +# Copyright (c) 2020 Teddy Wing +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + + +use strict; + +use File::Copy; +use Test::More; + +use Bin qw($BIN); + +my $file = 'untracked.rs'; + +chdir 't-git-repo' or die $!; + +system('git checkout -b fork-point'); +ok !$?; + +open(my $output, '>', $file) or die $!; + +print $output " // TODO: untracked to-do\n"; + +close $output; + +my $todos = qx($BIN); +is $todos, 'untracked.rs:1: // TODO: untracked to-do +'; + + +# Teardown +unlink $file; +system('git checkout master'); +system('git branch -D fork-point'); + + +done_testing; |