git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: t7800 test failure

From
David Aguilar <davvid@gmail.com>
Date
May 27, 2016, 04:19 UTC
Message-ID
<20160527041944.GA17438@gmail.com>
In-Reply-To
<CALR6jEixZitA1CTE_kDkDEHv59ALT9zkCOgd28unMhLUZKt48Q@mail.gmail.com>
On Wed, May 25, 2016 at 11:33:33AM +0200, Armin Kunaschik wrote:
Show 10 quoted lines
> On Tue, May 24, 2016 at 7:36 PM, Junio C Hamano <gitster@pobox.com> wrote:
> > Armin Kunaschik <megabreit@googlemail.com> writes:
> >>
> >> Ok, how can this be implemented within the test environment?
> >
> > I actually think an unconditional check like this is sufficient.
> 
> Ah, good. My thoughts were a bit more complicated.
> Anyway, this works for me.
> Thanks!

Would you mind submitting a patch so that we can support these tests when running on AIX/HP-UX?

Show 32 quoted lines
> >  t/t7800-difftool.sh | 17 +++++++++--------
> >  1 file changed, 9 insertions(+), 8 deletions(-)
> >
> > diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh
> > index 7ce4cd7..f304228 100755
> > --- a/t/t7800-difftool.sh
> > +++ b/t/t7800-difftool.sh
> > @@ -442,15 +442,16 @@ run_dir_diff_test 'difftool --dir-diff with unmerged files' '
> >         test_cmp expect actual
> >  '
> >
> > -write_script .git/CHECK_SYMLINKS <<\EOF
> > -for f in file file2 sub/sub
> > -do
> > -       echo "$f"
> > -       readlink "$2/$f"
> > -done >actual
> > -EOF
> > -
> >  test_expect_success PERL,SYMLINKS 'difftool --dir-diff --symlink without unstaged changes' '
> > +
> > +       write_script .git/CHECK_SYMLINKS <<-\EOF &&
> > +       for f in file file2 sub/sub
> > +       do
> > +               echo "$f"
> > +               ls -ld "$2/$f" | sed -e "s/.* -> //"
> > +       done >actual
> > +       EOF
> > +
> >         cat >expect <<-EOF &&
> >         file
> >         $PWD/file

I was curious so I whipped together a small tweak to t/check-non-portable-shell.pl below.

The difftool tests are not the only ones that use readlink. My guess is you haven't run the p4 tests because AIX/HP-UX doesn't have p4?

	$ make test-lint-shell-syntax
	t7800-difftool.sh:449: error: readlink is not portable (please use ls -ld | sed):       readlink "$2/$f"
	t9802-git-p4-filetype.sh:266: error: readlink is not portable (please use ls -ld | sed):                test $(readlink symlink) = symlink-target
	t9802-git-p4-filetype.sh:332: error: readlink is not portable (please use ls -ld | sed):                test $(readlink empty-symlink) = target2
	test-lib.sh:757: error: readlink is not portable (please use ls -ld | sed):             test "$1" = "$(readlink "$2")" || {

If we want to ban use of readlink from the test suite we could add it to the check script. test-lib.sh also includes it for valgrind support so I'm not really sure whether we'd want to apply this, but I figured I'd bring it up for discussion.

If we end up fixing all of these then I can send this to the list as a proper patch.

Curious, is there an easy way to get readlink and mktemp installed on AIX?

Another alternative is that we can compile our own "git-readlink" and "git-mktemp" programs and use those instead, but that seems like a big maintenance burden compared to the relative simplicity of the test-suite workarounds.

Thanks for fixing my non-portable tests ;-)
--- 8< --- 8< ---
From 40c41402dfa24ca16b41062172c34f238d77b42c Mon Sep 17 00:00:00 2001
From: David Aguilar <davvid@gmail.com>
Date: Thu, 26 May 2016 02:42:52 -0700
Subject: [PATCH] tests: add shell portability check for "readlink"
Signed-off-by: David Aguilar <davvid@gmail.com>
---
 t/check-non-portable-shell.pl | 1 +
 1 file changed, 1 insertion(+)
diff --git a/t/check-non-portable-shell.pl b/t/check-non-portable-shell.pl
index b170cbc..2707e42 100755
--- a/t/check-non-portable-shell.pl
+++ b/t/check-non-portable-shell.pl
@@ -18,6 +18,7 @@ while (<>) {
 	chomp;
 	/\bsed\s+-i/ and err 'sed -i is not portable';
 	/\becho\s+-n/ and err 'echo -n is not portable (please use printf)';
+	/\breadlink\s+/ and err 'readlink is not portable (please use ls -ld | sed)';
 	/^\s*declare\s+/ and err 'arrays/declare not portable';
 	/^\s*[^#]\s*which\s/ and err 'which is not portable (please use type)';
 	/\btest\s+[^=]*==/ and err '"test a == b" is not portable (please use =)';
-- 
2.7.0.rc3

-- 
David
Previous: Armin KunaschikNext: Matthieu Moy
Message 7 of 14 in “t7800 test failure”
  1. Armin KunaschikMay 24, 2016
  2. Matthieu MoyMay 24, 2016
  3. Junio C HamanoMay 24, 2016
  4. Armin KunaschikMay 24, 2016
  5. Junio C HamanoMay 24, 2016
  6. Armin KunaschikMay 25, 2016
  7. David AguilarMay 27, 2016
  8. Matthieu MoyMay 27, 2016
  9. t7800 readlink not foundArmin Kunaschik, May 31, 2016
  10. Torsten BögershausenMay 31, 2016
  11. Junio C HamanoMay 31, 2016
  12. Armin KunaschikJun 21, 2016
  13. Junio C HamanoJun 21, 2016
  14. Torsten BögershausenJun 21, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.