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

Re: [PATCH] contrib/test-hg*.sh: Do not use PYTHON_PATH

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 17, 2013, 16:45 UTC
Message-ID
<7vobddf6n6.fsf@alter.siamese.dyndns.org>
In-Reply-To
<201304171610.49384.tboegi@web.de>
Torsten Bögershausen <tboegi@web.de> writes:
Show 11 quoted lines
> The test cases in contrib/remote-helpers use mercurial and python.
> Before the tests are run, we check if python can import
> "mercurial" and "hggit".
> To run this check, python pointed out by PYTHON_PATH is used.
> This may not work when different python binaries exist,
> and PYTHON_PATH is not set:
>  Makefile sets it to the default /usr/bin/python
>  The PATH may point out e.g. /sw/bin/python.
> When /sw/bin/python has the mercurial module installed,
> but /usr/bin/python has not, the test will not be run.
> Git respects PYTHON_PATH, hg does not.
The above problem analysis looks sensible.
> Use python instead of $PYTHON_PATH to check for installed modules.

But I am not sure if I agree with the solution. Going back to the analysis, I find this:

> This may not work when different python binaries exist,
> and PYTHON_PATH is not set:

Isn't the real problem that PYTHON_PATH is not set to point at the instance of a python with mercurial module for it? Why not make sure it is set and can be seen by tests correctly?

I do not offhand know where in the contrib/remote-helpers/ part the user is expected to tweak PYTHON_PATH variable, and if the variable is correctly arranged to be exported to the environment when running the tests, but your problem analysis tells me that that is the part you would want to fix. If a default-fallback value for PYTHON_PATH is the easiest solution to the problem, you could even solve that in the "export it while running the tests" logic.

Perhaps adding
	PYTHON_PATH ?= python
	export PYTHON_PATH

to contrib/remote-helpers/Makefile and changing nothing else would be a starting point for a more reasonable fix to the issue?

> While at it, split exportX=Y into 2 lines

That is an important portability fix, but as you said "while at it", it is orthogonal.

Show 96 quoted lines
>
> Signed-off-by: Torsten Bögershausen <tboegi@web.de>
> ---
>  contrib/remote-helpers/test-hg-bidi.sh   | 14 +++++++++-----
>  contrib/remote-helpers/test-hg-hg-git.sh | 12 +++++++-----
>  contrib/remote-helpers/test-hg.sh        |  2 +-
>  3 files changed, 17 insertions(+), 11 deletions(-)
>
> diff --git a/contrib/remote-helpers/test-hg-bidi.sh b/contrib/remote-helpers/test-hg-bidi.sh
> index f368953..9f4a430 100755
> --- a/contrib/remote-helpers/test-hg-bidi.sh
> +++ b/contrib/remote-helpers/test-hg-bidi.sh
> @@ -15,7 +15,7 @@ if ! test_have_prereq PYTHON; then
>  	test_done
>  fi
>  
> -if ! "$PYTHON_PATH" -c 'import mercurial'; then
> +if ! python -c 'import mercurial'; then
>  	skip_all='skipping remote-hg tests; mercurial not available'
>  	test_done
>  fi
> @@ -68,10 +68,13 @@ setup () {
>  	) >> "$HOME"/.hgrc &&
>  	git config --global remote-hg.hg-git-compat true
>  
> -	export HGEDITOR=/usr/bin/true
> +	HGEDITOR=/usr/bin/true
> +	export HGEDITOR
>  
> -	export GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0230"
> -	export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
> +	GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0230"
> +	GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
> +
> +	export GIT_AUTHOR_DATE GIT_COMMITTER_DATE
>  }
>  
>  setup
> @@ -88,7 +91,8 @@ test_expect_success 'encoding' '
>  	git add alpha &&
>  	git commit -m "add älphà" &&
>  
> -	export GIT_AUTHOR_NAME="tést èncödîng" &&
> +	GIT_AUTHOR_NAME="tést èncödîng" &&
> +	export GIT_AUTHOR_NAME &&
>  	echo beta > beta &&
>  	git add beta &&
>  	git commit -m "add beta" &&
> diff --git a/contrib/remote-helpers/test-hg-hg-git.sh b/contrib/remote-helpers/test-hg-hg-git.sh
> index 253e65a..5414f81 100755
> --- a/contrib/remote-helpers/test-hg-hg-git.sh
> +++ b/contrib/remote-helpers/test-hg-hg-git.sh
> @@ -15,12 +15,12 @@ if ! test_have_prereq PYTHON; then
>  	test_done
>  fi
>  
> -if ! "$PYTHON_PATH" -c 'import mercurial'; then
> +if ! python -c 'import mercurial'; then
>  	skip_all='skipping remote-hg tests; mercurial not available'
>  	test_done
>  fi
>  
> -if ! "$PYTHON_PATH" -c 'import hggit'; then
> +if ! python -c 'import hggit'; then
>  	skip_all='skipping remote-hg tests; hg-git not available'
>  	test_done
>  fi
> @@ -103,10 +103,12 @@ setup () {
>  	git config --global receive.denycurrentbranch warn
>  	git config --global remote-hg.hg-git-compat true
>  
> -	export HGEDITOR=/usr/bin/true
> +	HGEDITOR=/usr/bin/true
> +	export HGEDITOR
>  
> -	export GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0230"
> -	export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
> +  GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0230"
> +  GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
> +  export GIT_AUTHOR_DATE GIT_COMMITTER_DATE
>  }
>  
>  setup
> diff --git a/contrib/remote-helpers/test-hg.sh b/contrib/remote-helpers/test-hg.sh
> index d5b8730..8614fa1 100755
> --- a/contrib/remote-helpers/test-hg.sh
> +++ b/contrib/remote-helpers/test-hg.sh
> @@ -15,7 +15,7 @@ if ! test_have_prereq PYTHON; then
>  	test_done
>  fi
>  
> -if ! "$PYTHON_PATH" -c 'import mercurial'; then
> +if ! python -c 'import mercurial'; then
>  	skip_all='skipping remote-hg tests; mercurial not available'
>  	test_done
>  fi
Previous: Jonathan NiederNext: Felipe Contreras
Message 3 of 5 in “contrib/test-hg*.sh: Do not use PYTHON_PATH”
  1. contrib/test-hg*.sh: Do not use PYTHON_PATHTorsten Bögershausen, Apr 17, 2013
  2. Jonathan NiederApr 17, 2013
  3. Junio C HamanoApr 17, 2013
  4. Felipe ContrerasApr 17, 2013
  5. Felipe ContrerasApr 17, 2013

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.