[PATCH] test: use dtach(1) instead of screen(1) in emacs tests.

Dmitry Kurochkin dmitry.kurochkin at gmail.com
Fri Nov 11 00:41:11 PST 2011


Hi Tomi.

On Thu, 10 Nov 2011 14:22:17 -0800, Jameson Graef Rollins <jrollins at finestructure.net> wrote:
> From: Tomi Ollila <tomi.ollila at iki.fi>
> 
> dtach is lighter than screen and is not setuid/setgid program so
> TMPDIR does not get reset by dynamic loader when executed.
> 
> Signed-off-by: Jameson Graef Rollins <jrollins at finestructure.net>
> ---
> This tweaks the original patch slightly by removing the no-longer needed
> screenrc variables.
> 
>  test/test-lib.sh |    5 ++---
>  1 files changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/test/test-lib.sh b/test/test-lib.sh
> index c81c709..c0fe037 100755
> --- a/test/test-lib.sh
> +++ b/test/test-lib.sh
> @@ -50,8 +50,6 @@ TZ=UTC
>  TERM=dumb
>  export LANG LC_ALL PAGER TERM TZ
>  GIT_TEST_CMP=${GIT_TEST_CMP:-diff -u}
> -export SCREENRC=/dev/null
> -export SYSSCREENRC=/dev/null
>  
>  # Protect ourselves from common misconfiguration to export
>  # CDPATH into the environment
> @@ -844,7 +842,8 @@ test_emacs () {
>  	if [ -z "$EMACS_SERVER" ]; then
>  		EMACS_SERVER="notmuch-test-suite-$$"
>  		# start a detached screen session with an emacs server
> -		screen -S "$EMACS_SERVER" -d -m "$TMP_DIRECTORY/run_emacs" \
> +		TERM=xterm dtach -n "$TMP_DIRECTORY/dtach-emacs-socket-$$" \

Can you please give a more detailed explanation (and a comment) to
justify this workaround:

* Is it actually needed for dtach or emacs?  If it is the latter, then
  it should be "dtach ... env TERM=xterm emacs ...", right?

* Why should we care about systems that use terminals without
  corresponding terminfo installed?

* Why is it safe to use xterm?  Is there any standard that requires
  xterm info to be present on the system?

I have tried running dtach with emacs in rxvt-unicode and it worked fine
without overriding TERM.

I have also tried running dtach with invalid TERM:

  $ TERM=non-existing-term dtach -n s /bin/sh
  zsh: can't find terminal definition for non-existing-term

No segfault, shell is started fine.

But emacs does not work without a valid terminfo:

  $ TERM=non-existing-term emacs -nw
  emacs: Terminal type non-existing-term is not defined.
  If that is not the actual type of terminal you have,
  use the Bourne shell command `TERM=... export TERM' (C-shell:
  `setenv TERM ...') to specify the correct type.  It may be necessary
  to do `unset TERMINFO' (C-shell: `unsetenv TERMINFO') as well.

Regards,
  Dmitry

> +			"$TMP_DIRECTORY/run_emacs" \
>  			--no-window-system \
>  			--eval "(setq server-name \"$EMACS_SERVER\")" \
>  			--eval '(server-start)' \
> -- 
> 1.7.7.1
> 
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list