diff options
Diffstat (limited to 'python/tests')
| -rw-r--r-- | python/tests/Android.bp | 16 | ||||
| -rw-r--r-- | python/tests/par_test.py | 7 | ||||
| -rw-r--r-- | python/tests/py-cmd_test.py | 78 | ||||
| -rwxr-xr-x | python/tests/runtest.sh | 26 | ||||
| -rw-r--r-- | python/tests/testpkg/__init__.py | 0 | ||||
| -rw-r--r-- | python/tests/testpkg/par_test.py | 8 | ||||
| -rw-r--r-- | python/tests/testpkg/pycmd_test.py | 33 |
7 files changed, 165 insertions, 3 deletions
diff --git a/python/tests/Android.bp b/python/tests/Android.bp index 1f4305c41..c8bf42023 100644 --- a/python/tests/Android.bp +++ b/python/tests/Android.bp @@ -27,6 +27,22 @@ python_test_host { }, py3: { enabled: false, + embedded_launcher: true, + }, + }, +} + +python_test_host { + name: "par_test3", + main: "par_test.py", + srcs: [ + "par_test.py", + "testpkg/par_test.py", + ], + + version: { + py3: { + embedded_launcher: true, }, }, } diff --git a/python/tests/par_test.py b/python/tests/par_test.py index 1fafe0f82..56a5063c4 100644 --- a/python/tests/par_test.py +++ b/python/tests/par_test.py @@ -44,6 +44,13 @@ assert_equal("sys.path[0]", sys.path[0], archive) assert_equal("sys.path[1]", sys.path[1], os.path.join(archive, "internal")) assert_equal("sys.path[2]", sys.path[2], os.path.join(archive, "internal", "stdlib")) +if os.getenv('ARGTEST', False): + assert_equal("len(sys.argv)", len(sys.argv), 3) + assert_equal("sys.argv[1]", sys.argv[1], "--arg1") + assert_equal("sys.argv[2]", sys.argv[2], "arg2") +else: + assert_equal("len(sys.argv)", len(sys.argv), 1) + if failed: sys.exit(1) diff --git a/python/tests/py-cmd_test.py b/python/tests/py-cmd_test.py new file mode 100644 index 000000000..acda2d742 --- /dev/null +++ b/python/tests/py-cmd_test.py @@ -0,0 +1,78 @@ +# Copyright 2020 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import site +import sys + +# This file checks the visible python state against expected values when run +# using a prebuilt python. + +failed = False +def assert_equal(what, a, b): + global failed + if a != b: + print("Expected %s('%s') == '%s'" % (what, a, b)) + failed = True + +assert_equal("__name__", __name__, "__main__") +assert_equal("os.path.basename(__file__)", os.path.basename(__file__), "py-cmd_test.py") + +if os.getenv('ARGTEST', False): + assert_equal("len(sys.argv)", len(sys.argv), 3) + assert_equal("sys.argv[1]", sys.argv[1], "arg1") + assert_equal("sys.argv[2]", sys.argv[2], "arg2") +elif os.getenv('ARGTEST2', False): + assert_equal("len(sys.argv)", len(sys.argv), 3) + assert_equal("sys.argv[1]", sys.argv[1], "--arg1") + assert_equal("sys.argv[2]", sys.argv[2], "arg2") +else: + assert_equal("len(sys.argv)", len(sys.argv), 1) + +if os.getenv('ARGTEST_ONLY', False): + if failed: + sys.exit(1) + sys.exit(0) + +assert_equal("__package__", __package__, None) +assert_equal("sys.argv[0]", sys.argv[0], 'py-cmd_test.py') +if sys.version_info[0] == 2: + assert_equal("basename(sys.executable)", os.path.basename(sys.executable), 'py2-cmd') +else: + assert_equal("basename(sys.executable)", os.path.basename(sys.executable), 'py3-cmd') +assert_equal("sys.exec_prefix", sys.exec_prefix, sys.executable) +assert_equal("sys.prefix", sys.prefix, sys.executable) +assert_equal("site.ENABLE_USER_SITE", site.ENABLE_USER_SITE, None) + +if sys.version_info[0] == 2: + assert_equal("len(sys.path)", len(sys.path), 4) + assert_equal("sys.path[0]", sys.path[0], os.path.dirname(__file__)) + assert_equal("sys.path[1]", sys.path[1], "/extra") + assert_equal("sys.path[2]", sys.path[2], os.path.join(sys.executable, "internal")) + assert_equal("sys.path[3]", sys.path[3], os.path.join(sys.executable, "internal", "stdlib")) +else: + assert_equal("len(sys.path)", len(sys.path), 8) + assert_equal("sys.path[0]", sys.path[0], os.path.abspath(os.path.dirname(__file__))) + assert_equal("sys.path[1]", sys.path[1], "/extra") + assert_equal("sys.path[2]", sys.path[2], os.path.join(sys.executable, 'lib', 'python' + str(sys.version_info[0]) + str(sys.version_info[1]) + '.zip')) + assert_equal("sys.path[3]", sys.path[3], os.path.join(sys.executable, 'lib', 'python' + str(sys.version_info[0]) + '.' + str(sys.version_info[1]), '..')) + assert_equal("sys.path[4]", sys.path[4], os.path.join(sys.executable, 'lib', 'python' + str(sys.version_info[0]) + '.' + str(sys.version_info[1]))) + assert_equal("sys.path[5]", sys.path[5], os.path.join(sys.executable, 'lib', 'python' + str(sys.version_info[0]) + '.' + str(sys.version_info[1]), 'lib-dynload')) + assert_equal("sys.path[6]", sys.path[6], os.path.join(sys.executable, "internal")) + assert_equal("sys.path[7]", sys.path[7], os.path.join(sys.executable, "internal", "stdlib")) + +if failed: + sys.exit(1) + +import testpkg.pycmd_test diff --git a/python/tests/runtest.sh b/python/tests/runtest.sh index a319558ff..35941dc88 100755 --- a/python/tests/runtest.sh +++ b/python/tests/runtest.sh @@ -23,8 +23,11 @@ if [ -z $ANDROID_HOST_OUT ]; then exit 1 fi -if [ ! -f $ANDROID_HOST_OUT/nativetest64/par_test/par_test ]; then - echo "Run 'm par_test' first" +if [[ ( ! -f $ANDROID_HOST_OUT/nativetest64/par_test/par_test ) || + ( ! -f $ANDROID_HOST_OUT/nativetest64/par_test3/par_test3 ) || + ( ! -f $ANDROID_HOST_OUT/bin/py2-cmd ) || + ( ! -f $ANDROID_HOST_OUT/bin/py3-cmd )]]; then + echo "Run 'm par_test par_test3 py2-cmd py3-cmd' first" exit 1 fi @@ -36,4 +39,23 @@ PYTHONHOME= PYTHONPATH= $ANDROID_HOST_OUT/nativetest64/par_test/par_test PYTHONHOME=/usr $ANDROID_HOST_OUT/nativetest64/par_test/par_test PYTHONPATH=/usr $ANDROID_HOST_OUT/nativetest64/par_test/par_test +ARGTEST=true $ANDROID_HOST_OUT/nativetest64/par_test/par_test --arg1 arg2 + +PYTHONHOME= PYTHONPATH= $ANDROID_HOST_OUT/nativetest64/par_test3/par_test3 +PYTHONHOME=/usr $ANDROID_HOST_OUT/nativetest64/par_test3/par_test3 +PYTHONPATH=/usr $ANDROID_HOST_OUT/nativetest64/par_test3/par_test3 + +ARGTEST=true $ANDROID_HOST_OUT/nativetest64/par_test3/par_test3 --arg1 arg2 + +cd $(dirname ${BASH_SOURCE[0]}) + +PYTHONPATH=/extra $ANDROID_HOST_OUT/bin/py2-cmd py-cmd_test.py +PYTHONPATH=/extra $ANDROID_HOST_OUT/bin/py3-cmd py-cmd_test.py + +ARGTEST=true PYTHONPATH=/extra $ANDROID_HOST_OUT/bin/py2-cmd py-cmd_test.py arg1 arg2 +ARGTEST2=true PYTHONPATH=/extra $ANDROID_HOST_OUT/bin/py2-cmd py-cmd_test.py --arg1 arg2 + +ARGTEST=true PYTHONPATH=/extra $ANDROID_HOST_OUT/bin/py3-cmd py-cmd_test.py arg1 arg2 +ARGTEST2=true PYTHONPATH=/extra $ANDROID_HOST_OUT/bin/py3-cmd py-cmd_test.py --arg1 arg2 + echo "Passed!" diff --git a/python/tests/testpkg/__init__.py b/python/tests/testpkg/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/python/tests/testpkg/__init__.py diff --git a/python/tests/testpkg/par_test.py b/python/tests/testpkg/par_test.py index 22dd09564..ffad430e4 100644 --- a/python/tests/testpkg/par_test.py +++ b/python/tests/testpkg/par_test.py @@ -29,7 +29,13 @@ archive = sys.modules["__main__"].__loader__.archive assert_equal("__name__", __name__, "testpkg.par_test") assert_equal("__file__", __file__, os.path.join(archive, "testpkg/par_test.py")) -assert_equal("__package__", __package__, "testpkg") + +# Python3 is returning None here for me, and I haven't found any problems caused by this. +if sys.version_info[0] == 2: + assert_equal("__package__", __package__, "testpkg") +else: + assert_equal("__package__", __package__, None) + assert_equal("__loader__.archive", __loader__.archive, archive) assert_equal("__loader__.prefix", __loader__.prefix, "testpkg/") diff --git a/python/tests/testpkg/pycmd_test.py b/python/tests/testpkg/pycmd_test.py new file mode 100644 index 000000000..6b8a26301 --- /dev/null +++ b/python/tests/testpkg/pycmd_test.py @@ -0,0 +1,33 @@ +# Copyright 2018 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys + +# This file checks the visible python state against expected values when run +# via the py*-cmd prebuilts + +failed = False +def assert_equal(what, a, b): + global failed + if a != b: + print("Expected %s('%s') == '%s'" % (what, a, b)) + failed = True + +assert_equal("__name__", __name__, "testpkg.pycmd_test") +assert_equal("basename(__file__)", os.path.basename(__file__), "pycmd_test.py") +assert_equal("__package__", __package__, "testpkg") + +if failed: + sys.exit(1) |