Mercurial > hg > graal-compiler
comparison mx/commands.py @ 4587:5b04b33dac74
add jtt tests, converted from the maxine repository using ConvertJTT
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Tue, 14 Feb 2012 16:27:59 +0100 |
parents | 7e5d8d1c74a1 |
children | 6bcf713a4f41 |
comparison
equal
deleted
inserted
replaced
4586:05a6d48a6ace | 4587:5b04b33dac74 |
---|---|
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'); |
624 vm(['-esa', '-version']) | 656 vm(['-esa', '-version']) |
625 tasks.append(t.stop()) | 657 tasks.append(t.stop()) |
626 | 658 |
627 t = Task('UnitTests:' + vmbuild) | 659 t = Task('UnitTests:' + vmbuild) |
628 unittest([]) | 660 unittest([]) |
661 tasks.append(t.stop()) | |
662 | |
663 t = Task('JavaTesterTests:' + vmbuild) | |
664 jtt([]) | |
629 tasks.append(t.stop()) | 665 tasks.append(t.stop()) |
630 | 666 |
631 for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild): | 667 for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild): |
632 t = Task(str(test) + ':' + vmbuild) | 668 t = Task(str(test) + ':' + vmbuild) |
633 if not test.test('graal'): | 669 if not test.test('graal'): |
769 'example': [example, '[-v] example names...'], | 805 'example': [example, '[-v] example names...'], |
770 'gate' : [gate, ''], | 806 'gate' : [gate, ''], |
771 'gv' : [gv, ''], | 807 'gv' : [gv, ''], |
772 'bench' : [bench, '[-resultfile file] [all(default)|dacapo|specjvm2008|bootstrap]'], | 808 'bench' : [bench, '[-resultfile file] [all(default)|dacapo|specjvm2008|bootstrap]'], |
773 'unittest' : [unittest, '[filters...]'], | 809 'unittest' : [unittest, '[filters...]'], |
810 'jtt' : [jtt, '[filters...]'], | |
774 'vm': [vm, '[-options] class [args...]'] | 811 'vm': [vm, '[-options] class [args...]'] |
775 } | 812 } |
776 | 813 |
777 if (_vmSourcesAvailable): | 814 if (_vmSourcesAvailable): |
778 mx.add_argument('--vm', action='store', dest='vm', default='graal', choices=['graal', 'server', 'client'], help='the VM to build/run (default: graal)') | 815 mx.add_argument('--vm', action='store', dest='vm', default='graal', choices=['graal', 'server', 'client'], help='the VM to build/run (default: graal)') |