from pythonforandroid.toolchain import main from pythonforandroid.recipe import Recipe from os import path import sys import pytest # Set these values manually before testing (for now) ndk_dir = '/home/asandy/android/crystax-ndk-10.3.2' ndk_version='crystax-ndk-10.3.2' cur_dir = path.dirname(path.abspath(__file__)) testapps_dir = path.join(path.split(path.split(cur_dir)[0])[0], 'testapps') orig_argv = sys.argv[:] def set_argv(argv): while sys.argv: sys.argv.pop() sys.argv.append(orig_argv[0]) for item in argv: sys.argv.append(item) for item in orig_argv[1:]: if item == '-s': continue sys.argv.append(item) argument_combinations = [{'app_dir': path.join(testapps_dir, 'testapp'), 'requirements': 'python2,pyjnius,kivy', 'packagename': 'p4a_test_sdl2', 'bootstrap': 'sdl2', 'ndk_dir': ndk_dir, 'ndk_version': ndk_version}, {'app_dir': path.join(testapps_dir, 'testapp'), 'requirements': 'python2,pyjnius,kivy', 'packagename': 'p4a_test_pygame', 'bootstrap': 'pygame', 'ndk_dir': ndk_dir, 'ndk_version': ndk_version}, {'app_dir': path.join(testapps_dir, 'testapp_flask'), 'requirements': 'python2,flask,pyjnius', 'packagename': 'p4a_test_flask', 'bootstrap': 'webview', 'ndk_dir': ndk_dir, 'ndk_version': ndk_version}, ] @pytest.mark.parametrize('args', argument_combinations) def test_build_sdl2(args): Recipe.recipes = {} set_argv(('apk --requirements={requirements} --private ' '{app_dir} --package=net.p4a.{packagename} --name={packagename} ' '--version=0.1 --bootstrap={bootstrap} --android_api=19 ' '--ndk_dir={ndk_dir} --ndk_version={ndk_version} --debug ' '--permission VIBRATE ' '--symlink-java-src ' '--orientation portrait --dist_name=test-{packagename}').format( **args).split(' ')) print('argv are', sys.argv) main()