All of lore.kernel.org
 help / color / mirror / Atom feed
From: orgads@gmail.com
To: git@vger.kernel.org
Cc: Orgad Shaneh <orgads@gmail.com>
Subject: [PATCH 1/2] t5403: Refactor
Date: Mon, 24 Dec 2018 23:24:24 +0200	[thread overview]
Message-ID: <20181224212425.16596-2-orgads@gmail.com> (raw)
In-Reply-To: <20181224212425.16596-1-orgads@gmail.com>

From: Orgad Shaneh <orgads@gmail.com>

* Replace multiple clones and commits by test_commits.
* Replace 3 invocations of awk by read.

Signed-off-by: Orgad Shaneh <orgads@gmail.com>
---
 t/t5403-post-checkout-hook.sh | 80 +++++++++++++----------------------
 1 file changed, 29 insertions(+), 51 deletions(-)

diff --git a/t/t5403-post-checkout-hook.sh b/t/t5403-post-checkout-hook.sh
index fc898c9eac..9f9a5163c5 100755
--- a/t/t5403-post-checkout-hook.sh
+++ b/t/t5403-post-checkout-hook.sh
@@ -7,77 +7,55 @@ test_description='Test the post-checkout hook.'
 . ./test-lib.sh
 
 test_expect_success setup '
-	echo Data for commit0. >a &&
-	echo Data for commit0. >b &&
-	git update-index --add a &&
-	git update-index --add b &&
-	tree0=$(git write-tree) &&
-	commit0=$(echo setup | git commit-tree $tree0) &&
-	git update-ref refs/heads/master $commit0 &&
-	git clone ./. clone1 &&
-	git clone ./. clone2 &&
-	GIT_DIR=clone2/.git git branch new2 &&
-	echo Data for commit1. >clone2/b &&
-	GIT_DIR=clone2/.git git add clone2/b &&
-	GIT_DIR=clone2/.git git commit -m new2
-'
-
-for clone in 1 2; do
-    cat >clone${clone}/.git/hooks/post-checkout <<'EOF'
-#!/bin/sh
-echo $@ > $GIT_DIR/post-checkout.args
-EOF
-    chmod u+x clone${clone}/.git/hooks/post-checkout
-done
-
-test_expect_success 'post-checkout runs as expected ' '
-	GIT_DIR=clone1/.git git checkout master &&
-	test -e clone1/.git/post-checkout.args
+	mv .git/hooks-disabled .git/hooks &&
+	write_script .git/hooks/post-checkout <<-\EOF &&
+	echo $@ >.git/post-checkout.args
+	EOF
+	test_commit one &&
+	test_commit two &&
+	test_commit three three
 '
 
 test_expect_success 'post-checkout receives the right arguments with HEAD unchanged ' '
-	old=$(awk "{print \$1}" clone1/.git/post-checkout.args) &&
-	new=$(awk "{print \$2}" clone1/.git/post-checkout.args) &&
-	flag=$(awk "{print \$3}" clone1/.git/post-checkout.args) &&
-	test $old = $new && test $flag = 1
+	git checkout master &&
+	test -e .git/post-checkout.args &&
+	read old new flag <.git/post-checkout.args &&
+	test $old = $new && test $flag = 1 &&
+	rm -f .git/post-checkout.args
 '
 
 test_expect_success 'post-checkout runs as expected ' '
-	GIT_DIR=clone1/.git git checkout master &&
-	test -e clone1/.git/post-checkout.args
+	git checkout master &&
+	test -e .git/post-checkout.args &&
+	rm -f .git/post-checkout.args
 '
 
 test_expect_success 'post-checkout args are correct with git checkout -b ' '
-	GIT_DIR=clone1/.git git checkout -b new1 &&
-	old=$(awk "{print \$1}" clone1/.git/post-checkout.args) &&
-	new=$(awk "{print \$2}" clone1/.git/post-checkout.args) &&
-	flag=$(awk "{print \$3}" clone1/.git/post-checkout.args) &&
-	test $old = $new && test $flag = 1
+	git checkout -b new1 &&
+	read old new flag <.git/post-checkout.args &&
+	test $old = $new && test $flag = 1 &&
+	rm -f .git/post-checkout.args
 '
 
 test_expect_success 'post-checkout receives the right args with HEAD changed ' '
-	GIT_DIR=clone2/.git git checkout new2 &&
-	old=$(awk "{print \$1}" clone2/.git/post-checkout.args) &&
-	new=$(awk "{print \$2}" clone2/.git/post-checkout.args) &&
-	flag=$(awk "{print \$3}" clone2/.git/post-checkout.args) &&
-	test $old != $new && test $flag = 1
+	git checkout two &&
+	read old new flag <.git/post-checkout.args &&
+	test $old != $new && test $flag = 1 &&
+	rm -f .git/post-checkout.args
 '
 
 test_expect_success 'post-checkout receives the right args when not switching branches ' '
-	GIT_DIR=clone2/.git git checkout master b &&
-	old=$(awk "{print \$1}" clone2/.git/post-checkout.args) &&
-	new=$(awk "{print \$2}" clone2/.git/post-checkout.args) &&
-	flag=$(awk "{print \$3}" clone2/.git/post-checkout.args) &&
-	test $old = $new && test $flag = 0
+	git checkout master -- three &&
+	read old new flag <.git/post-checkout.args &&
+	test $old = $new && test $flag = 0 &&
+	rm -f .git/post-checkout.args
 '
 
 if test "$(git config --bool core.filemode)" = true; then
 mkdir -p templates/hooks
-cat >templates/hooks/post-checkout <<'EOF'
-#!/bin/sh
-echo $@ > $GIT_DIR/post-checkout.args
+write_script templates/hooks/post-checkout <<-\EOF
+echo $@ >$GIT_DIR/post-checkout.args
 EOF
-chmod +x templates/hooks/post-checkout
 
 test_expect_success 'post-checkout hook is triggered by clone' '
 	git clone --template=templates . clone3 &&
-- 
2.20.1


  reply	other threads:[~2018-12-24 21:24 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-24 21:24 [PATCH] Rebase: Run post-checkout hook on checkout orgads
2018-12-24 21:24 ` orgads [this message]
2018-12-28 22:34   ` [PATCH 1/2] t5403: Refactor Junio C Hamano
2018-12-29  3:06     ` Ramsay Jones
2018-12-29 21:36     ` Orgad Shaneh
2018-12-24 21:24 ` [PATCH 2/2] Rebase: Run post-checkout hook on checkout orgads
2018-12-28 22:53   ` Junio C Hamano
2018-12-29 21:31     ` Orgad Shaneh
  -- strict thread matches above, loose matches on Subject: below --
2018-12-20 21:55 [PATCH 1/2] t5403: Refactor orgads
2018-12-20 21:48 orgads
2018-12-21 16:06 ` Johannes Schindelin
     [not found]   ` <CAGHpTB+9L55Gvezhb7x6Kb49WS_nfzmKdVvpH3_=6GM7y8YQ_g@mail.gmail.com>
2018-12-24 20:54     ` Orgad Shaneh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181224212425.16596-2-orgads@gmail.com \
    --to=orgads@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.