mirror of
https://github.com/git/git.git
synced 2024-11-28 04:23:30 +08:00
t3600: Use test prerequisite tags
There are two prerequisites: - The filesystem supports names with tabs or new-lines. - Files cannot be removed if their containing directory is read-only. Previously, whether these preconditions are satisified was tested inside test_expect_success. We move these tests outside because, strictly speaking, they are not part of the tests. Signed-off-by: Johannes Sixt <j6t@kdbg.org>
This commit is contained in:
parent
a7bb394037
commit
56e78bfb29
@ -12,31 +12,37 @@ test_expect_success \
|
||||
'Initialize test directory' \
|
||||
"touch -- foo bar baz 'space embedded' -q &&
|
||||
git add -- foo bar baz 'space embedded' -q &&
|
||||
git commit -m 'add normal files' &&
|
||||
test_tabs=y &&
|
||||
git commit -m 'add normal files'"
|
||||
|
||||
if touch -- 'tab embedded' 'newline
|
||||
embedded'
|
||||
embedded' 2>/dev/null
|
||||
then
|
||||
test_set_prereq FUNNYNAMES
|
||||
else
|
||||
say 'Your filesystem does not allow tabs in filenames.'
|
||||
fi
|
||||
|
||||
test_expect_success FUNNYNAMES 'add files with funny names' "
|
||||
git add -- 'tab embedded' 'newline
|
||||
embedded' &&
|
||||
git commit -m 'add files with tabs and newlines'
|
||||
else
|
||||
test_tabs=n
|
||||
fi"
|
||||
|
||||
test "$test_tabs" = n && say 'Your filesystem does not allow tabs in filenames.'
|
||||
"
|
||||
|
||||
# Determine rm behavior
|
||||
# Later we will try removing an unremovable path to make sure
|
||||
# git rm barfs, but if the test is run as root that cannot be
|
||||
# arranged.
|
||||
test_expect_success \
|
||||
'Determine rm behavior' \
|
||||
': >test-file
|
||||
: >test-file
|
||||
chmod a-w .
|
||||
rm -f test-file
|
||||
test -f test-file && test_failed_remove=y
|
||||
rm -f test-file 2>/dev/null
|
||||
if test -f test-file
|
||||
then
|
||||
test_set_prereq RO_DIR
|
||||
else
|
||||
say 'skipping removal failure test (perhaps running as root?)'
|
||||
fi
|
||||
chmod 775 .
|
||||
rm -f test-file'
|
||||
rm -f test-file
|
||||
|
||||
test_expect_success \
|
||||
'Pre-check that foo exists and is in index before git rm foo' \
|
||||
@ -101,20 +107,16 @@ test_expect_success \
|
||||
'Test that "git rm -- -q" succeeds (remove a file that looks like an option)' \
|
||||
'git rm -- -q'
|
||||
|
||||
test "$test_tabs" = y && test_expect_success \
|
||||
test_expect_success FUNNYNAMES \
|
||||
"Test that \"git rm -f\" succeeds with embedded space, tab, or newline characters." \
|
||||
"git rm -f 'space embedded' 'tab embedded' 'newline
|
||||
embedded'"
|
||||
|
||||
if test "$test_failed_remove" = y; then
|
||||
chmod a-w .
|
||||
test_expect_success \
|
||||
'Test that "git rm -f" fails if its rm fails' \
|
||||
'test_must_fail git rm -f baz'
|
||||
test_expect_success RO_DIR 'Test that "git rm -f" fails if its rm fails' '
|
||||
chmod a-w . &&
|
||||
test_must_fail git rm -f baz &&
|
||||
chmod 775 .
|
||||
else
|
||||
say 'skipping removal failure test (perhaps running as root?)'
|
||||
fi
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
'When the rm in "git rm -f" fails, it should not remove the file from the index' \
|
||||
|
Loading…
Reference in New Issue
Block a user