+2004-05-01 Johan Dahlin <johan@gnome.org>
+
+ * testsuite/runtests.py (gettestnames): Cleanup
+
+ * testsuite/element.py (FakeSinkTest): Enable again and disable
+ stderr while changing state to ready
+ (ElementName.testElementStateGetName): New function to test
+ gst.element_state_get_name.
+
+ * testsuite/common.py (path): Don't import ltihooks and proper
+ check for gst module. Add --gst-debug-no-color as a global option
+ (disable_stderr, enable_stderr): New functions to disable stdout
+ called from non python
+
2004-04-30 Johan Dahlin <johan@gnome.org>
* gst/gst.defs (element_state_get_name): Add.
import unittest
# Don't insert before .
-sys.path.insert(1, os.path.join('..', 'gst'))
-
-import ltihooks
+sys.path.insert(1, os.path.join('..'))
# Load GST and make sure we load it from the current build
sys.setdlopenflags(dl.RTLD_LAZY | dl.RTLD_GLOBAL)
+# Hack
+sys.argv.append('--gst-debug-no-color')
+
path = os.path.abspath(os.path.join('..', 'gst'))
import gst
-assert gst.__path__ != path, 'bad path'
+assert gst._gst.__file__ == '../gst/_gst.la'
try:
import gst.interfaces
assert os.path.basename(gst.play.__file__) != path, 'bad path'
except ImportError:
pass
-
-
+_stderr = None
+
+def disable_stderr():
+ global _stderr
+ _stderr = file('/tmp/stderr', 'w+')
+ sys.stderr = os.fdopen(os.dup(2), 'w')
+ os.close(2)
+ os.dup(_stderr.fileno())
+
+def enable_stderr():
+ global _stderr
+
+ os.close(2)
+ os.dup(sys.stderr.fileno())
+ _stderr.seek(0, 0)
+ data = _stderr.read()
+ _stderr.close()
+ os.remove('/tmp/stderr')
+ return data
#
# testsuite for gstreamer.Element
+import common
from common import gst, unittest
class ElementTest(unittest.TestCase):
def setUp(self):
self.element = gst.Element('fakesink', 'sink')
- # Disabled - since it outputs junks
- def _testStateError(self):
+ def testStateError(self):
self.element.set_property('state-error',
self.FAKESINK_STATE_ERROR_NULL_READY)
def error_cb(element, source, error, debug):
assert isinstance(error, gst.GError)
self.element.connect('error', error_cb)
+ common.disable_stderr()
self.element.set_state(gst.STATE_READY)
-
+ common.enable_stderr()
+
class NonExistentTest(ElementTest):
name = 'this-element-does-not-exist'
alias = 'no-alias'
def testGoodConstructor(self):
pass
+class ElementName(unittest.TestCase):
+ def testElementStateGetName(self):
+ get_name = gst.element_state_get_name
+ for state in ('NULL',
+ 'READY',
+ 'PLAYING',
+ 'PAUSED'):
+ name = 'STATE_' + state
+ assert hasattr(gst, name)
+ attr = getattr(gst, name)
+ assert get_name(attr) == state
+
+ assert get_name(gst.STATE_VOID_PENDING) == 'NONE_PENDING'
+ assert get_name(-1) == 'UNKNOWN!'
+ self.assertRaises(TypeError, get_name, '')
+
if __name__ == "__main__":
unittest.main()
#!/usr/bin/env python
+import glob
import sys
-from unittest import TestSuite, TestLoader, TextTestRunner
-from types import ClassType
+import unittest
-loader = TestLoader()
-testRunner = TextTestRunner()
+SKIP_FILES = ['common', 'runtests']
-test = TestSuite()
-for name in ('element', 'interface', 'pipeline'):
- test.addTest(loader.loadTestsFromName(name))
-testRunner.run(tests)
+def gettestnames():
+ files = glob.glob('*.py')
+ names = map(lambda x: x[:-3], files)
+ map(names.remove, SKIP_FILES)
+ return names
+
+suite = unittest.TestSuite()
+loader = unittest.TestLoader()
+
+for name in gettestnames():
+ suite.addTest(loader.loadTestsFromName(name))
+
+testRunner = unittest.TextTestRunner()
+testRunner.run(suite)
#
# testsuite for gstreamer.Element
+import common
from common import gst, unittest
class ElementTest(unittest.TestCase):
def setUp(self):
self.element = gst.Element('fakesink', 'sink')
- # Disabled - since it outputs junks
- def _testStateError(self):
+ def testStateError(self):
self.element.set_property('state-error',
self.FAKESINK_STATE_ERROR_NULL_READY)
def error_cb(element, source, error, debug):
assert isinstance(error, gst.GError)
self.element.connect('error', error_cb)
+ common.disable_stderr()
self.element.set_state(gst.STATE_READY)
-
+ common.enable_stderr()
+
class NonExistentTest(ElementTest):
name = 'this-element-does-not-exist'
alias = 'no-alias'
def testGoodConstructor(self):
pass
+class ElementName(unittest.TestCase):
+ def testElementStateGetName(self):
+ get_name = gst.element_state_get_name
+ for state in ('NULL',
+ 'READY',
+ 'PLAYING',
+ 'PAUSED'):
+ name = 'STATE_' + state
+ assert hasattr(gst, name)
+ attr = getattr(gst, name)
+ assert get_name(attr) == state
+
+ assert get_name(gst.STATE_VOID_PENDING) == 'NONE_PENDING'
+ assert get_name(-1) == 'UNKNOWN!'
+ self.assertRaises(TypeError, get_name, '')
+
if __name__ == "__main__":
unittest.main()