Ajout du GUI
This commit is contained in:
115
kivy/tests/pyinstaller/test_pyinstaller.py
Normal file
115
kivy/tests/pyinstaller/test_pyinstaller.py
Normal file
@@ -0,0 +1,115 @@
|
||||
import pytest
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import shutil
|
||||
|
||||
if sys.platform != 'win32':
|
||||
pytestmark = pytest.mark.skip(
|
||||
"PyInstaller is currently only tested on Windows")
|
||||
else:
|
||||
try:
|
||||
import PyInstaller
|
||||
except ImportError:
|
||||
pytestmark = pytest.mark.skip("PyInstaller is not available")
|
||||
|
||||
|
||||
@pytest.mark.incremental
|
||||
class PyinstallerBase(object):
|
||||
|
||||
pinstall_path = ''
|
||||
|
||||
env = None
|
||||
|
||||
@classmethod
|
||||
def setup_class(cls):
|
||||
cls.env = cls.get_env()
|
||||
|
||||
@classmethod
|
||||
def get_env(cls):
|
||||
env = os.environ.copy()
|
||||
env['__KIVY_PYINSTALLER_DIR'] = cls.pinstall_path
|
||||
|
||||
if 'PYTHONPATH' not in env:
|
||||
env['PYTHONPATH'] = cls.pinstall_path
|
||||
else:
|
||||
env['PYTHONPATH'] = cls.pinstall_path + os.sep + env['PYTHONPATH']
|
||||
return env
|
||||
|
||||
@classmethod
|
||||
def get_run_env(cls):
|
||||
return os.environ.copy()
|
||||
|
||||
def test_project(self):
|
||||
try:
|
||||
# check that the project works normally before packaging
|
||||
subprocess.check_output(
|
||||
[sys.executable or 'python',
|
||||
os.path.join(self.pinstall_path, 'main.py')],
|
||||
stderr=subprocess.STDOUT, env=self.env)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(e.output.decode('utf8'))
|
||||
raise
|
||||
|
||||
def test_packaging(self):
|
||||
dist = os.path.join(self.pinstall_path, 'dist')
|
||||
build = os.path.join(self.pinstall_path, 'build')
|
||||
try:
|
||||
# create pyinstaller package
|
||||
subprocess.check_output(
|
||||
[sys.executable or 'python', '-m', 'PyInstaller',
|
||||
os.path.join(self.pinstall_path, 'main.spec'),
|
||||
'--distpath', dist, '--workpath', build],
|
||||
stderr=subprocess.STDOUT, env=self.env)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(e.output.decode('utf8'))
|
||||
raise
|
||||
|
||||
def test_packaged_project(self):
|
||||
try:
|
||||
# test package
|
||||
subprocess.check_output(
|
||||
os.path.join(self.pinstall_path, 'dist', 'main', 'main'),
|
||||
stderr=subprocess.STDOUT, env=self.get_run_env())
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(e.output.decode('utf8'))
|
||||
raise
|
||||
|
||||
@classmethod
|
||||
def teardown_class(cls):
|
||||
shutil.rmtree(
|
||||
os.path.join(cls.pinstall_path, '__pycache__'),
|
||||
ignore_errors=True)
|
||||
shutil.rmtree(
|
||||
os.path.join(cls.pinstall_path, 'build'), ignore_errors=True)
|
||||
shutil.rmtree(
|
||||
os.path.join(cls.pinstall_path, 'dist'), ignore_errors=True)
|
||||
shutil.rmtree(
|
||||
os.path.join(cls.pinstall_path, 'project', '__pycache__'),
|
||||
ignore_errors=True)
|
||||
|
||||
|
||||
class TestSimpleWidget(PyinstallerBase):
|
||||
|
||||
pinstall_path = os.path.join(os.path.dirname(__file__), 'simple_widget')
|
||||
|
||||
|
||||
class TestVideoWidget(PyinstallerBase):
|
||||
|
||||
pinstall_path = os.path.join(os.path.dirname(__file__), 'video_widget')
|
||||
|
||||
@classmethod
|
||||
def get_env(cls):
|
||||
env = super(TestVideoWidget, cls).get_env()
|
||||
import kivy
|
||||
env['__KIVY_VIDEO_TEST_FNAME'] = os.path.abspath(os.path.join(
|
||||
kivy.kivy_examples_dir, "widgets", "cityCC0.mpg"))
|
||||
return env
|
||||
|
||||
@classmethod
|
||||
def get_run_env(cls):
|
||||
env = super(TestVideoWidget, cls).get_run_env()
|
||||
import kivy
|
||||
env['__KIVY_VIDEO_TEST_FNAME'] = os.path.abspath(os.path.join(
|
||||
kivy.kivy_examples_dir, "widgets", "cityCC0.mpg"))
|
||||
return env
|
||||
Reference in New Issue
Block a user