On Sat, May 05 2018, Taylor Blau wrote: > +--o:: > +--only-matching:: > + Show only the matching part of the lines. > + Makes sense to steal GNU grep's description here: Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. > + if (!opt->only_matching) > + output_color(opt, bol, match.rm_so, line_color); This should also have braces, see "When there are multiple arms to a conditional" in Documentation/CodingGuidelines. > ' > > +cat >expected <<EOF > +file:1:5:mmap > +file:2:5:mmap > +file:3:5:mmap > +file:3:14:mmap > +file:4:5:mmap > +file:4:14:mmap > +file:5:5:mmap > +file:5:14:mmap > +EOF This should be set up as part of the test itself, see e.g. my c8b2cec09e ("branch: add test for -m renaming multiple config sections", 2017-06-18) for how to do that. > +test_expect_success 'grep --only-matching' ' > + git grep --only-matching --line-number --column mmap file >actual && > + test_cmp expected actual > +' > + > +cat >expected <<EOF > +file > +1:5:mmap > +2:5:mmap > +3:5:mmap > +3:14:mmap > +4:5:mmap > +4:14:mmap > +5:5:mmap > +5:14:mmap > +EOF > + > +test_expect_success 'grep --only-matching --heading' ' > + git grep --only-matching --heading --line-number --column mmap file >actual && > + test_cmp expected actual > +' > + > cat >expected <<EOF > <BOLD;GREEN>hello.c<RESET> > 4:int main(int argc, const <BLACK;BYELLOW>char<RESET> **argv) We should test this a lot more, I think a good way to do that would be to extend this series by first importing GNU grep's -o tests, see http://git.savannah.gnu.org/cgit/grep.git/tree/tests/foad1 they are license-compatible. Then change the grep_test() function to call git grep instead. It should also be tested with the various grep.patternType options to make sure it works with basic, extended, perl, fixed etc.