git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pete Wyckoff <pw@padd.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Johannes Sixt <j6t@kdbg.org>
Subject: [PATCHv2 14/21] git p4: cygwin p4 client does not mark read-only
Date: Sat, 26 Jan 2013 22:11:17 -0500	[thread overview]
Message-ID: <1359256284-5660-15-git-send-email-pw@padd.com> (raw)
In-Reply-To: <1359256284-5660-1-git-send-email-pw@padd.com>

There are some old versions of p4, compiled for cygwin, that
treat read-only files differently.

Normally, a file that is not open is read-only, meaning that
"test -w" on the file is false.  This works on unix, and it works
on windows using the NT version of p4.  The cygwin version
of p4, though, changes the permissions, but does not set the
windows read-only attribute, so "test -w" returns false.

Notice this oddity and make the tests work, even on cygiwn.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/lib-git-p4.sh               | 13 +++++++++++++
 t/t9807-git-p4-submit.sh      | 14 ++++++++++++--
 t/t9809-git-p4-client-view.sh |  4 ++--
 3 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 67101b1..2098b9b 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -148,3 +148,16 @@ client_view() {
 		printf "\t%s\n" "$@"
 	) | p4 client -i
 }
+
+is_cli_file_writeable() {
+	# cygwin version of p4 does not set read-only attr,
+	# will be marked 444 but -w is true
+	file="$1" &&
+	if test_have_prereq CYGWIN && p4 -V | grep -q CYGWIN
+	then
+		stat=$(stat --format=%a "$file") &&
+		test $stat = 644
+	else
+		test -w "$file"
+	fi
+}
diff --git a/t/t9807-git-p4-submit.sh b/t/t9807-git-p4-submit.sh
index 0ae048f..1fb7bc7 100755
--- a/t/t9807-git-p4-submit.sh
+++ b/t/t9807-git-p4-submit.sh
@@ -17,6 +17,16 @@ test_expect_success 'init depot' '
 	)
 '
 
+test_expect_failure 'is_cli_file_writeable function' '
+	(
+		cd "$cli" &&
+		echo a >a &&
+		is_cli_file_writeable a &&
+		! is_cli_file_writeable file1 &&
+		rm a
+	)
+'
+
 test_expect_success 'submit with no client dir' '
 	test_when_finished cleanup_git &&
 	git p4 clone --dest="$git" //depot &&
@@ -200,7 +210,7 @@ test_expect_success 'submit copy' '
 	(
 		cd "$cli" &&
 		test_path_is_file file5.ta &&
-		test ! -w file5.ta
+		! is_cli_file_writeable file5.ta
 	)
 '
 
@@ -219,7 +229,7 @@ test_expect_success 'submit rename' '
 		cd "$cli" &&
 		test_path_is_missing file6.t &&
 		test_path_is_file file6.ta &&
-		test ! -w file6.ta
+		! is_cli_file_writeable file6.ta
 	)
 '
 
diff --git a/t/t9809-git-p4-client-view.sh b/t/t9809-git-p4-client-view.sh
index a911988..77f6349 100755
--- a/t/t9809-git-p4-client-view.sh
+++ b/t/t9809-git-p4-client-view.sh
@@ -333,7 +333,7 @@ test_expect_success 'subdir clone, submit copy' '
 	(
 		cd "$cli" &&
 		test_path_is_file dir1/file11a &&
-		test ! -w dir1/file11a
+		! is_cli_file_writeable dir1/file11a
 	)
 '
 
@@ -353,7 +353,7 @@ test_expect_success 'subdir clone, submit rename' '
 		cd "$cli" &&
 		test_path_is_missing dir1/file13 &&
 		test_path_is_file dir1/file13a &&
-		test ! -w dir1/file13a
+		! is_cli_file_writeable dir1/file13a
 	)
 '
 
-- 
1.8.1.1.460.g6fa8886

  parent reply	other threads:[~2013-01-27  3:16 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-27  3:11 [PATCHv2 00/21] git p4: work on cygwin Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 01/21] git p4: temp branch name should use / even on windows Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 02/21] git p4: remove unused imports Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 03/21] git p4: generate better error message for bad depot path Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 04/21] git p4 test: use client_view to build the initial client Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 05/21] git p4 test: avoid loop in client_view Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 06/21] git p4 test: use client_view in t9806 Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 07/21] git p4 test: start p4d inside its db dir Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 08/21] git p4 test: translate windows paths for cygwin Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 09/21] git p4: remove unreachable windows \r\n conversion code Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 10/21] git p4: scrub crlf for utf16 files on windows Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 11/21] git p4 test: newline handling Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 12/21] git p4 test: use LineEnd unix in windows tests too Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 13/21] git p4 test: avoid wildcard * in windows Pete Wyckoff
2013-01-27  3:11 ` Pete Wyckoff [this message]
2013-01-27  3:11 ` [PATCHv2 15/21] git p4 test: use test_chmod for cygwin Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 16/21] git p4: disable read-only attribute before deleting Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 17/21] git p4: avoid shell when mapping users Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 18/21] git p4: avoid shell when invoking git rev-list Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 19/21] git p4: avoid shell when invoking git config --get-all Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 20/21] git p4: avoid shell when calling git config Pete Wyckoff
2013-01-27  3:11 ` [PATCHv2 21/21] git p4: introduce gitConfigBool Pete Wyckoff

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=1359256284-5660-15-git-send-email-pw@padd.com \
    --to=pw@padd.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j6t@kdbg.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).