Patchworkβ test: use dtach(1) instead of screen(1) in emacs tests

login
register
about
Submitter Tomi Ollila
Date 2011-11-11 20:48:13
Message ID <yf64nyae67m.fsf@taco2.nixu.fi>
Download mbox | patch
Permalink /patch/1489/
State New
Headers show

Comments

Tomi Ollila - 2011-11-11 20:48:13
dtach is simpler than screen and is not setuid/setgid program so
TMPDIR does not get cleared by dynamic loader when executed.
---

Updated version after discussion with DmitryKurochkin and amdragon
on IRC. Thank you.

 test/test-lib.sh |   25 +++++++++++++------------
 1 files changed, 13 insertions(+), 12 deletions(-)
Dmitry Kurochkin - 2011-11-11 21:06:40
On Fri, 11 Nov 2011 22:48:13 +0200, Tomi Ollila <too@iki.fi> wrote:
> dtach is simpler than screen and is not setuid/setgid program so
> TMPDIR does not get cleared by dynamic loader when executed.
> ---
> 
> Updated version after discussion with DmitryKurochkin and amdragon
> on IRC. Thank you.
> 

Looks good to me (though I did not test it).

Few minor comments below.

>  test/test-lib.sh |   25 +++++++++++++------------
>  1 files changed, 13 insertions(+), 12 deletions(-)
> 
> diff --git a/test/test-lib.sh b/test/test-lib.sh
> index c81c709..c232130 100755
> --- a/test/test-lib.sh
> +++ b/test/test-lib.sh
> @@ -39,7 +39,7 @@ done,*)
>  	;;
>  esac
>  
> -# Keep the original TERM for say_color
> +# Keep the original TERM for say_color and emacs tests

s/emacs tests/test_emacs/ for consistency with say_color?

>  ORIGINAL_TERM=$TERM
>  
>  # For repeatability, reset the environment to known value.
> @@ -843,12 +841,15 @@ EOF
>  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" \
> -			--no-window-system \
> -			--eval "(setq server-name \"$EMACS_SERVER\")" \
> -			--eval '(server-start)' \
> -			--eval "(orphan-watchdog $$)" || return
> +		# start a detached session with an emacs server
> +		# user's TERM is given to dtach which assumes a minimally
> +		# VT100-compatible terminal -- and emacs inherits that
> +		TERM=$ORIGINAL_TERM dtach -n "$TMP_DIRECTORY/emacs-dtach-socket.$$" \
> +		 	sh -c "stty rows 24 cols 80; exec '$TMP_DIRECTORY/run_emacs' \

The above line has a space after two tabs.

Regards,
  Dmitry

> +				--no-window-system \
> +				--eval '(setq server-name \"$EMACS_SERVER\")' \
> +				--eval '(server-start)' \
> +				--eval '(orphan-watchdog $$)'" || return
>  		# wait until the emacs server is up
>  		until test_emacs '()' 2>/dev/null; do
>  			sleep 1
> -- 
> 1.7.6.1
> 
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch
Tomi Ollila - 2011-11-11 21:15:02
On Sat, 12 Nov 2011 01:06:40 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> On Fri, 11 Nov 2011 22:48:13 +0200, Tomi Ollila <too@iki.fi> wrote:
> > dtach is simpler than screen and is not setuid/setgid program so
> > TMPDIR does not get cleared by dynamic loader when executed.
> > ---
> > 
> > Updated version after discussion with DmitryKurochkin and amdragon
> > on IRC. Thank you.
> > 
> 
> Looks good to me (though I did not test it).
> 
> Few minor comments below.
> 
> >  test/test-lib.sh |   25 +++++++++++++------------
> >  1 files changed, 13 insertions(+), 12 deletions(-)
> > 
> > diff --git a/test/test-lib.sh b/test/test-lib.sh
> > index c81c709..c232130 100755
> > --- a/test/test-lib.sh
> > +++ b/test/test-lib.sh
> > @@ -39,7 +39,7 @@ done,*)
> >  	;;
> >  esac
> >  
> > -# Keep the original TERM for say_color
> > +# Keep the original TERM for say_color and emacs tests
> 
> s/emacs tests/test_emacs/ for consistency with say_color?

yes. thanks...

> 
> >  ORIGINAL_TERM=$TERM
> >  
> >  # For repeatability, reset the environment to known value.
> > @@ -843,12 +841,15 @@ EOF
> >  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" \
> > -			--no-window-system \
> > -			--eval "(setq server-name \"$EMACS_SERVER\")" \
> > -			--eval '(server-start)' \
> > -			--eval "(orphan-watchdog $$)" || return
> > +		# start a detached session with an emacs server
> > +		# user's TERM is given to dtach which assumes a minimally
> > +		# VT100-compatible terminal -- and emacs inherits that
> > +		TERM=$ORIGINAL_TERM dtach -n "$TMP_DIRECTORY/emacs-dtach-socket.$$" \
> > +		 	sh -c "stty rows 24 cols 80; exec '$TMP_DIRECTORY/run_emacs' \
> 
> The above line has a space after two tabs.

oops...

I also forgot 

-export SCREENRC=/dev/null
-export SYSSCREENRC=/dev/null

(dropped accidetally when cherry-picking non-whitespace changes)
Thanks for playing. Try once more...

> 
> Regards,
>   Dmitry

Tomi

> 
> > +				--no-window-system \
> > +				--eval '(setq server-name \"$EMACS_SERVER\")' \
> > +				--eval '(server-start)' \
> > +				--eval '(orphan-watchdog $$)'" || return
> >  		# wait until the emacs server is up
> >  		until test_emacs '()' 2>/dev/null; do
> >  			sleep 1
> > -- 
> > 1.7.6.1
> > 
> > _______________________________________________
> > notmuch mailing list
> > notmuch@notmuchmail.org
> > http://notmuchmail.org/mailman/listinfo/notmuch
>

Patch

diff --git a/test/test-lib.sh b/test/test-lib.sh
index c81c709..c232130 100755
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -39,7 +39,7 @@  done,*)
 	;;
 esac
 
-# Keep the original TERM for say_color
+# Keep the original TERM for say_color and emacs tests
 ORIGINAL_TERM=$TERM
 
 # For repeatability, reset the environment to known value.
@@ -843,12 +841,15 @@  EOF
 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" \
-			--no-window-system \
-			--eval "(setq server-name \"$EMACS_SERVER\")" \
-			--eval '(server-start)' \
-			--eval "(orphan-watchdog $$)" || return
+		# start a detached session with an emacs server
+		# user's TERM is given to dtach which assumes a minimally
+		# VT100-compatible terminal -- and emacs inherits that
+		TERM=$ORIGINAL_TERM dtach -n "$TMP_DIRECTORY/emacs-dtach-socket.$$" \
+		 	sh -c "stty rows 24 cols 80; exec '$TMP_DIRECTORY/run_emacs' \
+				--no-window-system \
+				--eval '(setq server-name \"$EMACS_SERVER\")' \
+				--eval '(server-start)' \
+				--eval '(orphan-watchdog $$)'" || return
 		# wait until the emacs server is up
 		until test_emacs '()' 2>/dev/null; do
 			sleep 1