All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2 00/10] git p4 test fixes
@ 2012-06-27 12:00 Pete Wyckoff
  2012-06-27 12:00 ` [PATCHv2 01/10] git p4 test: wait longer for p4d to start and test its pid Pete Wyckoff
                   ` (9 more replies)
  0 siblings, 10 replies; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:00 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt

Changes from v1 are:

    * Extend p4d start time to 5 min, modifiable by an
      environment variable.  Add a "kill -0" mechanism
      to detect early if the p4d we started died.
      (Thanks Junio)

    * Rewrite the badp4dir PATH and return value handling
      to make sure that earlier commands in the && chain
      are checked properly.  (Thanks Hannes)

This is a series of accumulated minor annoyances in
the "git p4" tests.  I've been carrying these around for
a while, now.

The big line count change here is from splitting big chunks
of t9800 out into logically separate tests.

Pete Wyckoff (10):
  git p4 test: wait longer for p4d to start and test its pid
  git p4 test: use real_path to resolve p4 client symlinks
  git p4 test: simplify quoting involving TRASH_DIRECTORY
  git p4 test: never create default test repo
  git p4 test: rename some "git-p4 command" strings
  git p4 test: check for error message in failed test
  git p4 test: copy source indeterminate
  git p4 test: cleanup_git should make a new $git
  git p4 test: split up big t9800 test
  git p4 test: fix badp4dir test

 t/lib-git-p4.sh                    |  26 ++-
 t/t9800-git-p4-basic.sh            | 416 ++-----------------------------------
 t/t9805-git-p4-skip-submit-edit.sh |   9 +-
 t/t9806-git-p4-options.sh          |  17 +-
 t/t9808-git-p4-chdir.sh            |   4 +-
 t/t9810-git-p4-rcs.sh              |   8 +-
 t/t9812-git-p4-wildcards.sh        | 147 +++++++++++++
 t/t9813-git-p4-preserve-users.sh   | 153 ++++++++++++++
 t/t9814-git-p4-rename.sh           | 206 ++++++++++++++++++
 9 files changed, 557 insertions(+), 429 deletions(-)
 create mode 100755 t/t9812-git-p4-wildcards.sh
 create mode 100755 t/t9813-git-p4-preserve-users.sh
 create mode 100755 t/t9814-git-p4-rename.sh

-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCHv2 01/10] git p4 test: wait longer for p4d to start and test its pid
  2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
@ 2012-06-27 12:00 ` Pete Wyckoff
  2012-06-27 21:16   ` Junio C Hamano
  2012-06-27 12:00 ` [PATCHv2 02/10] git p4 test: use real_path to resolve p4 client symlinks Pete Wyckoff
                   ` (8 subsequent siblings)
  9 siblings, 1 reply; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:00 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt

Running tests at high parallelism on a slow machine, 5 sec is
not enough to wait for p4d to start.  Change it to 5 minutes,
adding an environment variable P4D_START_PATIENCE to shrink
that if needed in automated test environments.

Also check if the pid of the p4d that we started is still
around.  If not, quit waiting for it immediately.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/lib-git-p4.sh | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 121e380..2e3706a 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -33,14 +33,27 @@ pidfile="$TRASH_DIRECTORY/p4d.pid"
 
 start_p4d() {
 	mkdir -p "$db" "$cli" "$git" &&
+	rm -f "$pidfile" &&
 	(
 		p4d -q -r "$db" -p $P4DPORT &
 		echo $! >"$pidfile"
 	) &&
-	for i in 1 2 3 4 5 ; do
+	# This gives p4d a long time to start up, as it can be
+	# quite slow depending on the machine.  Set this environment
+	# variable to something smaller to fail faster in, say,
+	# an automated test setup.
+	i=${P4D_START_PATIENCE:-300} &&
+	while [ $i -gt 0 ]; do
+		# succeed when p4 client commands start to work
 		p4 info >/dev/null 2>&1 && break || true &&
+		# fail if pid goes away
+		if [ -f "$pidfile" ] ; then
+		    kill -0 $(cat "$pidfile") || break
+		fi &&
+		# else keep waiting
 		echo waiting for p4d to start &&
-		sleep 1
+		sleep 1 &&
+		i=$(($i - 1))
 	done &&
 	# complain if it never started
 	p4 info >/dev/null &&
-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCHv2 02/10] git p4 test: use real_path to resolve p4 client symlinks
  2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
  2012-06-27 12:00 ` [PATCHv2 01/10] git p4 test: wait longer for p4d to start and test its pid Pete Wyckoff
@ 2012-06-27 12:00 ` Pete Wyckoff
  2012-06-27 12:00 ` [PATCHv2 03/10] git p4 test: simplify quoting involving TRASH_DIRECTORY Pete Wyckoff
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:00 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt

The p4 program is finicky about making sure the recorded client Root
matches the current working directory.  The way it discovers the latter
seems to be to inspect shell variable $PWD.  This could involve symlinks,
that while leading to the same place as the client Root, look different,
and cause p4 to fail.

Resolve all client paths using "test-path-utils real_path $path".  This
removes ".." and resolves all symlinks.

Discovered while running with --root=/dev/shm, which is a link to
/run/shm.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/lib-git-p4.sh           | 2 +-
 t/t9806-git-p4-options.sh | 2 +-
 t/t9810-git-p4-rcs.sh     | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 2e3706a..0b09735 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -27,7 +27,7 @@ export P4CLIENT=client
 export P4EDITOR=:
 
 db="$TRASH_DIRECTORY/db"
-cli="$TRASH_DIRECTORY/cli"
+cli=$(test-path-utils real_path "$TRASH_DIRECTORY/cli")
 git="$TRASH_DIRECTORY/git"
 pidfile="$TRASH_DIRECTORY/p4d.pid"
 
diff --git a/t/t9806-git-p4-options.sh b/t/t9806-git-p4-options.sh
index 2892367..83738fa 100755
--- a/t/t9806-git-p4-options.sh
+++ b/t/t9806-git-p4-options.sh
@@ -128,7 +128,7 @@ test_expect_success 'clone --use-client-spec' '
 		exec >/dev/null &&
 		test_must_fail git p4 clone --dest="$git" --use-client-spec
 	) &&
-	cli2="$TRASH_DIRECTORY/cli2" &&
+	cli2=$(test-path-utils real_path "$TRASH_DIRECTORY/cli2") &&
 	mkdir -p "$cli2" &&
 	test_when_finished "rmdir \"$cli2\"" &&
 	(
diff --git a/t/t9810-git-p4-rcs.sh b/t/t9810-git-p4-rcs.sh
index d8d9ca4..c7313b0 100755
--- a/t/t9810-git-p4-rcs.sh
+++ b/t/t9810-git-p4-rcs.sh
@@ -244,7 +244,7 @@ test_expect_success 'cope with rcs keyword expansion damage' '
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
 		git config git-p4.attemptRCSCleanup true &&
-		(cd ../cli && p4_append_to_file kwfile1.c) &&
+		(cd "$cli" && p4_append_to_file kwfile1.c) &&
 		old_lines=$(wc -l <kwfile1.c) &&
 		perl -n -i -e "print unless m/Revision:/" kwfile1.c &&
 		new_lines=$(wc -l <kwfile1.c) &&
-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCHv2 03/10] git p4 test: simplify quoting involving TRASH_DIRECTORY
  2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
  2012-06-27 12:00 ` [PATCHv2 01/10] git p4 test: wait longer for p4d to start and test its pid Pete Wyckoff
  2012-06-27 12:00 ` [PATCHv2 02/10] git p4 test: use real_path to resolve p4 client symlinks Pete Wyckoff
@ 2012-06-27 12:00 ` Pete Wyckoff
  2012-06-27 12:00 ` [PATCHv2 04/10] git p4 test: never create default test repo Pete Wyckoff
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:00 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt

For temporary files that are created in the top-level TRASH_DIRECTORY,
trust that the tests do not chdir except in subshells, and avoid some
quoting.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/t9800-git-p4-basic.sh            | 11 +++++------
 t/t9805-git-p4-skip-submit-edit.sh |  9 ++++-----
 t/t9806-git-p4-options.sh          | 14 ++++++--------
 t/t9808-git-p4-chdir.sh            |  4 ++--
 4 files changed, 17 insertions(+), 21 deletions(-)

diff --git a/t/t9800-git-p4-basic.sh b/t/t9800-git-p4-basic.sh
index 0f410c4..7401c21 100755
--- a/t/t9800-git-p4-basic.sh
+++ b/t/t9800-git-p4-basic.sh
@@ -126,15 +126,14 @@ test_expect_success 'clone two dirs, @all, conflicting files' '
 '
 
 test_expect_success 'exit when p4 fails to produce marshaled output' '
-	badp4dir="$TRASH_DIRECTORY/badp4dir" &&
-	mkdir "$badp4dir" &&
-	test_when_finished "rm \"$badp4dir/p4\" && rmdir \"$badp4dir\"" &&
-	cat >"$badp4dir"/p4 <<-EOF &&
+	mkdir badp4dir &&
+	test_when_finished "rm badp4dir/p4 && rmdir badp4dir" &&
+	cat >badp4dir/p4 <<-EOF &&
 	#!$SHELL_PATH
 	exit 1
 	EOF
-	chmod 755 "$badp4dir"/p4 &&
-	PATH="$badp4dir:$PATH" git p4 clone --dest="$git" //depot >errs 2>&1 ; retval=$? &&
+	chmod 755 badp4dir/p4 &&
+	PATH="$TRASH_DIRECTORY/badp4dir:$PATH" git p4 clone --dest="$git" //depot >errs 2>&1 ; retval=$? &&
 	test $retval -eq 1 &&
 	test_must_fail grep -q Traceback errs
 '
diff --git a/t/t9805-git-p4-skip-submit-edit.sh b/t/t9805-git-p4-skip-submit-edit.sh
index 353dcfb..fb3c8ec 100755
--- a/t/t9805-git-p4-skip-submit-edit.sh
+++ b/t/t9805-git-p4-skip-submit-edit.sh
@@ -78,20 +78,19 @@ test_expect_success 'skipSubmitEditCheck' '
 test_expect_success 'no config, edited' '
 	git p4 clone --dest="$git" //depot &&
 	test_when_finished cleanup_git &&
-	ed="$TRASH_DIRECTORY/ed.sh" &&
-	test_when_finished "rm \"$ed\"" &&
-	cat >"$ed" <<-EOF &&
+	test_when_finished "rm ed.sh" &&
+	cat >ed.sh <<-EOF &&
 		#!$SHELL_PATH
 		sleep 1
 		touch "\$1"
 		exit 0
 	EOF
-	chmod 755 "$ed" &&
+	chmod 755 ed.sh &&
 	(
 		cd "$git" &&
 		echo line >>file1 &&
 		git commit -a -m "change 5" &&
-		P4EDITOR="" EDITOR="\"$ed\"" git p4 submit &&
+		P4EDITOR="" EDITOR="\"$TRASH_DIRECTORY/ed.sh\"" git p4 submit &&
 		p4 changes //depot/... >wc &&
 		test_line_count = 5 wc
 	)
diff --git a/t/t9806-git-p4-options.sh b/t/t9806-git-p4-options.sh
index 83738fa..a37c6cb 100755
--- a/t/t9806-git-p4-options.sh
+++ b/t/t9806-git-p4-options.sh
@@ -39,10 +39,9 @@ test_expect_success 'clone --branch' '
 '
 
 test_expect_success 'clone --changesfile' '
-	cf="$TRASH_DIRECTORY/cf" &&
-	test_when_finished "rm \"$cf\"" &&
-	printf "1\n3\n" >"$cf" &&
-	git p4 clone --changesfile="$cf" --dest="$git" //depot &&
+	test_when_finished "rm cf" &&
+	printf "1\n3\n" >cf &&
+	git p4 clone --changesfile="$TRASH_DIRECTORY/cf" --dest="$git" //depot &&
 	test_when_finished cleanup_git &&
 	(
 		cd "$git" &&
@@ -55,10 +54,9 @@ test_expect_success 'clone --changesfile' '
 '
 
 test_expect_success 'clone --changesfile, @all' '
-	cf="$TRASH_DIRECTORY/cf" &&
-	test_when_finished "rm \"$cf\"" &&
-	printf "1\n3\n" >"$cf" &&
-	test_must_fail git p4 clone --changesfile="$cf" --dest="$git" //depot@all
+	test_when_finished "rm cf" &&
+	printf "1\n3\n" >cf &&
+	test_must_fail git p4 clone --changesfile="$TRASH_DIRECTORY/cf" --dest="$git" //depot@all
 '
 
 # imports both master and p4/master in refs/heads
diff --git a/t/t9808-git-p4-chdir.sh b/t/t9808-git-p4-chdir.sh
index 2f8014a..dc92e60 100755
--- a/t/t9808-git-p4-chdir.sh
+++ b/t/t9808-git-p4-chdir.sh
@@ -21,7 +21,7 @@ test_expect_success 'init depot' '
 # environment variable is set
 test_expect_success 'P4CONFIG and absolute dir clone' '
 	printf "P4PORT=$P4PORT\nP4CLIENT=$P4CLIENT\n" >p4config &&
-	test_when_finished "rm \"$TRASH_DIRECTORY/p4config\"" &&
+	test_when_finished "rm p4config" &&
 	test_when_finished cleanup_git &&
 	(
 		P4CONFIG=p4config && export P4CONFIG &&
@@ -33,7 +33,7 @@ test_expect_success 'P4CONFIG and absolute dir clone' '
 # same thing, but with relative directory name, note missing $ on --dest
 test_expect_success 'P4CONFIG and relative dir clone' '
 	printf "P4PORT=$P4PORT\nP4CLIENT=$P4CLIENT\n" >p4config &&
-	test_when_finished "rm \"$TRASH_DIRECTORY/p4config\"" &&
+	test_when_finished "rm p4config" &&
 	test_when_finished cleanup_git &&
 	(
 		P4CONFIG=p4config && export P4CONFIG &&
-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCHv2 04/10] git p4 test: never create default test repo
  2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
                   ` (2 preceding siblings ...)
  2012-06-27 12:00 ` [PATCHv2 03/10] git p4 test: simplify quoting involving TRASH_DIRECTORY Pete Wyckoff
@ 2012-06-27 12:00 ` Pete Wyckoff
  2012-06-27 12:00 ` [PATCHv2 05/10] git p4 test: rename some "git-p4 command" strings Pete Wyckoff
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:00 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt


Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/lib-git-p4.sh | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 0b09735..4c5b1f6 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -2,6 +2,10 @@
 # Library code for git p4 tests
 #
 
+# p4 tests never use the top-level repo; always build/clone into
+# a subdirectory called "$git"
+TEST_NO_CREATE_REPO=NoThanks
+
 . ./test-lib.sh
 
 if ! test_have_prereq PYTHON; then
-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCHv2 05/10] git p4 test: rename some "git-p4 command" strings
  2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
                   ` (3 preceding siblings ...)
  2012-06-27 12:00 ` [PATCHv2 04/10] git p4 test: never create default test repo Pete Wyckoff
@ 2012-06-27 12:00 ` Pete Wyckoff
  2012-06-27 12:00 ` [PATCHv2 06/10] git p4 test: check for error message in failed test Pete Wyckoff
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:00 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt

Use the actual command name; git-p4 is gone.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/t9810-git-p4-rcs.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/t/t9810-git-p4-rcs.sh b/t/t9810-git-p4-rcs.sh
index c7313b0..d8bb3d0 100755
--- a/t/t9810-git-p4-rcs.sh
+++ b/t/t9810-git-p4-rcs.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-test_description='git-p4 rcs keywords'
+test_description='git p4 rcs keywords'
 
 . ./lib-git-p4.sh
 
@@ -147,7 +147,7 @@ test_expect_success 'scrub ko files differently' '
 	)
 '
 
-# hack; git-p4 submit should do it on its own
+# hack; git p4 submit should do it on its own
 test_expect_success 'cleanup after failure' '
 	(
 		cd "$cli" &&
@@ -193,7 +193,7 @@ test_expect_success 'do not scrub plain text' '
 	)
 '
 
-# hack; git-p4 submit should do it on its own
+# hack; git p4 submit should do it on its own
 test_expect_success 'cleanup after failure 2' '
 	(
 		cd "$cli" &&
-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCHv2 06/10] git p4 test: check for error message in failed test
  2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
                   ` (4 preceding siblings ...)
  2012-06-27 12:00 ` [PATCHv2 05/10] git p4 test: rename some "git-p4 command" strings Pete Wyckoff
@ 2012-06-27 12:00 ` Pete Wyckoff
  2012-06-27 12:01 ` [PATCHv2 07/10] git p4 test: copy source indeterminate Pete Wyckoff
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:00 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt

Make sure the test fails for the expected reason.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/t9800-git-p4-basic.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/t/t9800-git-p4-basic.sh b/t/t9800-git-p4-basic.sh
index 7401c21..84676a1 100755
--- a/t/t9800-git-p4-basic.sh
+++ b/t/t9800-git-p4-basic.sh
@@ -45,7 +45,8 @@ test_expect_success 'git p4 sync uninitialized repo' '
 	test_when_finished cleanup_git &&
 	(
 		cd "$git" &&
-		test_must_fail git p4 sync
+		test_must_fail git p4 sync 2>errs &&
+		test_i18ngrep "Perhaps you never did" errs
 	)
 '
 
-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCHv2 07/10] git p4 test: copy source indeterminate
  2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
                   ` (5 preceding siblings ...)
  2012-06-27 12:00 ` [PATCHv2 06/10] git p4 test: check for error message in failed test Pete Wyckoff
@ 2012-06-27 12:01 ` Pete Wyckoff
  2012-06-27 12:01 ` [PATCHv2 08/10] git p4 test: cleanup_git should make a new $git Pete Wyckoff
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:01 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt

Msysgit testing showed that the source file found by copy
detection is indeterminate when there are multiple sources
to choose from.  This appears to be valid.  Adjust the test
so that it passes if it finds any of the potential copy sources.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/t9800-git-p4-basic.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/t/t9800-git-p4-basic.sh b/t/t9800-git-p4-basic.sh
index 84676a1..60c1f57 100755
--- a/t/t9800-git-p4-basic.sh
+++ b/t/t9800-git-p4-basic.sh
@@ -547,7 +547,7 @@ test_expect_success 'detect copies' '
 		level=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/C0*//") &&
 		test -n "$level" && test "$level" -gt 0 && test "$level" -lt 98 &&
 		src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
-		test "$src" = file10 &&
+		test "$src" = file10 -o "$src" = file11 &&
 		git config git-p4.detectCopies $(($level + 2)) &&
 		git p4 submit &&
 		p4 filelog //depot/file12 &&
@@ -561,7 +561,7 @@ test_expect_success 'detect copies' '
 		level=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/C0*//") &&
 		test -n "$level" && test "$level" -gt 2 && test "$level" -lt 100 &&
 		src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
-		test "$src" = file10 &&
+		test "$src" = file10 -o "$src" = file11 -o "$src" = file12 &&
 		git config git-p4.detectCopies $(($level - 2)) &&
 		git p4 submit &&
 		p4 filelog //depot/file13 &&
-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCHv2 08/10] git p4 test: cleanup_git should make a new $git
  2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
                   ` (6 preceding siblings ...)
  2012-06-27 12:01 ` [PATCHv2 07/10] git p4 test: copy source indeterminate Pete Wyckoff
@ 2012-06-27 12:01 ` Pete Wyckoff
  2012-06-27 12:01 ` [PATCHv2 09/10] git p4 test: split up big t9800 test Pete Wyckoff
  2012-06-27 12:01 ` [PATCHv2 10/10] git p4 test: fix badp4dir test Pete Wyckoff
  9 siblings, 0 replies; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:01 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt

For convenience, leave one in place at the end of each
test so that it is not necessary to build a new one.  This
makes it consistent with $cli.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/lib-git-p4.sh           | 3 ++-
 t/t9800-git-p4-basic.sh   | 1 +
 t/t9806-git-p4-options.sh | 1 -
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 4c5b1f6..0bc3566 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -86,5 +86,6 @@ kill_p4d() {
 }
 
 cleanup_git() {
-	rm -rf "$git"
+	rm -rf "$git" &&
+	mkdir "$git"
 }
diff --git a/t/t9800-git-p4-basic.sh b/t/t9800-git-p4-basic.sh
index 60c1f57..234f727 100755
--- a/t/t9800-git-p4-basic.sh
+++ b/t/t9800-git-p4-basic.sh
@@ -270,6 +270,7 @@ test_expect_success 'wildcard files submit back to p4, delete' '
 '
 
 test_expect_success 'clone bare' '
+	rm -rf "$git" &&
 	git p4 clone --dest="$git" --bare //depot &&
 	test_when_finished cleanup_git &&
 	(
diff --git a/t/t9806-git-p4-options.sh b/t/t9806-git-p4-options.sh
index a37c6cb..fa40cc8 100755
--- a/t/t9806-git-p4-options.sh
+++ b/t/t9806-git-p4-options.sh
@@ -149,7 +149,6 @@ test_expect_success 'clone --use-client-spec' '
 	cleanup_git &&
 
 	# same thing again, this time with variable instead of option
-	mkdir "$git" &&
 	(
 		cd "$git" &&
 		git init &&
-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCHv2 09/10] git p4 test: split up big t9800 test
  2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
                   ` (7 preceding siblings ...)
  2012-06-27 12:01 ` [PATCHv2 08/10] git p4 test: cleanup_git should make a new $git Pete Wyckoff
@ 2012-06-27 12:01 ` Pete Wyckoff
  2012-06-27 12:01 ` [PATCHv2 10/10] git p4 test: fix badp4dir test Pete Wyckoff
  9 siblings, 0 replies; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:01 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt

The original t9800 test code has a mix of assorted topics, some
of which are big enough to deserve their own homes.
Interdependencies between the topics make it confusing when
trying to study one in isolation.  And it takes so long to run
that debugging an individual test is difficult.

Split out three big chunks of tests into their own files:

    t9812-git-p4-wildcards.sh gets the 8 p4 wildcard tests

    t9813-git-p4-preserve-users.sh gets the 4 --preserve-user tests

    t9814-git-p4-rename.sh gets the 2 copy and rename tests

Test 9800 execution time drops from 29 sec to 9 sec.  The
sequential time to run all tests is a slower due to the three
extra p4d startup/shutdown sequences, but the overall parallel
execution time is about the same, at 52 sec.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/t9800-git-p4-basic.sh          | 397 ---------------------------------------
 t/t9812-git-p4-wildcards.sh      | 147 +++++++++++++++
 t/t9813-git-p4-preserve-users.sh | 153 +++++++++++++++
 t/t9814-git-p4-rename.sh         | 206 ++++++++++++++++++++
 4 files changed, 506 insertions(+), 397 deletions(-)
 create mode 100755 t/t9812-git-p4-wildcards.sh
 create mode 100755 t/t9813-git-p4-preserve-users.sh
 create mode 100755 t/t9814-git-p4-rename.sh

diff --git a/t/t9800-git-p4-basic.sh b/t/t9800-git-p4-basic.sh
index 234f727..befd823 100755
--- a/t/t9800-git-p4-basic.sh
+++ b/t/t9800-git-p4-basic.sh
@@ -139,136 +139,6 @@ test_expect_success 'exit when p4 fails to produce marshaled output' '
 	test_must_fail grep -q Traceback errs
 '
 
-test_expect_success 'add p4 files with wildcards in the names' '
-	(
-		cd "$cli" &&
-		echo file-wild-hash >file-wild#hash &&
-		echo file-wild-star >file-wild\*star &&
-		echo file-wild-at >file-wild@at &&
-		echo file-wild-percent >file-wild%percent &&
-		p4 add -f file-wild* &&
-		p4 submit -d "file wildcards"
-	)
-'
-
-test_expect_success 'wildcard files git p4 clone' '
-	git p4 clone --dest="$git" //depot &&
-	test_when_finished cleanup_git &&
-	(
-		cd "$git" &&
-		test -f file-wild#hash &&
-		test -f file-wild\*star &&
-		test -f file-wild@at &&
-		test -f file-wild%percent
-	)
-'
-
-test_expect_success 'wildcard files submit back to p4, add' '
-	test_when_finished cleanup_git &&
-	git p4 clone --dest="$git" //depot &&
-	(
-		cd "$git" &&
-		echo git-wild-hash >git-wild#hash &&
-		echo git-wild-star >git-wild\*star &&
-		echo git-wild-at >git-wild@at &&
-		echo git-wild-percent >git-wild%percent &&
-		git add git-wild* &&
-		git commit -m "add some wildcard filenames" &&
-		git config git-p4.skipSubmitEdit true &&
-		git p4 submit
-	) &&
-	(
-		cd "$cli" &&
-		test_path_is_file git-wild#hash &&
-		test_path_is_file git-wild\*star &&
-		test_path_is_file git-wild@at &&
-		test_path_is_file git-wild%percent
-	)
-'
-
-test_expect_success 'wildcard files submit back to p4, modify' '
-	test_when_finished cleanup_git &&
-	git p4 clone --dest="$git" //depot &&
-	(
-		cd "$git" &&
-		echo new-line >>git-wild#hash &&
-		echo new-line >>git-wild\*star &&
-		echo new-line >>git-wild@at &&
-		echo new-line >>git-wild%percent &&
-		git add git-wild* &&
-		git commit -m "modify the wildcard files" &&
-		git config git-p4.skipSubmitEdit true &&
-		git p4 submit
-	) &&
-	(
-		cd "$cli" &&
-		test_line_count = 2 git-wild#hash &&
-		test_line_count = 2 git-wild\*star &&
-		test_line_count = 2 git-wild@at &&
-		test_line_count = 2 git-wild%percent
-	)
-'
-
-test_expect_success 'wildcard files submit back to p4, copy' '
-	test_when_finished cleanup_git &&
-	git p4 clone --dest="$git" //depot &&
-	(
-		cd "$git" &&
-		cp file2 git-wild-cp#hash &&
-		git add git-wild-cp#hash &&
-		cp git-wild\*star file-wild-3 &&
-		git add file-wild-3 &&
-		git commit -m "wildcard copies" &&
-		git config git-p4.detectCopies true &&
-		git config git-p4.detectCopiesHarder true &&
-		git config git-p4.skipSubmitEdit true &&
-		git p4 submit
-	) &&
-	(
-		cd "$cli" &&
-		test_path_is_file git-wild-cp#hash &&
-		test_path_is_file file-wild-3
-	)
-'
-
-test_expect_success 'wildcard files submit back to p4, rename' '
-	test_when_finished cleanup_git &&
-	git p4 clone --dest="$git" //depot &&
-	(
-		cd "$git" &&
-		git mv git-wild@at file-wild-4 &&
-		git mv file-wild-3 git-wild-cp%percent &&
-		git commit -m "wildcard renames" &&
-		git config git-p4.detectRenames true &&
-		git config git-p4.skipSubmitEdit true &&
-		git p4 submit
-	) &&
-	(
-		cd "$cli" &&
-		test_path_is_missing git-wild@at &&
-		test_path_is_file git-wild-cp%percent
-	)
-'
-
-test_expect_success 'wildcard files submit back to p4, delete' '
-	test_when_finished cleanup_git &&
-	git p4 clone --dest="$git" //depot &&
-	(
-		cd "$git" &&
-		git rm git-wild* &&
-		git commit -m "delete the wildcard files" &&
-		git config git-p4.skipSubmitEdit true &&
-		git p4 submit
-	) &&
-	(
-		cd "$cli" &&
-		test_path_is_missing git-wild#hash &&
-		test_path_is_missing git-wild\*star &&
-		test_path_is_missing git-wild@at &&
-		test_path_is_missing git-wild%percent
-	)
-'
-
 test_expect_success 'clone bare' '
 	rm -rf "$git" &&
 	git p4 clone --dest="$git" --bare //depot &&
@@ -281,133 +151,6 @@ test_expect_success 'clone bare' '
 	)
 '
 
-p4_add_user() {
-	name=$1 fullname=$2 &&
-	p4 user -f -i <<-EOF &&
-	User: $name
-	Email: $name@localhost
-	FullName: $fullname
-	EOF
-	p4 passwd -P secret $name
-}
-
-p4_grant_admin() {
-	name=$1 &&
-	{
-		p4 protect -o &&
-		echo "    admin user $name * //depot/..."
-	} | p4 protect -i
-}
-
-p4_check_commit_author() {
-	file=$1 user=$2 &&
-	p4 changes -m 1 //depot/$file | grep -q $user
-}
-
-make_change_by_user() {
-	file=$1 name=$2 email=$3 &&
-	echo "username: a change by $name" >>"$file" &&
-	git add "$file" &&
-	git commit --author "$name <$email>" -m "a change by $name"
-}
-
-# Test username support, submitting as user 'alice'
-test_expect_success 'preserve users' '
-	p4_add_user alice Alice &&
-	p4_add_user bob Bob &&
-	p4_grant_admin alice &&
-	git p4 clone --dest="$git" //depot &&
-	test_when_finished cleanup_git &&
-	(
-		cd "$git" &&
-		echo "username: a change by alice" >>file1 &&
-		echo "username: a change by bob" >>file2 &&
-		git commit --author "Alice <alice@localhost>" -m "a change by alice" file1 &&
-		git commit --author "Bob <bob@localhost>" -m "a change by bob" file2 &&
-		git config git-p4.skipSubmitEditCheck true &&
-		P4EDITOR=touch P4USER=alice P4PASSWD=secret git p4 commit --preserve-user &&
-		p4_check_commit_author file1 alice &&
-		p4_check_commit_author file2 bob
-	)
-'
-
-# Test username support, submitting as bob, who lacks admin rights. Should
-# not submit change to p4 (git diff should show deltas).
-test_expect_success 'refuse to preserve users without perms' '
-	git p4 clone --dest="$git" //depot &&
-	test_when_finished cleanup_git &&
-	(
-		cd "$git" &&
-		git config git-p4.skipSubmitEditCheck true &&
-		echo "username-noperms: a change by alice" >>file1 &&
-		git commit --author "Alice <alice@localhost>" -m "perms: a change by alice" file1 &&
-		P4EDITOR=touch P4USER=bob P4PASSWD=secret &&
-		export P4EDITOR P4USER P4PASSWD &&
-		test_must_fail git p4 commit --preserve-user &&
-		! git diff --exit-code HEAD..p4/master
-	)
-'
-
-# What happens with unknown author? Without allowMissingP4Users it should fail.
-test_expect_success 'preserve user where author is unknown to p4' '
-	git p4 clone --dest="$git" //depot &&
-	test_when_finished cleanup_git &&
-	(
-		cd "$git" &&
-		git config git-p4.skipSubmitEditCheck true &&
-		echo "username-bob: a change by bob" >>file1 &&
-		git commit --author "Bob <bob@localhost>" -m "preserve: a change by bob" file1 &&
-		echo "username-unknown: a change by charlie" >>file1 &&
-		git commit --author "Charlie <charlie@localhost>" -m "preserve: a change by charlie" file1 &&
-		P4EDITOR=touch P4USER=alice P4PASSWD=secret &&
-		export P4EDITOR P4USER P4PASSWD &&
-		test_must_fail git p4 commit --preserve-user &&
-		! git diff --exit-code HEAD..p4/master &&
-
-		echo "$0: repeat with allowMissingP4Users enabled" &&
-		git config git-p4.allowMissingP4Users true &&
-		git config git-p4.preserveUser true &&
-		git p4 commit &&
-		git diff --exit-code HEAD..p4/master &&
-		p4_check_commit_author file1 alice
-	)
-'
-
-# If we're *not* using --preserve-user, git p4 should warn if we're submitting
-# changes that are not all ours.
-# Test: user in p4 and user unknown to p4.
-# Test: warning disabled and user is the same.
-test_expect_success 'not preserving user with mixed authorship' '
-	git p4 clone --dest="$git" //depot &&
-	test_when_finished cleanup_git &&
-	(
-		cd "$git" &&
-		git config git-p4.skipSubmitEditCheck true &&
-		p4_add_user derek Derek &&
-
-		make_change_by_user usernamefile3 Derek derek@localhost &&
-		P4EDITOR=cat P4USER=alice P4PASSWD=secret &&
-		export P4EDITOR P4USER P4PASSWD &&
-		git p4 commit |\
-		grep "git author derek@localhost does not match" &&
-
-		make_change_by_user usernamefile3 Charlie charlie@localhost &&
-		git p4 commit |\
-		grep "git author charlie@localhost does not match" &&
-
-		make_change_by_user usernamefile3 alice alice@localhost &&
-		git p4 commit |\
-		test_must_fail grep "git author.*does not match" &&
-
-		git config git-p4.skipUserNameCheck true &&
-		make_change_by_user usernamefile3 Charlie charlie@localhost &&
-		git p4 commit |\
-		test_must_fail grep "git author.*does not match" &&
-
-		p4_check_commit_author usernamefile3 alice
-	)
-'
-
 marshal_dump() {
 	what=$1
 	"$PYTHON_PATH" -c 'import marshal, sys; d = marshal.load(sys.stdin); print d["'$what'"]'
@@ -430,146 +173,6 @@ test_expect_success 'initial import time from top change time' '
 	)
 '
 
-# Rename a file and confirm that rename is not detected in P4.
-# Rename the new file again with detectRenames option enabled and confirm that
-# this is detected in P4.
-# Rename the new file again adding an extra line, configure a big threshold in
-# detectRenames and confirm that rename is not detected in P4.
-# Repeat, this time with a smaller threshold and confirm that the rename is
-# detected in P4.
-test_expect_success 'detect renames' '
-	git p4 clone --dest="$git" //depot@all &&
-	test_when_finished cleanup_git &&
-	(
-		cd "$git" &&
-		git config git-p4.skipSubmitEdit true &&
-
-		git mv file1 file4 &&
-		git commit -a -m "Rename file1 to file4" &&
-		git diff-tree -r -M HEAD &&
-		git p4 submit &&
-		p4 filelog //depot/file4 &&
-		p4 filelog //depot/file4 | test_must_fail grep -q "branch from" &&
-
-		git mv file4 file5 &&
-		git commit -a -m "Rename file4 to file5" &&
-		git diff-tree -r -M HEAD &&
-		git config git-p4.detectRenames true &&
-		git p4 submit &&
-		p4 filelog //depot/file5 &&
-		p4 filelog //depot/file5 | grep -q "branch from //depot/file4" &&
-
-		git mv file5 file6 &&
-		echo update >>file6 &&
-		git add file6 &&
-		git commit -a -m "Rename file5 to file6 with changes" &&
-		git diff-tree -r -M HEAD &&
-		level=$(git diff-tree -r -M HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/R0*//") &&
-		test -n "$level" && test "$level" -gt 0 && test "$level" -lt 98 &&
-		git config git-p4.detectRenames $(($level + 2)) &&
-		git p4 submit &&
-		p4 filelog //depot/file6 &&
-		p4 filelog //depot/file6 | test_must_fail grep -q "branch from" &&
-
-		git mv file6 file7 &&
-		echo update >>file7 &&
-		git add file7 &&
-		git commit -a -m "Rename file6 to file7 with changes" &&
-		git diff-tree -r -M HEAD &&
-		level=$(git diff-tree -r -M HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/R0*//") &&
-		test -n "$level" && test "$level" -gt 2 && test "$level" -lt 100 &&
-		git config git-p4.detectRenames $(($level - 2)) &&
-		git p4 submit &&
-		p4 filelog //depot/file7 &&
-		p4 filelog //depot/file7 | grep -q "branch from //depot/file6"
-	)
-'
-
-# Copy a file and confirm that copy is not detected in P4.
-# Copy a file with detectCopies option enabled and confirm that copy is not
-# detected in P4.
-# Modify and copy a file with detectCopies option enabled and confirm that copy
-# is detected in P4.
-# Copy a file with detectCopies and detectCopiesHarder options enabled and
-# confirm that copy is detected in P4.
-# Modify and copy a file, configure a bigger threshold in detectCopies and
-# confirm that copy is not detected in P4.
-# Modify and copy a file, configure a smaller threshold in detectCopies and
-# confirm that copy is detected in P4.
-test_expect_success 'detect copies' '
-	git p4 clone --dest="$git" //depot@all &&
-	test_when_finished cleanup_git &&
-	(
-		cd "$git" &&
-		git config git-p4.skipSubmitEdit true &&
-
-		cp file2 file8 &&
-		git add file8 &&
-		git commit -a -m "Copy file2 to file8" &&
-		git diff-tree -r -C HEAD &&
-		git p4 submit &&
-		p4 filelog //depot/file8 &&
-		p4 filelog //depot/file8 | test_must_fail grep -q "branch from" &&
-
-		cp file2 file9 &&
-		git add file9 &&
-		git commit -a -m "Copy file2 to file9" &&
-		git diff-tree -r -C HEAD &&
-		git config git-p4.detectCopies true &&
-		git p4 submit &&
-		p4 filelog //depot/file9 &&
-		p4 filelog //depot/file9 | test_must_fail grep -q "branch from" &&
-
-		echo "file2" >>file2 &&
-		cp file2 file10 &&
-		git add file2 file10 &&
-		git commit -a -m "Modify and copy file2 to file10" &&
-		git diff-tree -r -C HEAD &&
-		git p4 submit &&
-		p4 filelog //depot/file10 &&
-		p4 filelog //depot/file10 | grep -q "branch from //depot/file" &&
-
-		cp file2 file11 &&
-		git add file11 &&
-		git commit -a -m "Copy file2 to file11" &&
-		git diff-tree -r -C --find-copies-harder HEAD &&
-		src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
-		test "$src" = file10 &&
-		git config git-p4.detectCopiesHarder true &&
-		git p4 submit &&
-		p4 filelog //depot/file11 &&
-		p4 filelog //depot/file11 | grep -q "branch from //depot/file" &&
-
-		cp file2 file12 &&
-		echo "some text" >>file12 &&
-		git add file12 &&
-		git commit -a -m "Copy file2 to file12 with changes" &&
-		git diff-tree -r -C --find-copies-harder HEAD &&
-		level=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/C0*//") &&
-		test -n "$level" && test "$level" -gt 0 && test "$level" -lt 98 &&
-		src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
-		test "$src" = file10 -o "$src" = file11 &&
-		git config git-p4.detectCopies $(($level + 2)) &&
-		git p4 submit &&
-		p4 filelog //depot/file12 &&
-		p4 filelog //depot/file12 | test_must_fail grep -q "branch from" &&
-
-		cp file2 file13 &&
-		echo "different text" >>file13 &&
-		git add file13 &&
-		git commit -a -m "Copy file2 to file13 with changes" &&
-		git diff-tree -r -C --find-copies-harder HEAD &&
-		level=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/C0*//") &&
-		test -n "$level" && test "$level" -gt 2 && test "$level" -lt 100 &&
-		src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
-		test "$src" = file10 -o "$src" = file11 -o "$src" = file12 &&
-		git config git-p4.detectCopies $(($level - 2)) &&
-		git p4 submit &&
-		p4 filelog //depot/file13 &&
-		p4 filelog //depot/file13 | grep -q "branch from //depot/file"
-	)
-'
-
 test_expect_success 'kill p4d' '
 	kill_p4d
 '
diff --git a/t/t9812-git-p4-wildcards.sh b/t/t9812-git-p4-wildcards.sh
new file mode 100755
index 0000000..143d413
--- /dev/null
+++ b/t/t9812-git-p4-wildcards.sh
@@ -0,0 +1,147 @@
+#!/bin/sh
+
+test_description='git p4 wildcards'
+
+. ./lib-git-p4.sh
+
+test_expect_success 'start p4d' '
+	start_p4d
+'
+
+test_expect_success 'add p4 files with wildcards in the names' '
+	(
+		cd "$cli" &&
+		printf "file2\nhas\nsome\nrandom\ntext\n" >file2 &&
+		p4 add file2 &&
+		echo file-wild-hash >file-wild#hash &&
+		echo file-wild-star >file-wild\*star &&
+		echo file-wild-at >file-wild@at &&
+		echo file-wild-percent >file-wild%percent &&
+		p4 add -f file-wild* &&
+		p4 submit -d "file wildcards"
+	)
+'
+
+test_expect_success 'wildcard files git p4 clone' '
+	git p4 clone --dest="$git" //depot &&
+	test_when_finished cleanup_git &&
+	(
+		cd "$git" &&
+		test -f file-wild#hash &&
+		test -f file-wild\*star &&
+		test -f file-wild@at &&
+		test -f file-wild%percent
+	)
+'
+
+test_expect_success 'wildcard files submit back to p4, add' '
+	test_when_finished cleanup_git &&
+	git p4 clone --dest="$git" //depot &&
+	(
+		cd "$git" &&
+		echo git-wild-hash >git-wild#hash &&
+		echo git-wild-star >git-wild\*star &&
+		echo git-wild-at >git-wild@at &&
+		echo git-wild-percent >git-wild%percent &&
+		git add git-wild* &&
+		git commit -m "add some wildcard filenames" &&
+		git config git-p4.skipSubmitEdit true &&
+		git p4 submit
+	) &&
+	(
+		cd "$cli" &&
+		test_path_is_file git-wild#hash &&
+		test_path_is_file git-wild\*star &&
+		test_path_is_file git-wild@at &&
+		test_path_is_file git-wild%percent
+	)
+'
+
+test_expect_success 'wildcard files submit back to p4, modify' '
+	test_when_finished cleanup_git &&
+	git p4 clone --dest="$git" //depot &&
+	(
+		cd "$git" &&
+		echo new-line >>git-wild#hash &&
+		echo new-line >>git-wild\*star &&
+		echo new-line >>git-wild@at &&
+		echo new-line >>git-wild%percent &&
+		git add git-wild* &&
+		git commit -m "modify the wildcard files" &&
+		git config git-p4.skipSubmitEdit true &&
+		git p4 submit
+	) &&
+	(
+		cd "$cli" &&
+		test_line_count = 2 git-wild#hash &&
+		test_line_count = 2 git-wild\*star &&
+		test_line_count = 2 git-wild@at &&
+		test_line_count = 2 git-wild%percent
+	)
+'
+
+test_expect_success 'wildcard files submit back to p4, copy' '
+	test_when_finished cleanup_git &&
+	git p4 clone --dest="$git" //depot &&
+	(
+		cd "$git" &&
+		cp file2 git-wild-cp#hash &&
+		git add git-wild-cp#hash &&
+		cp git-wild\*star file-wild-3 &&
+		git add file-wild-3 &&
+		git commit -m "wildcard copies" &&
+		git config git-p4.detectCopies true &&
+		git config git-p4.detectCopiesHarder true &&
+		git config git-p4.skipSubmitEdit true &&
+		git p4 submit
+	) &&
+	(
+		cd "$cli" &&
+		test_path_is_file git-wild-cp#hash &&
+		test_path_is_file file-wild-3
+	)
+'
+
+test_expect_success 'wildcard files submit back to p4, rename' '
+	test_when_finished cleanup_git &&
+	git p4 clone --dest="$git" //depot &&
+	(
+		cd "$git" &&
+		git mv git-wild@at file-wild-4 &&
+		git mv file-wild-3 git-wild-cp%percent &&
+		git commit -m "wildcard renames" &&
+		git config git-p4.detectRenames true &&
+		git config git-p4.skipSubmitEdit true &&
+		git p4 submit
+	) &&
+	(
+		cd "$cli" &&
+		test_path_is_missing git-wild@at &&
+		test_path_is_file git-wild-cp%percent
+	)
+'
+
+test_expect_success 'wildcard files submit back to p4, delete' '
+	test_when_finished cleanup_git &&
+	git p4 clone --dest="$git" //depot &&
+	(
+		cd "$git" &&
+		git rm git-wild* &&
+		git commit -m "delete the wildcard files" &&
+		git config git-p4.skipSubmitEdit true &&
+		git p4 submit
+	) &&
+	(
+		cd "$cli" &&
+		test_path_is_missing git-wild#hash &&
+		test_path_is_missing git-wild\*star &&
+		test_path_is_missing git-wild@at &&
+		test_path_is_missing git-wild%percent
+	)
+'
+
+test_expect_success 'kill p4d' '
+	kill_p4d
+'
+
+test_done
diff --git a/t/t9813-git-p4-preserve-users.sh b/t/t9813-git-p4-preserve-users.sh
new file mode 100755
index 0000000..f2e85e5
--- /dev/null
+++ b/t/t9813-git-p4-preserve-users.sh
@@ -0,0 +1,153 @@
+#!/bin/sh
+
+test_description='git p4 preserve users'
+
+. ./lib-git-p4.sh
+
+test_expect_success 'start p4d' '
+	start_p4d
+'
+
+test_expect_success 'create files' '
+	(
+		cd "$cli" &&
+		p4 client -o | sed "/LineEnd/s/:.*/:unix/" | p4 client -i &&
+		echo file1 >file1 &&
+		echo file2 >file2 &&
+		p4 add file1 file2 &&
+		p4 submit -d "add files"
+	)
+'
+
+p4_add_user() {
+	name=$1 fullname=$2 &&
+	p4 user -f -i <<-EOF &&
+	User: $name
+	Email: $name@localhost
+	FullName: $fullname
+	EOF
+	p4 passwd -P secret $name
+}
+
+p4_grant_admin() {
+	name=$1 &&
+	{
+		p4 protect -o &&
+		echo "    admin user $name * //depot/..."
+	} | p4 protect -i
+}
+
+p4_check_commit_author() {
+	file=$1 user=$2 &&
+	p4 changes -m 1 //depot/$file | grep -q $user
+}
+
+make_change_by_user() {
+	file=$1 name=$2 email=$3 &&
+	echo "username: a change by $name" >>"$file" &&
+	git add "$file" &&
+	git commit --author "$name <$email>" -m "a change by $name"
+}
+
+# Test username support, submitting as user 'alice'
+test_expect_success 'preserve users' '
+	p4_add_user alice Alice &&
+	p4_add_user bob Bob &&
+	p4_grant_admin alice &&
+	git p4 clone --dest="$git" //depot &&
+	test_when_finished cleanup_git &&
+	(
+		cd "$git" &&
+		echo "username: a change by alice" >>file1 &&
+		echo "username: a change by bob" >>file2 &&
+		git commit --author "Alice <alice@localhost>" -m "a change by alice" file1 &&
+		git commit --author "Bob <bob@localhost>" -m "a change by bob" file2 &&
+		git config git-p4.skipSubmitEditCheck true &&
+		P4EDITOR=touch P4USER=alice P4PASSWD=secret git p4 commit --preserve-user &&
+		p4_check_commit_author file1 alice &&
+		p4_check_commit_author file2 bob
+	)
+'
+
+# Test username support, submitting as bob, who lacks admin rights. Should
+# not submit change to p4 (git diff should show deltas).
+test_expect_success 'refuse to preserve users without perms' '
+	git p4 clone --dest="$git" //depot &&
+	test_when_finished cleanup_git &&
+	(
+		cd "$git" &&
+		git config git-p4.skipSubmitEditCheck true &&
+		echo "username-noperms: a change by alice" >>file1 &&
+		git commit --author "Alice <alice@localhost>" -m "perms: a change by alice" file1 &&
+		P4EDITOR=touch P4USER=bob P4PASSWD=secret &&
+		export P4EDITOR P4USER P4PASSWD &&
+		test_must_fail git p4 commit --preserve-user &&
+		! git diff --exit-code HEAD..p4/master
+	)
+'
+
+# What happens with unknown author? Without allowMissingP4Users it should fail.
+test_expect_success 'preserve user where author is unknown to p4' '
+	git p4 clone --dest="$git" //depot &&
+	test_when_finished cleanup_git &&
+	(
+		cd "$git" &&
+		git config git-p4.skipSubmitEditCheck true &&
+		echo "username-bob: a change by bob" >>file1 &&
+		git commit --author "Bob <bob@localhost>" -m "preserve: a change by bob" file1 &&
+		echo "username-unknown: a change by charlie" >>file1 &&
+		git commit --author "Charlie <charlie@localhost>" -m "preserve: a change by charlie" file1 &&
+		P4EDITOR=touch P4USER=alice P4PASSWD=secret &&
+		export P4EDITOR P4USER P4PASSWD &&
+		test_must_fail git p4 commit --preserve-user &&
+		! git diff --exit-code HEAD..p4/master &&
+
+		echo "$0: repeat with allowMissingP4Users enabled" &&
+		git config git-p4.allowMissingP4Users true &&
+		git config git-p4.preserveUser true &&
+		git p4 commit &&
+		git diff --exit-code HEAD..p4/master &&
+		p4_check_commit_author file1 alice
+	)
+'
+
+# If we're *not* using --preserve-user, git-p4 should warn if we're submitting
+# changes that are not all ours.
+# Test: user in p4 and user unknown to p4.
+# Test: warning disabled and user is the same.
+test_expect_success 'not preserving user with mixed authorship' '
+	git p4 clone --dest="$git" //depot &&
+	test_when_finished cleanup_git &&
+	(
+		cd "$git" &&
+		git config git-p4.skipSubmitEditCheck true &&
+		p4_add_user derek Derek &&
+
+		make_change_by_user usernamefile3 Derek derek@localhost &&
+		P4EDITOR=cat P4USER=alice P4PASSWD=secret &&
+		export P4EDITOR P4USER P4PASSWD &&
+		git p4 commit |\
+		grep "git author derek@localhost does not match" &&
+
+		make_change_by_user usernamefile3 Charlie charlie@localhost &&
+		git p4 commit |\
+		grep "git author charlie@localhost does not match" &&
+
+		make_change_by_user usernamefile3 alice alice@localhost &&
+		git p4 commit |\
+		test_must_fail grep "git author.*does not match" &&
+
+		git config git-p4.skipUserNameCheck true &&
+		make_change_by_user usernamefile3 Charlie charlie@localhost &&
+		git p4 commit |\
+		test_must_fail grep "git author.*does not match" &&
+
+		p4_check_commit_author usernamefile3 alice
+	)
+'
+
+test_expect_success 'kill p4d' '
+	kill_p4d
+'
+
+test_done
diff --git a/t/t9814-git-p4-rename.sh b/t/t9814-git-p4-rename.sh
new file mode 100755
index 0000000..84fffb3
--- /dev/null
+++ b/t/t9814-git-p4-rename.sh
@@ -0,0 +1,206 @@
+#!/bin/sh
+
+test_description='git p4 rename'
+
+. ./lib-git-p4.sh
+
+test_expect_success 'start p4d' '
+	start_p4d
+'
+
+# We rely on this behavior to detect for p4 move availability.
+test_expect_success 'p4 help unknown returns 1' '
+	(
+		cd "$cli" &&
+		(
+			p4 help client >errs 2>&1
+			echo $? >retval
+		)
+		echo 0 >expected &&
+		test_cmp expected retval &&
+		rm retval &&
+		(
+			p4 help nosuchcommand >errs 2>&1
+			echo $? >retval
+		)
+		echo 1 >expected &&
+		test_cmp expected retval &&
+		rm retval
+	)
+'
+
+test_expect_success 'create files' '
+	(
+		cd "$cli" &&
+		p4 client -o | sed "/LineEnd/s/:.*/:unix/" | p4 client -i &&
+		cat >file1 <<-EOF &&
+		A large block of text
+		in file1 that will generate
+		enough context so that rename
+		and copy detection will find
+		something interesting to do.
+		EOF
+		cat >file2 <<-EOF &&
+		/*
+		 * This blob looks a bit
+		 * different.
+		 */
+		int main(int argc, char **argv)
+		{
+			char text[200];
+
+			strcpy(text, "copy/rename this");
+			printf("text is %s\n", text);
+			return 0;
+		}
+		EOF
+		p4 add file1 file2 &&
+		p4 submit -d "add files"
+	)
+'
+
+# Rename a file and confirm that rename is not detected in P4.
+# Rename the new file again with detectRenames option enabled and confirm that
+# this is detected in P4.
+# Rename the new file again adding an extra line, configure a big threshold in
+# detectRenames and confirm that rename is not detected in P4.
+# Repeat, this time with a smaller threshold and confirm that the rename is
+# detected in P4.
+test_expect_success 'detect renames' '
+	git p4 clone --dest="$git" //depot@all &&
+	test_when_finished cleanup_git &&
+	(
+		cd "$git" &&
+		git config git-p4.skipSubmitEdit true &&
+
+		git mv file1 file4 &&
+		git commit -a -m "Rename file1 to file4" &&
+		git diff-tree -r -M HEAD &&
+		git p4 submit &&
+		p4 filelog //depot/file4 &&
+		p4 filelog //depot/file4 | test_must_fail grep -q "branch from" &&
+
+		git mv file4 file5 &&
+		git commit -a -m "Rename file4 to file5" &&
+		git diff-tree -r -M HEAD &&
+		git config git-p4.detectRenames true &&
+		git p4 submit &&
+		p4 filelog //depot/file5 &&
+		p4 filelog //depot/file5 | grep -q "branch from //depot/file4" &&
+
+		git mv file5 file6 &&
+		echo update >>file6 &&
+		git add file6 &&
+		git commit -a -m "Rename file5 to file6 with changes" &&
+		git diff-tree -r -M HEAD &&
+		level=$(git diff-tree -r -M HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/R0*//") &&
+		test -n "$level" && test "$level" -gt 0 && test "$level" -lt 98 &&
+		git config git-p4.detectRenames $(($level + 2)) &&
+		git p4 submit &&
+		p4 filelog //depot/file6 &&
+		p4 filelog //depot/file6 | test_must_fail grep -q "branch from" &&
+
+		git mv file6 file7 &&
+		echo update >>file7 &&
+		git add file7 &&
+		git commit -a -m "Rename file6 to file7 with changes" &&
+		git diff-tree -r -M HEAD &&
+		level=$(git diff-tree -r -M HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/R0*//") &&
+		test -n "$level" && test "$level" -gt 2 && test "$level" -lt 100 &&
+		git config git-p4.detectRenames $(($level - 2)) &&
+		git p4 submit &&
+		p4 filelog //depot/file7 &&
+		p4 filelog //depot/file7 | grep -q "branch from //depot/file6"
+	)
+'
+
+# Copy a file and confirm that copy is not detected in P4.
+# Copy a file with detectCopies option enabled and confirm that copy is not
+# detected in P4.
+# Modify and copy a file with detectCopies option enabled and confirm that copy
+# is detected in P4.
+# Copy a file with detectCopies and detectCopiesHarder options enabled and
+# confirm that copy is detected in P4.
+# Modify and copy a file, configure a bigger threshold in detectCopies and
+# confirm that copy is not detected in P4.
+# Modify and copy a file, configure a smaller threshold in detectCopies and
+# confirm that copy is detected in P4.
+test_expect_success 'detect copies' '
+	git p4 clone --dest="$git" //depot@all &&
+	test_when_finished cleanup_git &&
+	(
+		cd "$git" &&
+		git config git-p4.skipSubmitEdit true &&
+
+		cp file2 file8 &&
+		git add file8 &&
+		git commit -a -m "Copy file2 to file8" &&
+		git diff-tree -r -C HEAD &&
+		git p4 submit &&
+		p4 filelog //depot/file8 &&
+		p4 filelog //depot/file8 | test_must_fail grep -q "branch from" &&
+
+		cp file2 file9 &&
+		git add file9 &&
+		git commit -a -m "Copy file2 to file9" &&
+		git diff-tree -r -C HEAD &&
+		git config git-p4.detectCopies true &&
+		git p4 submit &&
+		p4 filelog //depot/file9 &&
+		p4 filelog //depot/file9 | test_must_fail grep -q "branch from" &&
+
+		echo "file2" >>file2 &&
+		cp file2 file10 &&
+		git add file2 file10 &&
+		git commit -a -m "Modify and copy file2 to file10" &&
+		git diff-tree -r -C HEAD &&
+		git p4 submit &&
+		p4 filelog //depot/file10 &&
+		p4 filelog //depot/file10 | grep -q "branch from //depot/file" &&
+
+		cp file2 file11 &&
+		git add file11 &&
+		git commit -a -m "Copy file2 to file11" &&
+		git diff-tree -r -C --find-copies-harder HEAD &&
+		src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
+		test "$src" = file10 &&
+		git config git-p4.detectCopiesHarder true &&
+		git p4 submit &&
+		p4 filelog //depot/file11 &&
+		p4 filelog //depot/file11 | grep -q "branch from //depot/file" &&
+
+		cp file2 file12 &&
+		echo "some text" >>file12 &&
+		git add file12 &&
+		git commit -a -m "Copy file2 to file12 with changes" &&
+		git diff-tree -r -C --find-copies-harder HEAD &&
+		level=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/C0*//") &&
+		test -n "$level" && test "$level" -gt 0 && test "$level" -lt 98 &&
+		src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
+		test "$src" = file10 -o "$src" = file11 &&
+		git config git-p4.detectCopies $(($level + 2)) &&
+		git p4 submit &&
+		p4 filelog //depot/file12 &&
+		p4 filelog //depot/file12 | test_must_fail grep -q "branch from" &&
+
+		cp file2 file13 &&
+		echo "different text" >>file13 &&
+		git add file13 &&
+		git commit -a -m "Copy file2 to file13 with changes" &&
+		git diff-tree -r -C --find-copies-harder HEAD &&
+		level=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/C0*//") &&
+		test -n "$level" && test "$level" -gt 2 && test "$level" -lt 100 &&
+		src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
+		test "$src" = file10 -o "$src" = file11 -o "$src" = file12 &&
+		git config git-p4.detectCopies $(($level - 2)) &&
+		git p4 submit &&
+		p4 filelog //depot/file13 &&
+		p4 filelog //depot/file13 | grep -q "branch from //depot/file"
+	)
+'
+
+test_expect_success 'kill p4d' '
+	kill_p4d
+'
+
+test_done
-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCHv2 10/10] git p4 test: fix badp4dir test
  2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
                   ` (8 preceding siblings ...)
  2012-06-27 12:01 ` [PATCHv2 09/10] git p4 test: split up big t9800 test Pete Wyckoff
@ 2012-06-27 12:01 ` Pete Wyckoff
  9 siblings, 0 replies; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-27 12:01 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt

The construct used to get the return code was flawed, in that
errors in the &&-chain before the semicolon were not caught.  Use
the standard test_expect_code instead.

Set PATH in a subshell instead of relying on the bashism of
setting it just for a single command.

And fix the grep line so it doesn't worry about grep segfaults,
and doesn't fail for i18n issues.

Reported-by: Johannes Sixt <j.sixt@viscovery.net>
Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/t9800-git-p4-basic.sh | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/t/t9800-git-p4-basic.sh b/t/t9800-git-p4-basic.sh
index befd823..07c2e15 100755
--- a/t/t9800-git-p4-basic.sh
+++ b/t/t9800-git-p4-basic.sh
@@ -134,9 +134,13 @@ test_expect_success 'exit when p4 fails to produce marshaled output' '
 	exit 1
 	EOF
 	chmod 755 badp4dir/p4 &&
-	PATH="$TRASH_DIRECTORY/badp4dir:$PATH" git p4 clone --dest="$git" //depot >errs 2>&1 ; retval=$? &&
-	test $retval -eq 1 &&
-	test_must_fail grep -q Traceback errs
+	(
+		PATH="$TRASH_DIRECTORY/badp4dir:$PATH" &&
+		export PATH &&
+		test_expect_code 1 git p4 clone --dest="$git" //depot >errs 2>&1
+	) &&
+	cat errs &&
+	! test_i18ngrep Traceback errs
 '
 
 test_expect_success 'clone bare' '
-- 
1.7.11.1.69.gd505fd2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCHv2 01/10] git p4 test: wait longer for p4d to start and test its pid
  2012-06-27 12:00 ` [PATCHv2 01/10] git p4 test: wait longer for p4d to start and test its pid Pete Wyckoff
@ 2012-06-27 21:16   ` Junio C Hamano
  2012-06-28  2:48     ` [PATCHv3 " Pete Wyckoff
  0 siblings, 1 reply; 14+ messages in thread
From: Junio C Hamano @ 2012-06-27 21:16 UTC (permalink / raw)
  To: Pete Wyckoff; +Cc: git, Johannes Sixt

Pete Wyckoff <pw@padd.com> writes:

> diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
> index 121e380..2e3706a 100644
> --- a/t/lib-git-p4.sh
> +++ b/t/lib-git-p4.sh
> @@ -33,14 +33,27 @@ pidfile="$TRASH_DIRECTORY/p4d.pid"
>  
>  start_p4d() {
>  	mkdir -p "$db" "$cli" "$git" &&
> +	rm -f "$pidfile" &&
>  	(
>  		p4d -q -r "$db" -p $P4DPORT &
>  		echo $! >"$pidfile"
>  	) &&
> -	for i in 1 2 3 4 5 ; do
> +	# This gives p4d a long time to start up, as it can be
> +	# quite slow depending on the machine.  Set this environment
> +	# variable to something smaller to fail faster in, say,
> +	# an automated test setup.
> +	i=${P4D_START_PATIENCE:-300} &&
> +	while [ $i -gt 0 ]; do

Don't write "test" as "[".

> +		# succeed when p4 client commands start to work
>  		p4 info >/dev/null 2>&1 && break || true &&

This is not a new problem but isn't it much clearer to write this as

		p4 info >/dev/null 2>&1 && break

without the fake && cascade that does not help anybody?

> +		# fail if pid goes away
> +		if [ -f "$pidfile" ] ; then
> +		    kill -0 $(cat "$pidfile") || break
> +		fi &&

I am not sure what you are trying to do here.  What happens if
$pidfile goes away?

In other words, I think it would make it much more clear to write
this part like this:

	pid=$(cat "$pidfile") ready=
        while test $i -gt 0
        do
		if p4 info >/dev/null 2>&1
                then
			ready=true
                        break
		fi
        	kill -0 $pid || break
		echo waiting for p4d to start
		sleep 1
		i=$(( $i - 1 ))
	done

        if test -z "$ready"
        then
		... p4d failed to start ...
		... clean up and kill the whole thing ...
	fi

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCHv3 01/10] git p4 test: wait longer for p4d to start and test its pid
  2012-06-27 21:16   ` Junio C Hamano
@ 2012-06-28  2:48     ` Pete Wyckoff
  2012-06-28  4:05       ` Junio C Hamano
  0 siblings, 1 reply; 14+ messages in thread
From: Pete Wyckoff @ 2012-06-28  2:48 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano

Running tests at high parallelism on a slow machine, 5 sec is
not enough to wait for p4d to start.  Change it to 5 minutes,
adding an environment variable P4D_START_PATIENCE to shrink
that if needed in automated test environments.

Also check if the pid of the p4d that we started is still
around.  If not, quit waiting for it immediately.

Remove all the confusing && chaining and simplify the code.

Thanks-to: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/lib-git-p4.sh | 38 ++++++++++++++++++++++++++++++++------
 1 file changed, 32 insertions(+), 6 deletions(-)

gitster@pobox.com wrote on Wed, 27 Jun 2012 14:16 -0700:
> In other words, I think it would make it much more clear to write
> this part like this:
[..]

Much nicer.  I think I got hung up on always &&-chaining
instead of writing the code so it works.  This version steals
your suggestions almost verbatim.  Tested under scenarios
where p4d was slow, hung or died, as well as when it works as
usual.

Just this patch changed; if it's easy to replace one in the
series?  Else I could resend all 10.

		-- Pete

diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 121e380..eea46a4 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -33,17 +33,42 @@ pidfile="$TRASH_DIRECTORY/p4d.pid"
 
 start_p4d() {
 	mkdir -p "$db" "$cli" "$git" &&
+	rm -f "$pidfile" &&
 	(
 		p4d -q -r "$db" -p $P4DPORT &
 		echo $! >"$pidfile"
 	) &&
-	for i in 1 2 3 4 5 ; do
-		p4 info >/dev/null 2>&1 && break || true &&
-		echo waiting for p4d to start &&
+
+	# This gives p4d a long time to start up, as it can be
+	# quite slow depending on the machine.  Set this environment
+	# variable to something smaller to fail faster in, say,
+	# an automated test setup.  If the p4d process dies, that
+	# will be caught with the "kill -0" check below.
+	i=${P4D_START_PATIENCE:-300}
+	pid=$(cat "$pidfile")
+	ready=
+	while test $i -gt 0
+	do
+		# succeed when p4 client commands start to work
+		if p4 info >/dev/null 2>&1
+		then
+			ready=true
+			break
+		fi
+		# fail if p4d died
+		kill -0 $pid 2>/dev/null || break
+		echo waiting for p4d to start
 		sleep 1
-	done &&
-	# complain if it never started
-	p4 info >/dev/null &&
+		i=$(( $i - 1 ))
+	done
+
+	if test -z "$ready"
+	then
+		# p4d failed to start
+		return 1
+	fi
+
+	# build a client
 	(
 		cd "$cli" &&
 		p4 client -i <<-EOF
@@ -53,6 +78,7 @@ start_p4d() {
 		View: //depot/... //client/...
 		EOF
 	)
+	return 0
 }
 
 kill_p4d() {
-- 
1.7.11.1.69.g485c1e0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCHv3 01/10] git p4 test: wait longer for p4d to start and test its pid
  2012-06-28  2:48     ` [PATCHv3 " Pete Wyckoff
@ 2012-06-28  4:05       ` Junio C Hamano
  0 siblings, 0 replies; 14+ messages in thread
From: Junio C Hamano @ 2012-06-28  4:05 UTC (permalink / raw)
  To: Pete Wyckoff; +Cc: git

Pete Wyckoff <pw@padd.com> writes:

> Just this patch changed; if it's easy to replace one in the
> series?  Else I could resend all 10.

Thanks, sending only this one is just fine.

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-06-28  4:06 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-27 12:00 [PATCHv2 00/10] git p4 test fixes Pete Wyckoff
2012-06-27 12:00 ` [PATCHv2 01/10] git p4 test: wait longer for p4d to start and test its pid Pete Wyckoff
2012-06-27 21:16   ` Junio C Hamano
2012-06-28  2:48     ` [PATCHv3 " Pete Wyckoff
2012-06-28  4:05       ` Junio C Hamano
2012-06-27 12:00 ` [PATCHv2 02/10] git p4 test: use real_path to resolve p4 client symlinks Pete Wyckoff
2012-06-27 12:00 ` [PATCHv2 03/10] git p4 test: simplify quoting involving TRASH_DIRECTORY Pete Wyckoff
2012-06-27 12:00 ` [PATCHv2 04/10] git p4 test: never create default test repo Pete Wyckoff
2012-06-27 12:00 ` [PATCHv2 05/10] git p4 test: rename some "git-p4 command" strings Pete Wyckoff
2012-06-27 12:00 ` [PATCHv2 06/10] git p4 test: check for error message in failed test Pete Wyckoff
2012-06-27 12:01 ` [PATCHv2 07/10] git p4 test: copy source indeterminate Pete Wyckoff
2012-06-27 12:01 ` [PATCHv2 08/10] git p4 test: cleanup_git should make a new $git Pete Wyckoff
2012-06-27 12:01 ` [PATCHv2 09/10] git p4 test: split up big t9800 test Pete Wyckoff
2012-06-27 12:01 ` [PATCHv2 10/10] git p4 test: fix badp4dir test Pete Wyckoff

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.