Mercurial > hg > truffle
comparison mx/commands.py @ 4602:ebd98fc68b67
Merge.
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 16 Feb 2012 22:58:26 +0100 |
parents | ade18666f2be 6bcf713a4f41 |
children | ee87cfe2f8f9 ef0ff914c10f |
comparison
equal
deleted
inserted
replaced
4601:ade18666f2be | 4602:ebd98fc68b67 |
---|---|
315 for line in lines: | 315 for line in lines: |
316 f.write(line) | 316 f.write(line) |
317 | 317 |
318 else: | 318 else: |
319 if not exists(jdk): | 319 if not exists(jdk): |
320 mx.abort('The ' + build + ' VM has not been created - run \'mx clean; mx make ' + build + '\'') | 320 mx.abort('The ' + build + ' VM has not been created - run \'mx clean; mx build ' + build + '\'') |
321 return jdk | 321 return jdk |
322 | 322 |
323 # run a command in the windows SDK Debug Shell | 323 # run a command in the windows SDK Debug Shell |
324 def _runInDebugShell(cmd, workingDir, logFile=None, findInOutput=None, respondTo={}): | 324 def _runInDebugShell(cmd, workingDir, logFile=None, findInOutput=None, respondTo={}): |
325 newLine = os.linesep | 325 newLine = os.linesep |
476 # containing '@Test'. These are then determined to be the classes defining | 476 # containing '@Test'. These are then determined to be the classes defining |
477 # unit tests. | 477 # unit tests. |
478 _unittests = { | 478 _unittests = { |
479 'com.oracle.max.graal.tests': ['com.oracle.max.graal.compiler.tests'], | 479 'com.oracle.max.graal.tests': ['com.oracle.max.graal.compiler.tests'], |
480 } | 480 } |
481 _jtttests = { | |
482 'com.oracle.max.graal.jtt': ['com.oracle.max.graal.jtt'], | |
483 } | |
481 | 484 |
482 def _add_test_classes(testClassList, searchDir, pkgRoot): | 485 def _add_test_classes(testClassList, searchDir, pkgRoot): |
483 pkgDecl = re.compile(r"^package\s+([a-zA-Z_][\w\.]*)\s*;$") | 486 pkgDecl = re.compile(r"^package\s+([a-zA-Z_][\w\.]*)\s*;$") |
484 for root, _, files in os.walk(searchDir): | 487 for root, _, files in os.walk(searchDir): |
485 for name in files: | 488 for name in files: |
496 if line.strip().startswith('@Test'): | 499 if line.strip().startswith('@Test'): |
497 hasTest = True | 500 hasTest = True |
498 break | 501 break |
499 if hasTest: | 502 if hasTest: |
500 assert pkg is not None | 503 assert pkg is not None |
501 testClassList.append(pkg + '.' + name[:-len('.java')]) | 504 if pkg.startswith(pkgRoot): |
505 testClassList.append(pkg + '.' + name[:-len('.java')]) | |
502 | 506 |
503 def unittest(args): | 507 def unittest(args): |
504 """run the Graal Compiler Unit Tests in the GraalVM | 508 """run the Graal Compiler Unit Tests in the GraalVM |
505 | 509 |
506 If filters are supplied, only tests whose fully qualified name | 510 If filters are supplied, only tests whose fully qualified name |
525 if len(pos) != 0: | 529 if len(pos) != 0: |
526 classes = [c for c in classes if containsAny(c, pos)] | 530 classes = [c for c in classes if containsAny(c, pos)] |
527 if len(neg) != 0: | 531 if len(neg) != 0: |
528 classes = [c for c in classes if not containsAny(c, neg)] | 532 classes = [c for c in classes if not containsAny(c, neg)] |
529 | 533 |
530 # (ds) The boot class path must be used for some reason I don't quite understand | 534 vm(['-XX:-BootstrapGraal', '-esa', '-cp', mx.classpath(proj), 'org.junit.runner.JUnitCore'] + classes) |
531 vm(['-XX:-BootstrapGraal', '-esa', '-Xbootclasspath/a:' + mx.classpath(proj), 'org.junit.runner.JUnitCore'] + classes) | 535 |
536 def jtt(args): | |
537 """run the Java Tester Tests in the GraalVM | |
538 | |
539 If filters are supplied, only tests whose fully qualified name | |
540 include a filter as a substring are run. Negative filters are | |
541 those with a '-' prefix.""" | |
542 | |
543 pos = [a for a in args if a[0] != '-'] | |
544 neg = [a[1:] for a in args if a[0] == '-'] | |
545 | |
546 def containsAny(c, substrings): | |
547 for s in substrings: | |
548 if s in c: | |
549 return True | |
550 return False | |
551 | |
552 for proj in _jtttests.iterkeys(): | |
553 p = mx.project(proj) | |
554 classes = [] | |
555 for pkg in _jtttests[proj]: | |
556 _add_test_classes(classes, join(p.dir, 'src'), pkg) | |
557 | |
558 if len(pos) != 0: | |
559 classes = [c for c in classes if containsAny(c, pos)] | |
560 if len(neg) != 0: | |
561 classes = [c for c in classes if not containsAny(c, neg)] | |
562 | |
563 vm(['-XX:-BootstrapGraal', '-XX:CompileOnly=::test', '-Xcomp', '-esa', '-cp', mx.classpath(proj), 'org.junit.runner.JUnitCore'] + classes) | |
532 | 564 |
533 def buildvms(args): | 565 def buildvms(args): |
534 """build one or more VMs in various configurations""" | 566 """build one or more VMs in various configurations""" |
535 | 567 |
536 parser = ArgumentParser(prog='mx buildvms'); | 568 parser = ArgumentParser(prog='mx buildvms'); |
632 tasks.append(t.stop()) | 664 tasks.append(t.stop()) |
633 | 665 |
634 t = Task('UnitTests:' + vmbuild) | 666 t = Task('UnitTests:' + vmbuild) |
635 unittest([]) | 667 unittest([]) |
636 tasks.append(t.stop()) | 668 tasks.append(t.stop()) |
669 | |
670 # t = Task('JavaTesterTests:' + vmbuild) | |
671 # jtt([]) | |
672 # tasks.append(t.stop()) | |
637 | 673 |
638 for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild): | 674 for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild): |
639 t = Task(str(test) + ':' + vmbuild) | 675 t = Task(str(test) + ':' + vmbuild) |
640 if not test.test('graal'): | 676 if not test.test('graal'): |
641 t.abort(test.group + ' ' + test.name + ' Failed') | 677 t.abort(test.group + ' ' + test.name + ' Failed') |
776 'example': [example, '[-v] example names...'], | 812 'example': [example, '[-v] example names...'], |
777 'gate' : [gate, '[-options]'], | 813 'gate' : [gate, '[-options]'], |
778 'gv' : [gv, ''], | 814 'gv' : [gv, ''], |
779 'bench' : [bench, '[-resultfile file] [all(default)|dacapo|specjvm2008|bootstrap]'], | 815 'bench' : [bench, '[-resultfile file] [all(default)|dacapo|specjvm2008|bootstrap]'], |
780 'unittest' : [unittest, '[filters...]'], | 816 'unittest' : [unittest, '[filters...]'], |
817 'jtt' : [jtt, '[filters...]'], | |
781 'vm': [vm, '[-options] class [args...]'] | 818 'vm': [vm, '[-options] class [args...]'] |
782 } | 819 } |
783 | 820 |
784 if (_vmSourcesAvailable): | 821 if (_vmSourcesAvailable): |
785 mx.add_argument('--vm', action='store', dest='vm', default='graal', choices=['graal', 'server', 'client'], help='the VM to build/run (default: graal)') | 822 mx.add_argument('--vm', action='store', dest='vm', default='graal', choices=['graal', 'server', 'client'], help='the VM to build/run (default: graal)') |