Mercurial > gnulib
annotate tests/test-exclude7.sh @ 16806:babe19575e66
exclude: process exclude and include directives in order
This restores the pre-2009 behavior, and is part of a fix of a
grep bug reported by Quentin Arce in
<http://lists.gnu.org/archive/html/bug-grep/2012-04/msg00056.html>.
* lib/exclude.c (struct exclude): Remove 'tail' member.
(new_exclude_segment): Prepend the new segment instead of appending.
Return void, since that's now more convenient.
(file_pattern_matches): Renamed from excluded_file_pattern_p.
(file_name_matches): Renamed from excluded_file_name_p.
(file_pattern_matches, file_name_matches):
Return true if the pattern matches, not if it excludes.
All callers changed.
(excluded_file_name): Process the list in reverse order;
since the list is now reversed this restores the pre-2009 behavior.
(add_exclude): Adjust to new reversed-order list. Use local var
rather than macro, for clarity.
* tests/test-exclude7.sh: Adjust to corrected behavior.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sun, 29 Apr 2012 19:04:41 -0700 |
parents | 8250f2777afc |
children | e542fd46ad6f |
rev | line source |
---|---|
11811
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
1 #! /bin/sh |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
2 # Test suite for exclude. |
16201
8250f2777afc
maint: update all copyright year number ranges
Jim Meyering <meyering@redhat.com>
parents:
16081
diff
changeset
|
3 # Copyright (C) 2009-2012 Free Software Foundation, Inc. |
11811
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
4 # This file is part of the GNUlib Library. |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
5 # |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
6 # This program is free software: you can redistribute it and/or modify |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
7 # it under the terms of the GNU General Public License as published by |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
8 # the Free Software Foundation; either version 3 of the License, or |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
9 # (at your option) any later version. |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
10 # |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
11 # This program is distributed in the hope that it will be useful, |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
14 # GNU General Public License for more details. |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
15 # |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
16 # You should have received a copy of the GNU General Public License |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
17 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
18 |
16081
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
19 . "${srcdir=.}/init.sh"; path_prepend_ . |
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
20 fail=0 |
11811
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
21 |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
22 # Test exclude precedence |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
23 |
16081
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
24 cat > in <<EOT |
11811
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
25 foo* |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
26 bar |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
27 Baz |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
28 EOT |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
29 |
16081
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
30 cat > expected <<EOT |
16806
babe19575e66
exclude: process exclude and include directives in order
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
31 bar: 0 |
11811
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
32 bar: 1 |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
33 EOT |
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
34 |
16081
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
35 test-exclude in -include in -- bar > out || exit $? |
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
36 test-exclude -include in -no-include in -- bar >> out || exit $? |
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
37 |
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
38 # Find out how to remove carriage returns from output. Solaris /usr/ucb/tr |
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
39 # does not understand '\r'. |
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
40 case $(echo r | tr -d '\r') in '') cr='\015';; *) cr='\r';; esac |
11811
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
41 |
16081
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
42 # normalize output |
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
43 LC_ALL=C tr -d "$cr" < out > k && mv k out |
11811
451cf730f520
Optimize exclude: use hash tables for non-wildcard patterns.
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
diff
changeset
|
44 |
16081
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
45 compare expected out || fail=1 |
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
46 |
ab4fc7286686
revamp the other test-exclude?.sh scripts to use init.sh, too
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
47 Exit $fail |