From 9ce415d972a04df4bfceaad0fab8eaea9a66997e Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Fri, 7 Jun 2013 22:53:27 +0200 Subject: [PATCH] tests: introduce test_ln_s_add Add a new function that creates a symbolic link and adds it to the index to be used in cases where a symbolic link is not required on the file system. We will use it to remove many SYMLINKS prerequisites from test cases. Signed-off-by: Johannes Sixt Signed-off-by: Junio C Hamano --- t/README | 14 ++++++++++++++ t/test-lib-functions.sh | 17 +++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/t/README b/t/README index e669bb31b9..bbe25c31b4 100644 --- a/t/README +++ b/t/README @@ -592,6 +592,20 @@ library for your script to use. test_cmp expected actual ' + - test_ln_s_add + + This function helps systems whose filesystem does not support symbolic + links. Use it to add a symbolic link entry to the index when it is not + important that the file system entry is a symbolic link, i.e., instead + of the sequence + + ln -s foo bar && + git add bar + + Sometimes it is possible to split a test in a part that does not need + the symbolic link in the file system and a part that does; then only + the latter part need be protected by a SYMLINKS prerequisite (see below). + Prerequisites ------------- diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index 52510094ad..fac9234d3c 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -679,3 +679,20 @@ test_create_repo () { mv .git/hooks .git/hooks-disabled ) || exit } + +# This function helps on symlink challenged file systems when it is not +# important that the file system entry is a symbolic link. +# Use test_ln_s_add instead of "ln -s x y && git add y" to add a +# symbolic link entry y to the index. + +test_ln_s_add () { + if test_have_prereq SYMLINKS + then + ln -s "$1" "$2" && + git update-index --add "$2" + else + printf '%s' "$1" >"$2" && + ln_s_obj=$(git hash-object -w "$2") && + git update-index --add --cacheinfo 120000 $ln_s_obj "$2" + fi +}