Mercurial > gnulib
annotate tests/test-vc-list-files-cvs.sh @ 30182:b9b7a06b0c68
Explain reason for skipping tests.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Fri, 26 Sep 2008 15:44:43 +0200 |
parents | 2bc0899e4ebf |
children | b5e42ef33b49 |
rev | line source |
---|---|
29716 | 1 #!/bin/sh |
2 # Unit tests for vc-list-files | |
3 # Copyright (C) 2008 Free Software Foundation, Inc. | |
4 # This file is part of the GNUlib Library. | |
5 # | |
6 # This program is free software: you can redistribute it and/or modify | |
7 # it under the terms of the GNU General Public License as published by | |
8 # the Free Software Foundation; either version 3 of the License, or | |
9 # (at your option) any later version. | |
10 # | |
11 # This program is distributed in the hope that it will be useful, | |
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 # GNU General Public License for more details. | |
15 # | |
16 # You should have received a copy of the GNU General Public License | |
17 # along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
18 | |
19 tmpdir=vc-cvs-$$ | |
20 trap 'st=$?; cd '"`pwd`"' && rm -rf $tmpdir; exit $st' 0 | |
21 trap '(exit $?); exit $?' 1 2 13 15 | |
22 | |
23 if ( diff --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then | |
24 compare() { diff -u "$@"; } | |
25 elif ( cmp --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then | |
26 compare() { cmp -s "$@"; } | |
27 else | |
28 compare() { cmp "$@"; } | |
29 fi | |
30 | |
31 repo=`pwd`/$tmpdir/repo | |
32 | |
33 fail=0 | |
34 for i in with-cvsu without; do | |
35 # On the first iteration, test using cvsu, if it's in your path. | |
36 # On the second iteration, ensure that cvsu fails, so we'll | |
37 # exercise the awk-using code. | |
38 if test $i = without; then | |
39 printf '%s\n' '#!/bin/sh' 'exit 1' > cvsu | |
40 chmod a+x cvsu | |
41 PATH=`pwd`:$PATH | |
42 export PATH | |
43 fi | |
44 ok=0 | |
45 mkdir $tmpdir && cd $tmpdir && | |
46 # without cvs, skip the test | |
29891
2bc0899e4ebf
Avoid a test failure when the test wants to skip itself.
Bruno Haible <bruno@clisp.org>
parents:
29768
diff
changeset
|
47 # The double use of 'exit' is needed for the reference to $? inside the trap. |
30182
b9b7a06b0c68
Explain reason for skipping tests.
Bruno Haible <bruno@clisp.org>
parents:
29891
diff
changeset
|
48 { ( cvs -Q -d "$repo" init ) > /dev/null 2>&1 \ |
b9b7a06b0c68
Explain reason for skipping tests.
Bruno Haible <bruno@clisp.org>
parents:
29891
diff
changeset
|
49 || { echo "Skipping test: cvs not found in PATH"; (exit 77); exit 77; }; } && |
29716 | 50 mkdir w && cd w && |
51 mkdir d && | |
52 touch d/a b c && | |
53 cvs -Q -d "$repo" import -m imp m M M0 && | |
54 cvs -Q -d "$repo" co m && cd m && | |
55 printf '%s\n' b c d/a > expected && | |
56 vc-list-files | sort > actual && | |
57 compare expected actual && | |
58 ok=1 | |
59 test $ok = 0 && fail=1 | |
60 done | |
61 | |
62 (exit $fail); exit $fail |