📄 java.exp
字号:
## Author: Petter Reinholdtsen <pere@td.org.uit.no>## Java regression tester for DejaGNU#load_lib target.exp## Compile and run all available java source#proc test-java-source { } { global srcdir global subdir global runtests # Find all Java-files foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.java]] { # If we're only testing specific files and this isn't one of them, # skip it. if ![runtest_file_p $runtests $src] then { continue } java-compile-execute $src } # Find all jasmin (java assambler) files foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.j]] { # If we're only testing specific files and this isn't one of them, # skip it. if ![runtest_file_p $runtests $src] then { continue } jasmin-assemble-execute $src }}## Compile #args#proc java-compile { args } { set src $args set output "" set options "" set comp_output [javac-target-compile "$src" "$output" executable $options];}## Assemble #args#proc jasmin-assemble { args } { set src $args set output "" set options "" set comp_output [jasmin-target-assemble "$src" "$output" executable $options];}## Compile $args and execute java class runtime_test#proc java-compile-execute { args } { global srcdir global subdir set comp_output [java-compile $args] if ![regexp "^$" $comp_output] { # Do not care about kaffes stupid messages #fail $args #print "$comp_output" #return } global JAVA set java $JAVA set classpath [getenv CLASSPATH] setenv CLASSPATH "${srcdir}/$subdir:$classpath" # XXX There must be a better way to get basename catch {exec basename $args .java} basename catch {exec $java $basename} run_output exec rm -f "${srcdir}/$subdir/$basename.class" set lines "" foreach line [split $run_output \n] { if [regexp "PASSED:.*" $line] { if ![regexp "^$" $lines] { fail "$args $lines" } pass "$args $line" } else { if [regexp "FAILED:.*" $line] { fail "$args $line" } else { # Accumulate "wild" lines if ![regexp "^$" $lines] { set lines "$lines\n $line" } else { set lines "$line" } } } } if ![regexp "^$" $lines] { fail "$args $lines" } # Reset CLASSPATH setenv CLASSPATH "$classpath" return;}## Compile $args and execute java class runtime_test#proc jasmin-assemble-execute { args } { global srcdir global subdir set comp_output [jasmin-assemble $args] if ![regexp "^$" $comp_output] { #fail $args #print "$comp_output" #return } # XXX Should use some default value global JAVA set java $JAVA set classpath [getenv CLASSPATH] setenv CLASSPATH "${srcdir}/$subdir:$classpath" # XXX There must be a better way to get basename catch {exec basename $args .j} basename catch {exec $java $basename} run_output exec rm -f "${srcdir}/$subdir/$basename.class" set lines "" foreach line [split $run_output \n] { if [regexp "PASSED:.*" $line] { if ![regexp "^$" $lines] { fail "$args $lines" } pass "$args $line" } else { if [regexp "FAILED:.*" $line] { fail "$args $line" } else { # Accumulate "wild" lines if ![regexp "^$" $lines] { set lines "$lines\n $line" } else { set lines "$line" } } } } if ![regexp "^$" $lines] { fail "$args $lines" } # Reset CLASSPATH setenv CLASSPATH "$classpath" return;}## Compile java source#proc javac-target-compile { source dest type options } {# XXX Do it the simple way - should use target_compile global JAVAC set javac $JAVAC catch {exec $javac $source} comp_output return $comp_output# set options ""# lappend options "compiler=javac"# lappend options "additional_flags=-g"# lappend options "libs="# lappend options "ldflags="# return [target_compile $source $dest $type $options]}## Compile jasmin (java assambly) source#proc jasmin-target-assemble { source dest type options } { global srcdir global subdir# XXX Do it the simple way - should use target_compile global JAVA set java $JAVA catch {exec $java jasmin.Main -d $srcdir/$subdir $source} comp_output return comp_output;# set options ""# lappend options "compiler=javac"# lappend options "additional_flags=-g"# lappend options "libs="# lappend options "ldflags="# return [target_compile $source $dest $type $options]}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -