"""
Run all examples that can be run on current configuration.
Note on GTK 2 / GTK 3 on Windows:
Installing both PyGTK and PyGI on Windows will cause errors.
You can install only one of these packages.
"""
from common import *
import importlib
import os
import sys
def main():
os.chdir(EXAMPLES_DIR)
packages = check_installed_packages()
examples = list()
examples.append("hello_world.py")
succeeded = list()
failed = list()
passed = list()
# wxpython
if packages["wx"]:
examples.append("wxpython.py")
else:
print("[run_examples.py] PASS: wxpython.py (wxPython not installed)")
passed.append("wxpython.py")
# gtk2
if packages["gtk"]:
examples.append("gtk2.py")
if LINUX:
examples.append("gtk2.py --message-loop-cef")
else:
print("[run_examples.py] PASS: gtk2.py (Gtk 2 not installed")
passed.append("gtk2.py")
# gtk3
if packages["gi"]:
if not LINUX:
examples.append("gtk3.py")
else:
# Gtk 3 example is currently broken on Linux (Issue #261)
print("[run_examples.py] PASS: gtk3.py (Issue #261)")
passed.append("gtk3.py")
else:
print("[run_examples.py] PASS: gtk3.py (Gtk 3 not installed)")
passed.append("gtk3.py")
# pyqt
if packages["PyQt4"]:
examples.append("qt.py pyqt")
else:
print("[run_examples.py] PASS: qt.py pyqt (PyQt4 not installed)")
passed.append("qt.py pyqt")
# pyside
if packages["PySide"]:
examples.append("qt.py pyside")
else:
print("[run_examples.py] PASS: qt.py pyside (PySide not installed)")
passed.append("qt.py pyside")
# tkinter
if packages["tkinter"] or packages["Tkinter"]:
examples.append("tkinter_.py")
else:
print(["run_examples.py] PASS: tkinter_.py (tkinter not installed)"])
passed.append("tkinter_.py")
# kivy
if LINUX and packages["kivy"] and packages["gtk"]:
if "--kivy" in sys.argv:
# When --kivy flag passed run only Kivy example
examples = list()
passed = list()
examples.append("{linux_dir}/binaries_64bit/kivy_.py"
.format(linux_dir=LINUX_DIR))
# Run all
for example in examples:
print("[run_examples.py] Running '{example}'..."
.format(example=example))
ret = os.system("{python} {example}"
.format(python=sys.executable, example=example))
if ret == 0:
succeeded.append(example)
else:
print("[run_examples.py] ERROR while running example: {example}"
.format(example=example))
failed.append(example)
# Summary
summary = ""
for example in succeeded:
summary += " OK {example}{nl}"\
.format(example=example, nl=os.linesep)
for example in failed:
summary += " ERROR {example}{nl}"\
.format(example=example, nl=os.linesep)
for example in passed:
summary += " PASS {example}{nl}"\
.format(example=example, nl=os.linesep)
summary = summary[:-(len(os.linesep))]
print("[run_examples.py] SUMMARY:")
print(summary.format())
# OK or error message
passed_msg = ""
if passed:
passed_msg = ". Passed: {passed}.".format(passed=len(passed))
if len(failed):
print("[run_examples.py] ERRORS({failed}) while running examples"
"{passed_msg}"
.format(failed=len(failed), passed_msg=passed_msg))
sys.exit(1)
else:
print("[run_examples.py] OK({succeeded}){passed_msg}"
.format(succeeded=len(succeeded), passed_msg=passed_msg))
def check_installed_packages():
packages = {
"gtk": False,
"gi": False,
"kivy": False,
"PyQt4": False,
"PySide": False,
"tkinter": False,
"Tkinter": False,
"wx": False,
}
for package in packages:
try:
importlib.import_module(package)
packages[package] = True
except ImportError:
packages[package] = False
return packages
if __name__ == "__main__":
main()