threads / patch / 26809

patchWork around broken ln on solaris as used in t8006

Subject: [PATCH] Work around broken ln on solaris as used in t8006

## tl;dr

6 messages between Mar 20, 2011 and Mar 21, 2011. Diffs are folded; open one to read it.

replies: 5people: 2as markdown or json

Ben Walton· Mar 20, 2011, 23:59 UTC · lore

The test setup in t8006-blame-textconv.sh used ln -sf to overwrite an existing symlink. Unfortunately, both /usr/bin/ln and /usr/xpg4/bin/ln on solaris 9 don't properly handle -f when -s is used. This caused the test setup to fail which caused subsequent checks to also fail.

This patch uses changes the first check in the test to rm the symlink and then create the new symlink using only -s.

The upstream Solaris bug (fixed in 10, but not 9) is documented here: http://bugs.opensolaris.org/view_bug.do?bug_id=4372462

Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
---
 t/t8006-blame-textconv.sh |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Show changes to t/t8006-blame-textconv.sh +2 −1
diff --git a/t/t8006-blame-textconv.sh b/t/t8006-blame-textconv.sh
index ea64cd8..c5362d9 100755
--- a/t/t8006-blame-textconv.sh
+++ b/t/t8006-blame-textconv.sh
@@ -24,8 +24,9 @@ test_expect_success 'setup ' '
 	GIT_AUTHOR_NAME=Number1 git commit -a -m First --date="2010-01-01 18:00:00" &&
 	echo "bin: test 1 version 2" >one.bin &&
 	echo "bin: test number 2 version 2" >>two.bin &&
+	rm symlink.bin &&
 	if test_have_prereq SYMLINKS; then
-		ln -sf two.bin symlink.bin
+		ln -s two.bin symlink.bin
 	fi &&
 	GIT_AUTHOR_NAME=Number2 git commit -a -m Second --date="2010-01-01 20:00:00"
 '
-- 
1.7.1
Ben Walton· Mar 21, 2011, 00:45 UTC · re: Ben Walton · lore

The test setup in t8006-blame-textconv.sh used ln -sf to overwrite an existing symlink. Unfortunately, both /usr/bin/ln and /usr/xpg4/bin/ln on solaris 9 don't properly handle -f when -s is used. This caused the test setup to fail which caused subsequent checks to also fail.

This patch changes the first check in the test to rm the symlink and then create the new symlink using only -s.

The upstream Solaris bug (fixed in 10, but not 9) is documented here: http://bugs.opensolaris.org/view_bug.do?bug_id=4372462

Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
---
Fixed typo in the original submission...
 t/t8006-blame-textconv.sh |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Show changes to t/t8006-blame-textconv.sh +2 −1
diff --git a/t/t8006-blame-textconv.sh b/t/t8006-blame-textconv.sh
index ea64cd8..c5362d9 100755
--- a/t/t8006-blame-textconv.sh
+++ b/t/t8006-blame-textconv.sh
@@ -24,8 +24,9 @@ test_expect_success 'setup ' '
 	GIT_AUTHOR_NAME=Number1 git commit -a -m First --date="2010-01-01 18:00:00" &&
 	echo "bin: test 1 version 2" >one.bin &&
 	echo "bin: test number 2 version 2" >>two.bin &&
+	rm symlink.bin &&
 	if test_have_prereq SYMLINKS; then
-		ln -sf two.bin symlink.bin
+		ln -s two.bin symlink.bin
 	fi &&
 	GIT_AUTHOR_NAME=Number2 git commit -a -m Second --date="2010-01-01 20:00:00"
 '
-- 
1.7.1
Junio C Hamano· Mar 21, 2011, 01:02 UTC · re: Ben Walton · lore

Re: [PATCH] Work around broken ln on solaris as used in t8006

Ben Walton <bwalton@artsci.utoronto.ca> writes:
> The test setup in t8006-blame-textconv.sh used ln -sf to overwrite an
> existing symlink.  Unfortunately, both /usr/bin/ln and
> /usr/xpg4/bin/ln on solaris 9 don't properly handle -f when -s is
> used.

Thanks for reporting. I recall "ln -s -f" traditionally has been a pain point not just on Solaris.

Show 5 quoted lines
> This caused the test setup to fail which caused subsequent
> checks to also fail.
>
> This patch uses changes the first check in the test to rm the symlink
> and then create the new symlink using only -s.
s/uses //; I think.

It is curious why "rm symlink.bin" is not inside the test-have-prereq part, iow, immediately before the problematic "ln -s", where it logically belongs to, though. What does the updated code do on systems without symbolic link support?

Show 23 quoted lines
> The upstream Solaris bug (fixed in 10, but not 9) is documented here:
> http://bugs.opensolaris.org/view_bug.do?bug_id=4372462
>
> Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
> ---
>  t/t8006-blame-textconv.sh |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/t/t8006-blame-textconv.sh b/t/t8006-blame-textconv.sh
> index ea64cd8..c5362d9 100755
> --- a/t/t8006-blame-textconv.sh
> +++ b/t/t8006-blame-textconv.sh
> @@ -24,8 +24,9 @@ test_expect_success 'setup ' '
>  	GIT_AUTHOR_NAME=Number1 git commit -a -m First --date="2010-01-01 18:00:00" &&
>  	echo "bin: test 1 version 2" >one.bin &&
>  	echo "bin: test number 2 version 2" >>two.bin &&
> +	rm symlink.bin &&
>  	if test_have_prereq SYMLINKS; then
> -		ln -sf two.bin symlink.bin
> +		ln -s two.bin symlink.bin
>  	fi &&
>  	GIT_AUTHOR_NAME=Number2 git commit -a -m Second --date="2010-01-01 20:00:00"
>  '
Ben Walton· Mar 21, 2011, 01:10 UTC · re: Junio C Hamano · lore

Re: [PATCH] Work around broken ln on solaris as used in t8006

Excerpts from Junio C Hamano's message of Sun Mar 20 21:02:13 -0400 2011:
Hi Junio,
> > This patch uses changes the first check in the test to rm the symlink
> > and then create the new symlink using only -s.
> 
> s/uses //; I think.

Yes, I caught that right after send. A follow up corrected it, but I'll resubmit taking your feedback below into account.

> It is curious why "rm symlink.bin" is not inside the
> test-have-prereq part, iow, immediately before the problematic "ln
> -s", where it logically belongs to, though.  What does the updated
> code do on systems without symbolic link support?

I think you're right about this. They should be logically grouped. I'll send an update shortly.

Thanks -Ben -- Ben Walton Systems Programmer - CHASS University of Toronto C:416.407.5610 | W:416.978.4302

Ben Walton· Mar 21, 2011, 01:12 UTC · re: Ben Walton · lore

The test setup in t8006-blame-textconv.sh used ln -sf to overwrite an existing symlink. Unfortunately, both /usr/bin/ln and /usr/xpg4/bin/ln on solaris 9 don't properly handle -f when -s is used. This caused the test setup to fail which caused subsequent checks to also fail.

This patch changes the setup to rm the symlink and then create the new one using only -s.

The upstream Solaris bug (fixed in 10, but not 9) is documented here: http://bugs.opensolaris.org/view_bug.do?bug_id=4372462

Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
---
 t/t8006-blame-textconv.sh |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Show changes to t/t8006-blame-textconv.sh +2 −1
diff --git a/t/t8006-blame-textconv.sh b/t/t8006-blame-textconv.sh
index ea64cd8..32ec82a 100755
--- a/t/t8006-blame-textconv.sh
+++ b/t/t8006-blame-textconv.sh
@@ -25,7 +25,8 @@ test_expect_success 'setup ' '
 	echo "bin: test 1 version 2" >one.bin &&
 	echo "bin: test number 2 version 2" >>two.bin &&
 	if test_have_prereq SYMLINKS; then
-		ln -sf two.bin symlink.bin
+		rm symlink.bin &&
+		ln -s two.bin symlink.bin
 	fi &&
 	GIT_AUTHOR_NAME=Number2 git commit -a -m Second --date="2010-01-01 20:00:00"
 '
-- 
1.7.1
Junio C Hamano· Mar 21, 2011, 05:00 UTC · re: Ben Walton · lore

Re: [PATCH] Work around broken ln on solaris as used in t8006

Ben Walton <bwalton@artsci.utoronto.ca> writes:
> The upstream Solaris bug (fixed in 10, but not 9) is documented here:
> http://bugs.opensolaris.org/view_bug.do?bug_id=4372462
>
> Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
Thanks; will queue.

← back to recent threads