unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* Support running test suite using python3
@ 2015-05-23 20:28 David Bremner
  2015-05-23 20:28 ` [PATCH 1/4] test: make python tests compatible with python3 David Bremner
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: David Bremner @ 2015-05-23 20:28 UTC (permalink / raw)
  To: notmuch

On systems where the default python is python2 (i.e. most of them),
there's not convenient way to try out the test suite with python3.
This series aims to make that easier by making

% PYTHON=python3 ./configure

propagate something useful to the test suite.

The last patch is not strictly needed, but it helped me figure out
what was wrong when the python3 version of sphinx was not installed.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/4] test: make python tests compatible with python3
  2015-05-23 20:28 Support running test suite using python3 David Bremner
@ 2015-05-23 20:28 ` David Bremner
  2015-05-23 20:28 ` [PATCH 2/4] configure: add ability to force python version via environment David Bremner
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2015-05-23 20:28 UTC (permalink / raw)
  To: notmuch

Making the test suite actually run them with python3 is left for
future work.
---
 test/T390-python.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/test/T390-python.sh b/test/T390-python.sh
index 3f03a2e..26d0b97 100755
--- a/test/T390-python.sh
+++ b/test/T390-python.sh
@@ -11,7 +11,7 @@ db = notmuch.Database(mode=notmuch.Database.MODE.READ_ONLY)
 q_new = notmuch.Query(db, 'tag:inbox')
 q_new.set_sort(notmuch.Query.SORT.OLDEST_FIRST)
 for t in q_new.search_threads():
-    print t.get_thread_id()
+    print (t.get_thread_id())
 EOF
 notmuch search --sort=oldest-first --output=threads tag:inbox | sed s/^thread:// > EXPECTED
 test_expect_equal_file OUTPUT EXPECTED
@@ -23,7 +23,7 @@ db = notmuch.Database(mode=notmuch.Database.MODE.READ_ONLY)
 q_new = notmuch.Query(db, 'tag:inbox')
 q_new.set_sort(notmuch.Query.SORT.OLDEST_FIRST)
 for m in q_new.search_messages():
-    print m.get_message_id()
+    print (m.get_message_id())
 EOF
 notmuch search --sort=oldest-first --output=messages tag:inbox | sed s/^id:// > EXPECTED
 test_expect_equal_file OUTPUT EXPECTED
@@ -32,7 +32,7 @@ test_begin_subtest "get non-existent file"
 test_python <<EOF
 import notmuch
 db = notmuch.Database(mode=notmuch.Database.MODE.READ_ONLY)
-print db.find_message_by_filename("i-dont-exist")
+print (db.find_message_by_filename("i-dont-exist"))
 EOF
 test_expect_equal "$(cat OUTPUT)" "None"
 
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/4] configure: add ability to force python version via environment
  2015-05-23 20:28 Support running test suite using python3 David Bremner
  2015-05-23 20:28 ` [PATCH 1/4] test: make python tests compatible with python3 David Bremner
@ 2015-05-23 20:28 ` David Bremner
  2015-05-23 20:28 ` [PATCH 3/4] test: use the python interpreter in sh.configure David Bremner
  2015-05-23 20:28 ` [PATCH 4/4] test: redirect man output to /dev/null David Bremner
  3 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2015-05-23 20:28 UTC (permalink / raw)
  To: notmuch

This is makes it a bit easier to run our test suite under alternative
python versions.
---
 configure | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index 2065fcd..71eef6c 100755
--- a/configure
+++ b/configure
@@ -51,6 +51,7 @@ CXXFLAGS_for_sh=${CXXFLAGS:-${CFLAGS}}
 CXXFLAGS=${CXXFLAGS:-\$(CFLAGS)}
 LDFLAGS=${LDFLAGS:-}
 XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config}
+PYTHON=${PYTHON:-}
 
 # We don't allow the EMACS or GZIP Makefile variables inherit values
 # from the environment as we do with CC and CXX above. The reason is
@@ -407,7 +408,7 @@ fi
 printf "Checking for python... "
 have_python=0
 
-for name in python python2 python3; do
+for name in ${PYTHON} python python2 python3; do
     if command -v $name > /dev/null; then
 	have_python=1
 	python=$name
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/4] test: use the python interpreter in sh.configure
  2015-05-23 20:28 Support running test suite using python3 David Bremner
  2015-05-23 20:28 ` [PATCH 1/4] test: make python tests compatible with python3 David Bremner
  2015-05-23 20:28 ` [PATCH 2/4] configure: add ability to force python version via environment David Bremner
@ 2015-05-23 20:28 ` David Bremner
  2015-06-08 14:50   ` David Bremner
  2015-05-23 20:28 ` [PATCH 4/4] test: redirect man output to /dev/null David Bremner
  3 siblings, 1 reply; 9+ messages in thread
From: David Bremner @ 2015-05-23 20:28 UTC (permalink / raw)
  To: notmuch

The configure script chooses "python" if it exists, so this could
change the version of python used to run the test suite.
---
 configure        |  2 ++
 test/test-lib.sh | 14 +++-----------
 2 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/configure b/configure
index 71eef6c..1081061 100755
--- a/configure
+++ b/configure
@@ -111,6 +111,8 @@ Other environment variables can be used to control configure itself,
 	XAPIAN_CONFIG	The program to use to determine flags for
 			compiling and linking against the Xapian
 			library. [$XAPIAN_CONFIG]
+	PYTHON		Name of python command to use in
+			configure and the test suite.
 
 Additionally, various options can be specified on the configure
 command line.
diff --git a/test/test-lib.sh b/test/test-lib.sh
index 486d1c4..9b63a7a 100644
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -621,9 +621,9 @@ test_expect_equal_json () {
     # The test suite forces LC_ALL=C, but this causes Python 3 to
     # decode stdin as ASCII.  We need to read JSON in UTF-8, so
     # override Python's stdio encoding defaults.
-    output=$(echo "$1" | PYTHONIOENCODING=utf-8 python -mjson.tool \
+    output=$(echo "$1" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -mjson.tool \
         || echo "$1")
-    expected=$(echo "$2" | PYTHONIOENCODING=utf-8 python -mjson.tool \
+    expected=$(echo "$2" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -mjson.tool \
         || echo "$2")
     shift 2
     test_expect_equal "$output" "$expected" "$@"
@@ -1153,14 +1153,8 @@ test_python() {
 	export LD_LIBRARY_PATH=$TEST_DIRECTORY/../lib
 	export PYTHONPATH=$TEST_DIRECTORY/../bindings/python
 
-	# Some distros (e.g. Arch Linux) ship Python 2.* as /usr/bin/python2,
-	# most others as /usr/bin/python. So first try python2, and fallback to
-	# python if python2 doesn't exist.
-	cmd=python2
-	[[ ${test_missing_external_prereq_[python2]} == t ]] && cmd=python
-
 	(echo "import sys; _orig_stdout=sys.stdout; sys.stdout=open('OUTPUT', 'w')"; cat) \
-		| $cmd -
+		| $NOTMUCH_PYTHON -
 }
 
 test_C () {
@@ -1320,5 +1314,3 @@ test_declare_external_prereq emacs
 test_declare_external_prereq ${TEST_EMACSCLIENT}
 test_declare_external_prereq gdb
 test_declare_external_prereq gpg
-test_declare_external_prereq python
-test_declare_external_prereq python2
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/4] test: redirect man output to /dev/null
  2015-05-23 20:28 Support running test suite using python3 David Bremner
                   ` (2 preceding siblings ...)
  2015-05-23 20:28 ` [PATCH 3/4] test: use the python interpreter in sh.configure David Bremner
@ 2015-05-23 20:28 ` David Bremner
  3 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2015-05-23 20:28 UTC (permalink / raw)
  To: notmuch

In the case the these tests fail, they generate a bunch of output;
this output is not very interesting because it is just the successful
output of a man page. It does however make it hard to see what tests are actually failing, even with NOTMUCH_TEST_QUIET
---
 test/T010-help-test.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/test/T010-help-test.sh b/test/T010-help-test.sh
index caf8bdb..d7266ff 100755
--- a/test/T010-help-test.sh
+++ b/test/T010-help-test.sh
@@ -12,9 +12,9 @@ if [ $NOTMUCH_HAVE_MAN -eq 1 ]; then
     test_expect_success 'notmuch help tag' 'notmuch help tag'
 else
     test_expect_success 'notmuch --help tag (man pages not available)' \
-	'test_must_fail notmuch --help tag'
+	'test_must_fail notmuch --help tag >/dev/null'
     test_expect_success 'notmuch help tag (man pages not available)' \
-	'test_must_fail notmuch help tag'
+	'test_must_fail notmuch help tag >/dev/null'
 fi
 
 test_done
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/4] test: use the python interpreter in sh.configure
  2015-05-23 20:28 ` [PATCH 3/4] test: use the python interpreter in sh.configure David Bremner
@ 2015-06-08 14:50   ` David Bremner
  2015-08-02  6:40     ` [PATCH] test: use the python interpreter in sh.config David Bremner
  0 siblings, 1 reply; 9+ messages in thread
From: David Bremner @ 2015-06-08 14:50 UTC (permalink / raw)
  To: notmuch

David Bremner <david@tethera.net> writes:

> The configure script chooses "python" if it exists, so this could
> change the version of python used to run the test suite.

I pushed the other 3 patches in this series. This one at least needs a
correction for the commit subject.

d

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH] test: use the python interpreter in sh.config
  2015-06-08 14:50   ` David Bremner
@ 2015-08-02  6:40     ` David Bremner
  2015-08-02  8:31       ` Tomi Ollila
  2015-08-04 14:35       ` David Bremner
  0 siblings, 2 replies; 9+ messages in thread
From: David Bremner @ 2015-08-02  6:40 UTC (permalink / raw)
  To: David Bremner, notmuch

The configure script chooses "python" if both python and python{2,3}
exist exists, so this could change the version of python used to run
the test suite.

The checking for ${NOTMUCH_PYTHON} in the test suite is arguably
over-engineering, since the configure step will fail if it can't find
it.
---

Here is an updated version which fixes the subject typo, and actually
tests for the python binary read from sh.config. I'll probably merge this version unless there are objections

 configure           |  2 ++
 test/T390-python.sh |  2 ++
 test/test-lib.sh    | 15 ++++-----------
 3 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/configure b/configure
index 56f550b..20fbed6 100755
--- a/configure
+++ b/configure
@@ -114,6 +114,8 @@ Other environment variables can be used to control configure itself,
 	XAPIAN_CONFIG	The program to use to determine flags for
 			compiling and linking against the Xapian
 			library. [$XAPIAN_CONFIG]
+	PYTHON		Name of python command to use in
+			configure and the test suite.
 
 Additionally, various options can be specified on the configure
 command line.
diff --git a/test/T390-python.sh b/test/T390-python.sh
index 26d0b97..c3f24f7 100755
--- a/test/T390-python.sh
+++ b/test/T390-python.sh
@@ -2,6 +2,8 @@
 test_description="python bindings"
 . ./test-lib.sh
 
+test_require_external_prereq ${NOTMUCH_PYTHON}
+
 add_email_corpus
 
 test_begin_subtest "compare thread ids"
diff --git a/test/test-lib.sh b/test/test-lib.sh
index 3466e9c..db3b6aa 100644
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -621,9 +621,9 @@ test_expect_equal_json () {
     # The test suite forces LC_ALL=C, but this causes Python 3 to
     # decode stdin as ASCII.  We need to read JSON in UTF-8, so
     # override Python's stdio encoding defaults.
-    output=$(echo "$1" | PYTHONIOENCODING=utf-8 python -mjson.tool \
+    output=$(echo "$1" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -mjson.tool \
         || echo "$1")
-    expected=$(echo "$2" | PYTHONIOENCODING=utf-8 python -mjson.tool \
+    expected=$(echo "$2" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -mjson.tool \
         || echo "$2")
     shift 2
     test_expect_equal "$output" "$expected" "$@"
@@ -1153,14 +1153,8 @@ test_python() {
 	export LD_LIBRARY_PATH=$TEST_DIRECTORY/../lib
 	export PYTHONPATH=$TEST_DIRECTORY/../bindings/python
 
-	# Some distros (e.g. Arch Linux) ship Python 2.* as /usr/bin/python2,
-	# most others as /usr/bin/python. So first try python2, and fallback to
-	# python if python2 doesn't exist.
-	cmd=python2
-	[[ ${test_missing_external_prereq_[python2]} == t ]] && cmd=python
-
 	(echo "import sys; _orig_stdout=sys.stdout; sys.stdout=open('OUTPUT', 'w')"; cat) \
-		| $cmd -
+		| $NOTMUCH_PYTHON -
 }
 
 test_ruby() {
@@ -1325,5 +1319,4 @@ test_declare_external_prereq emacs
 test_declare_external_prereq ${TEST_EMACSCLIENT}
 test_declare_external_prereq gdb
 test_declare_external_prereq gpg
-test_declare_external_prereq python
-test_declare_external_prereq python2
+test_declare_external_prereq ${NOTMUCH_PYTHON}
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] test: use the python interpreter in sh.config
  2015-08-02  6:40     ` [PATCH] test: use the python interpreter in sh.config David Bremner
@ 2015-08-02  8:31       ` Tomi Ollila
  2015-08-04 14:35       ` David Bremner
  1 sibling, 0 replies; 9+ messages in thread
From: Tomi Ollila @ 2015-08-02  8:31 UTC (permalink / raw)
  To: David Bremner, David Bremner, notmuch

On Sun, Aug 02 2015, David Bremner <david@tethera.net> wrote:

> The configure script chooses "python" if both python and python{2,3}
> exist exists, so this could change the version of python used to run
> the test suite.

LGTM. tests pass. 

>
> The checking for ${NOTMUCH_PYTHON} in the test suite is arguably
> over-engineering, since the configure step will fail if it can't find
> it.

Unless we accidentally edit NOTMUCH_PYTHON (away) in configure...
(i.e. I parsonally think this comment part is unnecessary, but i'm not
against having it)

Tomi

> ---
>
> Here is an updated version which fixes the subject typo, and actually
> tests for the python binary read from sh.config. I'll probably merge this version unless there are objections
>
>  configure           |  2 ++
>  test/T390-python.sh |  2 ++
>  test/test-lib.sh    | 15 ++++-----------
>  3 files changed, 8 insertions(+), 11 deletions(-)
>
> diff --git a/configure b/configure
> index 56f550b..20fbed6 100755
> --- a/configure
> +++ b/configure
> @@ -114,6 +114,8 @@ Other environment variables can be used to control configure itself,
>  	XAPIAN_CONFIG	The program to use to determine flags for
>  			compiling and linking against the Xapian
>  			library. [$XAPIAN_CONFIG]
> +	PYTHON		Name of python command to use in
> +			configure and the test suite.
>  
>  Additionally, various options can be specified on the configure
>  command line.
> diff --git a/test/T390-python.sh b/test/T390-python.sh
> index 26d0b97..c3f24f7 100755
> --- a/test/T390-python.sh
> +++ b/test/T390-python.sh
> @@ -2,6 +2,8 @@
>  test_description="python bindings"
>  . ./test-lib.sh
>  
> +test_require_external_prereq ${NOTMUCH_PYTHON}
> +
>  add_email_corpus
>  
>  test_begin_subtest "compare thread ids"
> diff --git a/test/test-lib.sh b/test/test-lib.sh
> index 3466e9c..db3b6aa 100644
> --- a/test/test-lib.sh
> +++ b/test/test-lib.sh
> @@ -621,9 +621,9 @@ test_expect_equal_json () {
>      # The test suite forces LC_ALL=C, but this causes Python 3 to
>      # decode stdin as ASCII.  We need to read JSON in UTF-8, so
>      # override Python's stdio encoding defaults.
> -    output=$(echo "$1" | PYTHONIOENCODING=utf-8 python -mjson.tool \
> +    output=$(echo "$1" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -mjson.tool \
>          || echo "$1")
> -    expected=$(echo "$2" | PYTHONIOENCODING=utf-8 python -mjson.tool \
> +    expected=$(echo "$2" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -mjson.tool \
>          || echo "$2")
>      shift 2
>      test_expect_equal "$output" "$expected" "$@"
> @@ -1153,14 +1153,8 @@ test_python() {
>  	export LD_LIBRARY_PATH=$TEST_DIRECTORY/../lib
>  	export PYTHONPATH=$TEST_DIRECTORY/../bindings/python
>  
> -	# Some distros (e.g. Arch Linux) ship Python 2.* as /usr/bin/python2,
> -	# most others as /usr/bin/python. So first try python2, and fallback to
> -	# python if python2 doesn't exist.
> -	cmd=python2
> -	[[ ${test_missing_external_prereq_[python2]} == t ]] && cmd=python
> -
>  	(echo "import sys; _orig_stdout=sys.stdout; sys.stdout=open('OUTPUT', 'w')"; cat) \
> -		| $cmd -
> +		| $NOTMUCH_PYTHON -
>  }
>  
>  test_ruby() {
> @@ -1325,5 +1319,4 @@ test_declare_external_prereq emacs
>  test_declare_external_prereq ${TEST_EMACSCLIENT}
>  test_declare_external_prereq gdb
>  test_declare_external_prereq gpg
> -test_declare_external_prereq python
> -test_declare_external_prereq python2
> +test_declare_external_prereq ${NOTMUCH_PYTHON}
> -- 
> 2.1.4
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] test: use the python interpreter in sh.config
  2015-08-02  6:40     ` [PATCH] test: use the python interpreter in sh.config David Bremner
  2015-08-02  8:31       ` Tomi Ollila
@ 2015-08-04 14:35       ` David Bremner
  1 sibling, 0 replies; 9+ messages in thread
From: David Bremner @ 2015-08-04 14:35 UTC (permalink / raw)
  To: notmuch

David Bremner <david@tethera.net> writes:

> The configure script chooses "python" if both python and python{2,3}
> exist exists, so this could change the version of python used to run
> the test suite.
>
> The checking for ${NOTMUCH_PYTHON} in the test suite is arguably
> over-engineering, since the configure step will fail if it can't find
> it.

pushed.

d

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-08-04 14:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-23 20:28 Support running test suite using python3 David Bremner
2015-05-23 20:28 ` [PATCH 1/4] test: make python tests compatible with python3 David Bremner
2015-05-23 20:28 ` [PATCH 2/4] configure: add ability to force python version via environment David Bremner
2015-05-23 20:28 ` [PATCH 3/4] test: use the python interpreter in sh.configure David Bremner
2015-06-08 14:50   ` David Bremner
2015-08-02  6:40     ` [PATCH] test: use the python interpreter in sh.config David Bremner
2015-08-02  8:31       ` Tomi Ollila
2015-08-04 14:35       ` David Bremner
2015-05-23 20:28 ` [PATCH 4/4] test: redirect man output to /dev/null David Bremner

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).