]> git.ipfire.org Git - thirdparty/git.git/commitdiff
test-lib functions: add --printf option to test_commit
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Mon, 10 May 2021 14:19:06 +0000 (16:19 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 11 May 2021 03:45:18 +0000 (12:45 +0900)
Add a --printf option to test_commit to allow writing to the file with
"printf" instead of "echo".

This is useful for writing "\n", "\0" etc., in particular in
combination with the --append option added in 3373518cc8 (test-lib
functions: add an --append option to test_commit, 2021-01-12).

I'm converting a few tests to use the new option rather than a manual
printf/add/commit combination to demonstrate its usefulness. While I'm
at it use "test_create_repo" where appropriate, and give the
first/second commit a meaningful/more conventional log message in
cases where no test cared about that message.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t1307-config-blob.sh
t/t2030-unresolve-info.sh
t/t4006-diff-mode.sh
t/t4030-diff-textconv.sh
t/t5520-pull.sh
t/test-lib-functions.sh

index 002e6d3388e242c56800da6b9640819c90ed5615..930dce06f0fdff755d4ea0b4f81c8fed776440c6 100755 (executable)
@@ -65,9 +65,7 @@ test_expect_success 'parse errors in blobs are properly attributed' '
 '
 
 test_expect_success 'can parse blob ending with CR' '
-       printf "[some]key = value\\r" >config &&
-       git add config &&
-       git commit -m CR &&
+       test_commit --printf CR config "[some]key = value\\r" &&
        echo value >expect &&
        git config --blob=HEAD:config some.key >actual &&
        test_cmp expect actual
index be6c84c52a2129cc7ffbbfa257b5d5f8a3af8242..f691e6d90329f1905854fa0f47950e213618ddd8 100755 (executable)
@@ -179,8 +179,7 @@ test_expect_success 'rerere and rerere forget (subdirectory)' '
 
 test_expect_success 'rerere forget (binary)' '
        git checkout -f side &&
-       printf "a\0c" >binary &&
-       git commit -a -m binary &&
+       test_commit --printf binary binary "a\0c" &&
        test_must_fail git merge second &&
        git rerere forget binary
 '
index 275ce5fa15be18de8a5badbb49ac617eee538bf0..6cdee2a2164d0bc7b3ce8105dc733388afb15b35 100755 (executable)
@@ -26,10 +26,8 @@ test_expect_success 'chmod' '
 '
 
 test_expect_success 'prepare binary file' '
-       git commit -m rezrov &&
-       printf "\00\01\02\03\04\05\06" >binbin &&
-       git add binbin &&
-       git commit -m binbin
+       git commit -m one &&
+       test_commit --printf two binbin "\00\01\02\03\04\05\06"
 '
 
 test_expect_success '--stat output after text chmod' '
index c906320b60dcea80369c6c4ef1f6af70295713cd..a39a626664d4a529be3d7978fad831e35e224e8c 100755 (executable)
@@ -26,12 +26,8 @@ EOF
 chmod +x hexdump
 
 test_expect_success 'setup binary file with history' '
-       printf "\\0\\n" >file &&
-       git add file &&
-       git commit -m one &&
-       printf "\\01\\n" >>file &&
-       git add file &&
-       git commit -m two
+       test_commit --printf one file "\\0\\n" &&
+       test_commit --printf --append two file "\\01\\n"
 '
 
 test_expect_success 'file is considered binary by porcelain' '
index a09411327f9a794009b5791786807ee5b43d6434..e2c0c510222ddefb8dc28ee44b931fbdad7713dd 100755 (executable)
@@ -746,14 +746,8 @@ test_expect_success 'pull --rebase fails on corrupt HEAD' '
 '
 
 test_expect_success 'setup for detecting upstreamed changes' '
-       mkdir src &&
-       (
-               cd src &&
-               git init &&
-               printf "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n" > stuff &&
-               git add stuff &&
-               git commit -m "Initial revision"
-       ) &&
+       test_create_repo src &&
+       test_commit -C src --printf one stuff "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n" &&
        git clone src dst &&
        (
                cd src &&
index 6e2332a324a6a144e54790e93b542af308772a7e..6f9199a65bef8d5b7b5509206a1b2af610ab9a96 100644 (file)
@@ -173,6 +173,12 @@ debug () {
 #      Do not call test_tick before making a commit
 #   --append
 #      Use ">>" instead of ">" when writing "<contents>" to "<file>"
+#   --printf
+#       Use "printf" instead of "echo" when writing "<contents>" to
+#       "<file>", use this to write escape sequences such as "\0", a
+#       trailing "\n" won't be added automatically. This option
+#       supports nothing but the FORMAT of printf(1), i.e. no custom
+#       ARGUMENT(s).
 #   --signoff
 #      Invoke "git commit" with --signoff
 #   --author <author>
@@ -191,6 +197,7 @@ debug () {
 
 test_commit () {
        notick= &&
+       echo=echo &&
        append= &&
        author= &&
        signoff= &&
@@ -202,6 +209,9 @@ test_commit () {
                --notick)
                        notick=yes
                        ;;
+               --printf)
+                       echo=printf
+                       ;;
                --append)
                        append=yes
                        ;;
@@ -238,9 +248,9 @@ test_commit () {
        file=${2:-"$1.t"} &&
        if test -n "$append"
        then
-               echo "${3-$1}" >>"$indir$file"
+               $echo "${3-$1}" >>"$indir$file"
        else
-               echo "${3-$1}" >"$indir$file"
+               $echo "${3-$1}" >"$indir$file"
        fi &&
        git ${indir:+ -C "$indir"} add "$file" &&
        if test -z "$notick"