summaryrefslogtreecommitdiffstats
path: root/extras/javatest.py
diff options
context:
space:
mode:
Diffstat (limited to 'extras/javatest.py')
-rwxr-xr-xextras/javatest.py118
1 files changed, 0 insertions, 118 deletions
diff --git a/extras/javatest.py b/extras/javatest.py
deleted file mode 100755
index 979b8d8..0000000
--- a/extras/javatest.py
+++ /dev/null
@@ -1,118 +0,0 @@
-#! /usr/bin/env python
-# encoding: utf-8
-# Federico Pellegrin, 2017 (fedepell)
-
-"""
-Provides Java Unit test support using :py:class:`waflib.Tools.waf_unit_test.utest`
-task via the **javatest** feature.
-
-This gives the possibility to run unit test and have them integrated into the
-standard waf unit test environment. It has been tested with TestNG and JUnit
-but should be easily expandable to other frameworks given the flexibility of
-ut_str provided by the standard waf unit test environment.
-
-Example usage:
-
-def options(opt):
- opt.load('java waf_unit_test javatest')
-
-def configure(conf):
- conf.load('java javatest')
-
-def build(bld):
-
- [ ... mainprog is built here ... ]
-
- bld(features = 'javac javatest',
- srcdir = 'test/',
- outdir = 'test',
- sourcepath = ['test'],
- classpath = [ 'src' ],
- basedir = 'test',
- use = ['JAVATEST', 'mainprog'], # mainprog is the program being tested in src/
- ut_str = 'java -cp ${CLASSPATH} ${JTRUNNER} ${SRC}',
- jtest_source = bld.path.ant_glob('test/*.xml'),
- )
-
-
-At command line the CLASSPATH where to find the testing environment and the
-test runner (default TestNG) that will then be seen in the environment as
-CLASSPATH_JAVATEST (then used for use) and JTRUNNER and can be used for
-dependencies and ut_str generation.
-
-Example configure for TestNG:
- waf configure --jtpath=/tmp/testng-6.12.jar:/tmp/jcommander-1.71.jar --jtrunner=org.testng.TestNG
- or as default runner is TestNG:
- waf configure --jtpath=/tmp/testng-6.12.jar:/tmp/jcommander-1.71.jar
-
-Example configure for JUnit:
- waf configure --jtpath=/tmp/junit.jar --jtrunner=org.junit.runner.JUnitCore
-
-The runner class presence on the system is checked for at configuration stage.
-
-"""
-
-import os
-from waflib import Task, TaskGen, Options
-
-@TaskGen.feature('javatest')
-@TaskGen.after_method('apply_java', 'use_javac_files', 'set_classpath')
-def make_javatest(self):
- """
- Creates a ``utest`` task with a populated environment for Java Unit test execution
-
- """
- tsk = self.create_task('utest')
- tsk.set_run_after(self.javac_task)
-
- # Put test input files as waf_unit_test relies on that for some prints and log generation
- # If jtest_source is there, this is specially useful for passing XML for TestNG
- # that contain test specification, use that as inputs, otherwise test sources
- if getattr(self, 'jtest_source', None):
- tsk.inputs = self.to_nodes(self.jtest_source)
- else:
- if self.javac_task.srcdir[0].exists():
- tsk.inputs = self.javac_task.srcdir[0].ant_glob('**/*.java', remove=False)
-
- if getattr(self, 'ut_str', None):
- self.ut_run, lst = Task.compile_fun(self.ut_str, shell=getattr(self, 'ut_shell', False))
- tsk.vars = lst + tsk.vars
-
- if getattr(self, 'ut_cwd', None):
- if isinstance(self.ut_cwd, str):
- # we want a Node instance
- if os.path.isabs(self.ut_cwd):
- self.ut_cwd = self.bld.root.make_node(self.ut_cwd)
- else:
- self.ut_cwd = self.path.make_node(self.ut_cwd)
- else:
- self.ut_cwd = self.bld.bldnode
-
- # Get parent CLASSPATH and add output dir of test, we run from wscript dir
- # We have to change it from list to the standard java -cp format (: separated)
- tsk.env.CLASSPATH = ':'.join(self.env.CLASSPATH) + ':' + self.outdir.abspath()
-
- if not self.ut_cwd.exists():
- self.ut_cwd.mkdir()
-
- if not hasattr(self, 'ut_env'):
- self.ut_env = dict(os.environ)
-
-def configure(ctx):
- cp = ctx.env.CLASSPATH or '.'
- if getattr(Options.options, 'jtpath', None):
- ctx.env.CLASSPATH_JAVATEST = getattr(Options.options, 'jtpath').split(':')
- cp += ':' + getattr(Options.options, 'jtpath')
-
- if getattr(Options.options, 'jtrunner', None):
- ctx.env.JTRUNNER = getattr(Options.options, 'jtrunner')
-
- if ctx.check_java_class(ctx.env.JTRUNNER, with_classpath=cp):
- ctx.fatal('Could not run test class %r' % ctx.env.JTRUNNER)
-
-def options(opt):
- opt.add_option('--jtpath', action='store', default='', dest='jtpath',
- help='Path to jar(s) needed for javatest execution, colon separated, if not in the system CLASSPATH')
- opt.add_option('--jtrunner', action='store', default='org.testng.TestNG', dest='jtrunner',
- help='Class to run javatest test [default: org.testng.TestNG]')
-