git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Charles Bailey <charles@hashpling.org>
To: git@vger.kernel.org
Subject: [RFH] Add some very basic tests for git mergetool
Date: Sun, 17 Feb 2008 10:35:45 +0000	[thread overview]
Message-ID: <20080217103545.GA24158@hashpling.org> (raw)

---

I tried to add some basic tests for git mergetool but unfortunately I
hit a major stumbling block. I seem to have to include a delay in my
fake mergetool otherwise the cat command didn't seem to work. It was
as though the source file hadn't been writted out yet.

(Other more minor stumbling blocks are that mergetool is a fond user
of shell read and explicit /dev/tty which makes some paths not
testable.)

I'm not sure if there's a shell usleep instead of having to "sleep 1",
but to me, adding four seconds of doing nothing to a test is
completely unacceptable. Individually most of git's tests are very
fast which is very important as there are so many of them.

All suggestions are welcome, especially if they indicate a bug in my
mergetool changes, which other than in automated test, seem to work
well for me.

Charles.

 t/t7610-mergetool.sh |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 57 insertions(+), 0 deletions(-)
 create mode 100644 t/t7610-mergetool.sh

diff --git a/t/t7610-mergetool.sh b/t/t7610-mergetool.sh
new file mode 100644
index 0000000..a883f03
--- /dev/null
+++ b/t/t7610-mergetool.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+#
+# Copyright (c) 2008 Charles Bailey
+#
+
+test_description='git-mergetool
+
+Testing basic merge tool invocation'
+
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+    echo master >file1 &&
+    git add file1 &&
+    git commit -m "added file1" &&
+    git checkout -b branch1 master &&
+    echo branch1 change >file1 &&
+    echo branch1 newfile >file2 &&
+    git add file1 file2 &&
+    git commit -m "branch1 changes" &&
+    git checkout -b branch2 master &&
+    echo branch2 change >file1 &&
+    echo branch2 newfile >file2 &&
+    git add file1 file2 &&
+    git commit -m "branch2 changes" &&
+    git checkout master &&
+    echo master updated >file1 &&
+    echo master new >file2 &&
+    git add file1 file2 &&
+    git commit -m "master updates"
+'
+
+test_expect_success 'custom mergetool' '
+    git config merge.tool mytool &&
+    git config mergetool.mytool.cmd "sleep 1;cat \"\$REMOTE\" >\"\$MERGED\"" &&
+    git config mergetool.mytool.trustExitCode true &&
+    git checkout branch1 &&
+    ! git merge master >/dev/null 2>&1 &&
+    ( yes "" | git mergetool file1>/dev/null 2>&1 ) &&
+    ( yes "" | git mergetool file2>/dev/null 2>&1 ) &&
+    test "$(cat file1)" = "master updated" &&
+    test "$(cat file2)" = "master new" &&
+    git commit -m "branch1 resolved with mergetool"
+'
+
+test_expect_success 'custom mergetool' '
+    git config mergetool.mytool.cmdNoBase "sleep 1;cat \"\$LOCAL\" >\"\$MERGED\"" &&
+    git checkout branch2 &&
+    ! git merge master >/dev/null 2>&1 &&
+    ( yes "" | git mergetool file1>/dev/null 2>&1 ) &&
+    ( yes "" | git mergetool file2>/dev/null 2>&1 ) &&
+    test "$(cat file1)" = "master updated" &&
+    test "$(cat file2)" = "branch2 newfile" &&
+    git commit -m "branch2 resolved with mergetool"
+'
+
+test_done
-- 
1.5.4.1.34.g94bf

             reply	other threads:[~2008-02-17 10:36 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-17 10:35 Charles Bailey [this message]
2008-02-17 12:57 ` [RFH] Add some very basic tests for git mergetool Alex Riesen
2008-02-17 13:10   ` Charles Bailey

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=20080217103545.GA24158@hashpling.org \
    --to=charles@hashpling.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).