forked from drewr/clojure-py
-
Notifications
You must be signed in to change notification settings - Fork 1
/
bootstrap-clj-tests.py
41 lines (30 loc) · 1.06 KB
/
bootstrap-clj-tests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import sys
import os.path
sys.path = [os.path.dirname(__file__)+"../"] + sys.path
import clojure
import unittest
from clojure.lang.var import Var
from clojure.lang.cljkeyword import keyword
from clojure.main import requireClj
import clojure.core
def mapTest(ns, var):
class Test(unittest.TestCase):
def testVar(self):
var()
name = ns + str(var)
tst = Test
tst.__name__ = name
globals()[name] = tst
for x in os.listdir(os.path.dirname(__file__)):
if x.endswith(".clj") and x.find("test") >= 0:
print "Reading tests from", x
requireClj(os.path.join(os.path.dirname(__file__),x))
folder, file = os.path.split(x)
ns, ext = os.path.splitext(x)
module = sys.modules["tests."+ns]
for idx in dir(module):
var = getattr(module, idx)
if isinstance(var, Var) and str(var).endswith("tests"):
meta = var.meta()
if meta is not None and meta[keyword("test")]:
mapTest(ns, var)