summaryrefslogtreecommitdiff
path: root/src/test/Test.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/Test.py')
-rwxr-xr-xsrc/test/Test.py150
1 files changed, 150 insertions, 0 deletions
diff --git a/src/test/Test.py b/src/test/Test.py
new file mode 100755
index 0000000..4c4de8f
--- /dev/null
+++ b/src/test/Test.py
@@ -0,0 +1,150 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# libavg - Media Playback Engine.
+# Copyright (C) 2003-2014 Ulrich von Zadow
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Current versions can be found at www.libavg.de
+#
+
+'''
+Runner for libavg unit tests
+
+On autotools-based systems, tests are performed on a local libavg package.
+This package is created by symlinking all the relevant files in a local, temporary
+directory, letting python find it as first instance.
+On windows, instead, tests are always carried on after distutils installs the package.
+'''
+
+import sys
+import os
+import shutil
+import atexit
+
+def cleanup(folder):
+ if os.path.isdir(folder):
+ sys.stderr.write('Wiping out directory: %s\n' % folder)
+ shutil.rmtree(folder)
+
+def symtree(src, dest):
+ os.mkdir(dest)
+ for f in os.listdir(src):
+ fpath = os.path.join(src, f)
+ if (f and f[0] != '.' and
+ (os.path.isdir(fpath) or
+ (os.path.isfile(fpath) and os.path.splitext(f)[1] in ('.py', '.glsl')))):
+ os.symlink(os.path.join(os.pardir, src, f), os.path.join(dest, f))
+
+
+if sys.platform != 'win32':
+ tempPackageDir = os.path.join(os.getcwd(), 'libavg')
+ # Possible values for srcdir:
+ # '.': make check
+ # None: ./Test.py
+ # dir name: make distcheck
+ srcDir = os.getenv("srcdir",".")
+ if srcDir == '.':
+ # Running make check or ./Test.py
+ if os.path.basename(os.getcwd()) != 'test':
+ raise RuntimeError('Manual tests must be performed inside directory "test"')
+
+ cleanup(tempPackageDir)
+
+ try:
+ symtree('../python', 'libavg')
+ os.symlink('../../graphics/shaders', 'libavg/shaders')
+ except OSError:
+ pass
+ else:
+ # Running make distcheck
+ symtree('../../../../src/python', 'libavg')
+ os.symlink('../../../../../src/graphics/shaders', 'libavg/shaders')
+
+ # distcheck doesn't want leftovers (.pyc files)
+ atexit.register(lambda tempPackageDir=tempPackageDir: cleanup(tempPackageDir))
+
+ if os.path.exists('../wrapper/.libs/avg.so'):
+ # Normal case: use the local version (not the installed one)
+ shutil.copy2('../wrapper/.libs/avg.so', 'libavg/avg.so')
+ elif os.path.exists('../../avg.so'):
+ # Mac version after installer dmg
+ pass
+ else:
+ raise RuntimeError('Compile libavg before running tests or use "make check"')
+
+ # The following line prevents the test to be run
+ # with an unknown version of libavg, which can be hiding somewhere
+ # in the system
+ sys.path.insert(0, os.getcwd())
+
+ # Meaningful only for distcheck
+ os.chdir(srcDir)
+
+import libavg
+libavg.logger.configureCategory(libavg.Logger.Category.APP, libavg.Logger.Severity.INFO)
+libavg.logger.info("Using libavg from: "+ os.path.dirname(libavg.__file__),
+ libavg.Logger.Category.APP)
+# Ensure mouse is activated
+libavg.player.enableMouse(True)
+
+import testapp
+
+libavg.Player.get().keepWindowOpen()
+
+import PluginTest
+import PlayerTest
+import OffscreenTest
+import ImageTest
+import FXTest
+import VectorTest
+import WordsTest
+import AVTest
+import DynamicsTest
+import PythonTest
+import AnimTest
+import EventTest
+import InputDeviceTest
+import AVGAppTest
+import WidgetTest
+import GestureTest
+import LoggerTest
+import AppTest
+
+app = testapp.TestApp()
+
+app.registerSuiteFactory('plugin', PluginTest.pluginTestSuite)
+app.registerSuiteFactory('player', PlayerTest.playerTestSuite)
+app.registerSuiteFactory('offscreen', OffscreenTest.offscreenTestSuite)
+app.registerSuiteFactory('image', ImageTest.imageTestSuite)
+app.registerSuiteFactory('fx', FXTest.fxTestSuite)
+app.registerSuiteFactory('vector', VectorTest.vectorTestSuite)
+app.registerSuiteFactory('words', WordsTest.wordsTestSuite)
+app.registerSuiteFactory('av', AVTest.AVTestSuite)
+app.registerSuiteFactory('dynamics', DynamicsTest.dynamicsTestSuite)
+app.registerSuiteFactory('python', PythonTest.pythonTestSuite)
+app.registerSuiteFactory('anim', AnimTest.animTestSuite)
+app.registerSuiteFactory('event', EventTest.eventTestSuite)
+app.registerSuiteFactory('inputdevice', InputDeviceTest.inputDeviceTestSuite)
+app.registerSuiteFactory('widget', WidgetTest.widgetTestSuite)
+app.registerSuiteFactory('gesture', GestureTest.gestureTestSuite)
+app.registerSuiteFactory('avgapp', AVGAppTest.avgAppTestSuite)
+app.registerSuiteFactory('logger', LoggerTest.loggerTestSuite)
+app.registerSuiteFactory('app', AppTest.appTestSuite)
+
+app.run()
+
+sys.exit(app.exitCode())
+