#SConstruct script
#Building production object
#Building test object
#Running test
import os
class Lobby:
def __init__(self):
pass
def environment(self):
return Environment(ENV = os.environ)
def product(self):
return Product(self)
def make(self):
self.product().make()
class Product:
def __init__(self, parent):
self._parent = parent
def environment(self):
return self._parent.environment()
def dest(self):
return 'dest/product/classes'
def src(self):
return 'product/src'
def target(self):
return self.environment().Java(self.dest(), self.src())
def test(self):
return Test(self)
def make(self):
self.target()
self.test().make()
class Test:
def __init__(self, parent):
self._parent = parent
def junit(self):
return 'test/lib/junit-4.10.jar'
def environment(self):
ret = self._parent.environment()
ret['JAVACLASSPATH'] = [self._parent.dest(), self.junit()]
return ret
def src(self):
return 'test/src'
def dest(self):
return 'dest/test/classes'
def target(self):
env = self.environment()
ret = env.Java(self.dest(), self.src())
env.Depends(ret, self._parent.dest())
return ret
def runner(self):
return TestRunner(self)
def make(self):
self.target()
self.runner().make()
class TestRunner:
def __init__(self, parent):
self._parent = parent
def environment(self):
ret = self._parent.environment()
ret['JAVACLASSPATH'].append(self._parent.dest())
return ret
def dest(self):
return 'dest/result/foo'
def javaclasspath(self):
return self.environment()['JAVACLASSPATH']
def classpath(self):
return ':'.join(self.javaclasspath())
def tests(self):
return 'SimpleTest'
def mainclass(self):
return 'org.junit.runner.JUnitCore'
def main(self):
return 'java -cp %s %s %s' % \
(self.classpath(), self.mainclass(), self.tests())
def target(self):
env = self.environment()
ret = env.Command(self.dest(), None, self.main())
env.Depends(ret, self._parent.target())
return ret
def make(self):
self.target()
Lobby().make()