comparison mx/commands.py @ 9010:08a16c26907f

MX_TESTFILE environment variable can be used to specify (and preserve) the test list file used by 'mx unittest'. This is useful when wanting to run the command under gdb.
author Doug Simon <doug.simon@oracle.com>
date Thu, 11 Apr 2013 21:40:52 +0200
parents 8ddaac81cb21
children d538dce8f403
comparison
equal deleted inserted replaced
9009:1eb16dbb31a7 9010:08a16c26907f
775 def _unittest(args, annotations): 775 def _unittest(args, annotations):
776 mxdir = dirname(__file__) 776 mxdir = dirname(__file__)
777 name = 'JUnitWrapper' 777 name = 'JUnitWrapper'
778 javaSource = join(mxdir, name + '.java') 778 javaSource = join(mxdir, name + '.java')
779 javaClass = join(mxdir, name + '.class') 779 javaClass = join(mxdir, name + '.class')
780 (_, testfile) = tempfile.mkstemp(".testclasses", "graal") 780 testfile = os.environ.get('MX_TESTFILE', None)
781 if testfile is None:
782 (_, testfile) = tempfile.mkstemp(".testclasses", "graal")
781 783
782 def harness(projectscp, vmArgs): 784 def harness(projectscp, vmArgs):
783 if not exists(javaClass) or getmtime(javaClass) < getmtime(javaSource): 785 if not exists(javaClass) or getmtime(javaClass) < getmtime(javaSource):
784 subprocess.check_call([mx.java().javac, '-cp', projectscp, '-d', mxdir, javaSource]) 786 subprocess.check_call([mx.java().javac, '-cp', projectscp, '-d', mxdir, javaSource])
785 if _vm == 'server0': 787 if _vm == 'server0':
789 vm(prefixArgs + vmArgs + ['-cp', projectscp + os.pathsep + mxdir, name] + [testfile]) 791 vm(prefixArgs + vmArgs + ['-cp', projectscp + os.pathsep + mxdir, name] + [testfile])
790 792
791 try: 793 try:
792 _run_tests(args, harness, annotations, testfile) 794 _run_tests(args, harness, annotations, testfile)
793 finally: 795 finally:
794 os.remove(testfile) 796 if os.environ.get('MX_TESTFILE') is None:
797 os.remove(testfile)
795 798
796 def unittest(args): 799 def unittest(args):
797 """run the JUnit tests (all testcases) 800 """run the JUnit tests (all testcases)
798 801
799 If filters are supplied, only tests whose fully qualified name 802 If filters are supplied, only tests whose fully qualified name