Use prerequisite tags to skip tests that depend on symbolic links
Many tests depend on that symbolic links work. This introduces a check
that sets the prerequisite tag SYMLINKS if the file system supports
symbolic links. Since so many tests have to check for this prerequisite,
we do the check in test-lib.sh, so that we don't need to repeat the test
in many scripts.
To check for 'ln -s' failures, you can use a FAT partition on Linux:
$ mkdosfs -C git-on-fat 1000000
$ sudo mount -o loop,uid=j6t,gid=users,shortname=winnt git-on-fat /mnt
Clone git to /mnt and
$ GIT_SKIP_TESTS='t0001.1[34] t0010 t1301 t403[34] t4129.[47] t5701.7
t7701.3 t9100 t9101.26 t9119 t9124.[67] t9200.10 t9600.6' \
make test
(These additionally skipped tests depend on POSIX permissions that FAT on
Linux does not provide.)
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
This commit is contained in:
@ -246,7 +246,7 @@ test_expect_success \
|
||||
gitweb_run "p=.git;a=commitdiff"'
|
||||
test_debug 'cat gitweb.log'
|
||||
|
||||
test_expect_success \
|
||||
test_expect_success SYMLINKS \
|
||||
'commitdiff(0): file to symlink' \
|
||||
'rm renamed_file &&
|
||||
ln -s file renamed_file &&
|
||||
@ -308,7 +308,7 @@ test_debug 'cat gitweb.log'
|
||||
# ----------------------------------------------------------------------
|
||||
# commitdiff testing (taken from t4114-apply-typechange.sh)
|
||||
|
||||
test_expect_success 'setup typechange commits' '
|
||||
test_expect_success SYMLINKS 'setup typechange commits' '
|
||||
echo "hello world" > foo &&
|
||||
echo "hi planet" > bar &&
|
||||
git update-index --add foo bar &&
|
||||
@ -418,7 +418,12 @@ test_expect_success \
|
||||
git mv 04-rename-from 04-rename-to &&
|
||||
echo "Changed" >> 04-rename-to &&
|
||||
test_chmod +x 05-mode-change &&
|
||||
rm -f 06-file-or-symlink && ln -s 01-change 06-file-or-symlink &&
|
||||
rm -f 06-file-or-symlink &&
|
||||
if test_have_prereq SYMLINKS; then
|
||||
ln -s 01-change 06-file-or-symlink
|
||||
else
|
||||
printf %s 01-change > 06-file-or-symlink
|
||||
fi &&
|
||||
echo "Changed and have mode changed" > 07-change-mode-change &&
|
||||
test_chmod +x 07-change-mode-change &&
|
||||
git commit -a -m "Large commit" &&
|
||||
|
||||
Reference in New Issue
Block a user