Skip to content

Commit

Permalink
gitweb: Fix 'grep' search for multiple matches in file
Browse files Browse the repository at this point in the history
Commit ff7f218 (gitweb: Fix file links in "grep" search, 2012-01-05),
added $file_href variable, to reduce duplication and have the fix
applied in single place.

Unfortunately it made variable defined inside the loop, not taking into
account the fact that $file_href was set only if file changed.
Therefore for files with multiple matches $file_href was undefined for
second and subsequent matches.

Fix this bug by moving $file_href declaration outside loop.

Adds tests for almost all forms of sarch in gitweb, which were missing
from testuite.  Note that it only tests if there are no warnings, and
it doesn't check that gitweb finds what it should find.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jakub Narebski authored and Junio C Hamano committed Feb 20, 2012
1 parent d1ba7a4 commit fc8fcd2
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 1 deletion.
3 changes: 2 additions & 1 deletion gitweb/gitweb.perl
Original file line number Diff line number Diff line change
Expand Up @@ -5850,9 +5850,10 @@ sub git_search_files {
my $alternate = 1;
my $matches = 0;
my $lastfile = '';
my $file_href;
while (my $line = <$fd>) {
chomp $line;
my ($file, $file_href, $lno, $ltext, $binary);
my ($file, $lno, $ltext, $binary);
last if ($matches++ > 1000);
if ($line =~ /^Binary file (.+) matches$/) {
$file = $1;
Expand Down
39 changes: 39 additions & 0 deletions t/t9500-gitweb-standalone-no-errors.sh
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,45 @@ test_expect_success \
'config override: tree view, features enabled in repo config (2)' \
'gitweb_run "p=.git;a=tree"'

# ----------------------------------------------------------------------
# searching

cat >>gitweb_config.perl <<\EOF
# enable search
$feature{'search'}{'default'} = [1];
$feature{'grep'}{'default'} = [1];
$feature{'pickaxe'}{'default'} = [1];
EOF

test_expect_success \
'search: preparation' \
'echo "1st MATCH" >>file &&
echo "2nd MATCH" >>file &&
echo "MATCH" >>bar &&
git add file bar &&
git commit -m "Added MATCH word"'

test_expect_success \
'search: commit author' \
'gitweb_run "p=.git;a=search;h=HEAD;st=author;s=A+U+Thor"'

test_expect_success \
'search: commit message' \
'gitweb_run "p=.git;a=search;h=HEAD;st=commitr;s=MATCH"'

test_expect_success \
'search: grep' \
'gitweb_run "p=.git;a=search;h=HEAD;st=grep;s=MATCH"'

test_expect_success \
'search: pickaxe' \
'gitweb_run "p=.git;a=search;h=HEAD;st=pickaxe;s=MATCH"'

test_expect_success \
'search: projects' \
'gitweb_run "a=project_list;s=.git"'

# ----------------------------------------------------------------------
# non-ASCII in README.html

Expand Down

0 comments on commit fc8fcd2

Please sign in to comment.