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 <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Sixt committed
Jun 7, 2013 at 22:53 UTC
9ce415d972a04df4bfceaad0fab8eaea9a66997e
2 files changed
+31
t/README
+14
@@ -592,6 +592,20 @@ library for your script to use.
592
test_cmp expected actual
593
'
594
595
+ - test_ln_s_add <path1> <path2>
596
+
597
+ This function helps systems whose filesystem does not support symbolic
598
+ links. Use it to add a symbolic link entry to the index when it is not
599
+ important that the file system entry is a symbolic link, i.e., instead
600
+ of the sequence
601
+
602
+ ln -s foo bar &&
603
+ git add bar
604
+
605
+ Sometimes it is possible to split a test in a part that does not need
606
+ the symbolic link in the file system and a part that does; then only
607
+ the latter part need be protected by a SYMLINKS prerequisite (see below).
608
+
609
Prerequisites
610
-------------
611
t/test-lib-functions.sh
+17
@@ -679,3 +679,20 @@ test_create_repo () {
679
mv .git/hooks .git/hooks-disabled
680
) || exit
681
}
682
+
683
+# This function helps on symlink challenged file systems when it is not
684
+# important that the file system entry is a symbolic link.
685
+# Use test_ln_s_add instead of "ln -s x y && git add y" to add a
686
+# symbolic link entry y to the index.
687
+
688
+test_ln_s_add () {
689
+ if test_have_prereq SYMLINKS
690
+ then
691
+ ln -s "$1" "$2" &&
692
+ git update-index --add "$2"
693
+ else
694
+ printf '%s' "$1" >"$2" &&
695
+ ln_s_obj=$(git hash-object -w "$2") &&
696
+ git update-index --add --cacheinfo 120000 $ln_s_obj "$2"
697
+ fi
698
+}