summaryrefslogtreecommitdiff
path: root/test/git/mp/test_thread.py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2010-06-05 19:59:17 +0200
committerSebastian Thiel <byronimo@gmail.com>2010-06-05 19:59:17 +0200
commit61138f2ece0cb864b933698174315c34a78835d1 (patch)
treebf764cc491c7f29bb4e9cb97b42d75b4b5c6458b /test/git/mp/test_thread.py
parent50e469109eed3a752d9a1b0297f16466ad92f8d2 (diff)
downloadgitpython-61138f2ece0cb864b933698174315c34a78835d1.tar.gz
Moved multiprocessing modules into own package, as they in fact have nothing to do with the object db. If that really works the way I want, it will become an own project, called async
Diffstat (limited to 'test/git/mp/test_thread.py')
-rw-r--r--test/git/mp/test_thread.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/test/git/mp/test_thread.py b/test/git/mp/test_thread.py
new file mode 100644
index 00000000..9625aabb
--- /dev/null
+++ b/test/git/mp/test_thread.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+""" Test thead classes and functions"""
+from test.testlib import *
+from git.mp.thread import *
+from Queue import Queue
+
+class TestWorker(WorkerThread):
+ def __init__(self, *args, **kwargs):
+ super(TestWorker, self).__init__(*args, **kwargs)
+ self.reset()
+
+ def fun(self, *args, **kwargs):
+ self.called = True
+ self.args = args
+ self.kwargs = kwargs
+ return True
+
+ def make_assertion(self):
+ assert self.called
+ assert self.args
+ assert self.kwargs
+ self.reset()
+
+ def reset(self):
+ self.called = False
+ self.args = None
+ self.kwargs = None
+
+
+class TestThreads( TestCase ):
+
+ @terminate_threads
+ def test_worker_thread(self):
+ worker = TestWorker()
+ assert isinstance(worker.start(), WorkerThread)
+
+ # test different method types
+ standalone_func = lambda *args, **kwargs: worker.fun(*args, **kwargs)
+ for function in ("fun", TestWorker.fun, worker.fun, standalone_func):
+ rval = worker.call(function, 1, this='that')
+ assert isinstance(rval, Queue)
+ assert rval.get() is True
+ worker.make_assertion()
+ # END for each function type
+
+ worker.call('quit')
+