From: Rainer Orth Date: Mon, 18 Feb 2019 13:53:51 +0000 (+0000) Subject: Tabify all D *.exp files X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cc2cc3bef3510b8ed9c485292f1dc4de607eba84;p=gcc.git Tabify all D *.exp files libphobos: * testsuite/lib/libphobos-dg.exp: Tabify. * testsuite/lib/libphobos.exp: Likewise. * testsuite/libphobos.cycles/cycles.exp: Likewise. * testsuite/libphobos.shared/shared.exp: Likewise. * testsuite/libphobos.unittests/unittests.exp: Likewise. gcc/testsuite: * gdc.dg/dg.exp: Tabify. * gdc.dg/lto/lto.exp: Likewise. * gdc.test/gdc-test.exp: Likewise. * lib/gdc-dg.exp: Likewise. * lib/gdc.exp: Likewise. From-SVN: r268987 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2a68cf23921..b1a0c368f71 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2019-02-18 Rainer Orth + + * gdc.dg/dg.exp: Tabify. + * gdc.dg/lto/lto.exp: Likewise. + * gdc.test/gdc-test.exp: Likewise. + * lib/gdc-dg.exp: Likewise. + * lib/gdc.exp: Likewise. + 2019-02-18 Richard Biener PR tree-optimization/89296 diff --git a/gcc/testsuite/gdc.dg/dg.exp b/gcc/testsuite/gdc.dg/dg.exp index bc850ebc006..299768f8230 100644 --- a/gcc/testsuite/gdc.dg/dg.exp +++ b/gcc/testsuite/gdc.dg/dg.exp @@ -24,12 +24,12 @@ load_lib gdc-dg.exp if ![info exists TORTURE_OPTIONS] { set TORTURE_OPTIONS [list \ - { -O0 } { -O1 } { -O2 } { -O3 } { -Os } \ - { -O0 -frelease } { -O0 -g } { -O0 -frelease -g } \ - { -O1 -frelease } { -O1 -g } { -O1 -frelease -g } \ - { -O2 -frelease } { -O2 -g } { -O2 -frelease -g } \ - { -O3 -frelease } { -O3 -g } { -O3 -frelease -g } \ - { -Os -frelease } { -Os -g } { -Os -frelease -g }] + { -O0 } { -O1 } { -O2 } { -O3 } { -Os } \ + { -O0 -frelease } { -O0 -g } { -O0 -frelease -g } \ + { -O1 -frelease } { -O1 -g } { -O1 -frelease -g } \ + { -O2 -frelease } { -O2 -g } { -O2 -frelease -g } \ + { -O3 -frelease } { -O3 -g } { -O3 -frelease -g } \ + { -Os -frelease } { -Os -g } { -Os -frelease -g }] } # Initialize `dg'. diff --git a/gcc/testsuite/gdc.dg/lto/lto.exp b/gcc/testsuite/gdc.dg/lto/lto.exp index 72968c8f3a1..087ff130c9f 100644 --- a/gcc/testsuite/gdc.dg/lto/lto.exp +++ b/gcc/testsuite/gdc.dg/lto/lto.exp @@ -51,7 +51,7 @@ set sid "d_lto" foreach src [lsort [find $srcdir/$subdir *_0.d]] { # If we're only testing specific files and this isn't one of them, skip it. if ![runtest_file_p $runtests $src] then { - continue + continue } lto-execute $src $sid diff --git a/gcc/testsuite/gdc.test/gdc-test.exp b/gcc/testsuite/gdc.test/gdc-test.exp index 4ab072d5f58..f2772e9c9e6 100644 --- a/gcc/testsuite/gdc.test/gdc-test.exp +++ b/gcc/testsuite/gdc.test/gdc-test.exp @@ -26,107 +26,107 @@ proc gdc-convert-args { args } { set out "" foreach arg [split [lindex $args 0] " "] { - # List of switches kept in ASCII collated order. - if [string match "-D" $arg] { - lappend out "-fdoc" + # List of switches kept in ASCII collated order. + if [string match "-D" $arg] { + lappend out "-fdoc" - } elseif { [regexp -- {^-I([\w+/-]+)} $arg pattern path] } { - lappend out "-I$path" + } elseif { [regexp -- {^-I([\w+/-]+)} $arg pattern path] } { + lappend out "-I$path" - } elseif { [regexp -- {^-J([\w+/-]+)} $arg pattern path] } { - lappend out "-J$path" + } elseif { [regexp -- {^-J([\w+/-]+)} $arg pattern path] } { + lappend out "-J$path" - } elseif [string match "-allinst" $arg] { - lappend out "-fall-instantiations" + } elseif [string match "-allinst" $arg] { + lappend out "-fall-instantiations" - } elseif { [string match "-boundscheck" $arg] - || [string match "-boundscheck=on" $arg] } { - lappend out "-fbounds-check" + } elseif { [string match "-boundscheck" $arg] + || [string match "-boundscheck=on" $arg] } { + lappend out "-fbounds-check" - } elseif { [string match "-boundscheck=off" $arg] - || [string match "-noboundscheck" $arg] } { - lappend out "-fno-bounds-check" + } elseif { [string match "-boundscheck=off" $arg] + || [string match "-noboundscheck" $arg] } { + lappend out "-fno-bounds-check" - } elseif [string match "-boundscheck=safeonly" $arg] { - lappend out "-fbounds-check=safeonly" + } elseif [string match "-boundscheck=safeonly" $arg] { + lappend out "-fbounds-check=safeonly" - } elseif [string match "-c" $arg] { - lappend out "-c" + } elseif [string match "-c" $arg] { + lappend out "-c" - } elseif [string match "-d" $arg] { - lappend out "-Wno-deprecated" + } elseif [string match "-d" $arg] { + lappend out "-Wno-deprecated" - } elseif [string match "-de" $arg] { - lappend out "-Wdeprecated" - lappend out "-Werror" + } elseif [string match "-de" $arg] { + lappend out "-Wdeprecated" + lappend out "-Werror" - } elseif [string match "-debug" $arg] { - lappend out "-fdebug" + } elseif [string match "-debug" $arg] { + lappend out "-fdebug" - } elseif [regexp -- {^-debug=(\w+)} $arg pattern value] { - lappend out "-fdebug=$value" + } elseif [regexp -- {^-debug=(\w+)} $arg pattern value] { + lappend out "-fdebug=$value" - } elseif [string match "-dip1000" $arg] { - lappend out "-ftransition=dip1000" + } elseif [string match "-dip1000" $arg] { + lappend out "-ftransition=dip1000" - } elseif [string match "-dip25" $arg] { - lappend out "-ftransition=dip25" + } elseif [string match "-dip25" $arg] { + lappend out "-ftransition=dip25" - } elseif [string match "-dw" $arg] { - lappend out "-Wdeprecated" - lappend out "-Wno-error" + } elseif [string match "-dw" $arg] { + lappend out "-Wdeprecated" + lappend out "-Wno-error" - } elseif [string match "-fPIC" $arg] { - lappend out "-fPIC" + } elseif [string match "-fPIC" $arg] { + lappend out "-fPIC" - } elseif { [string match "-g" $arg] - || [string match "-gc" $arg] } { - lappend out "-g" + } elseif { [string match "-g" $arg] + || [string match "-gc" $arg] } { + lappend out "-g" - } elseif [string match "-inline" $arg] { - lappend out "-finline-functions" + } elseif [string match "-inline" $arg] { + lappend out "-finline-functions" - } elseif [string match "-main" $arg] { - lappend out "-fmain" + } elseif [string match "-main" $arg] { + lappend out "-fmain" - } elseif [regexp -- {^-mv=([\w+=./-]+)} $arg pattern value] { - lappend out "-fmodule-file=$value" + } elseif [regexp -- {^-mv=([\w+=./-]+)} $arg pattern value] { + lappend out "-fmodule-file=$value" - } elseif [string match "-O" $arg] { - lappend out "-O2" + } elseif [string match "-O" $arg] { + lappend out "-O2" - } elseif [string match "-release" $arg] { - lappend out "-frelease" + } elseif [string match "-release" $arg] { + lappend out "-frelease" - } elseif [regexp -- {^-transition=(\w+)} $arg pattern value] { - lappend out "-ftransition=$value" + } elseif [regexp -- {^-transition=(\w+)} $arg pattern value] { + lappend out "-ftransition=$value" - } elseif [string match "-unittest" $arg] { - lappend out "-funittest" + } elseif [string match "-unittest" $arg] { + lappend out "-funittest" - } elseif [string match "-verrors=spec" $arg] { - lappend out "-Wspeculative" + } elseif [string match "-verrors=spec" $arg] { + lappend out "-Wspeculative" - } elseif [regexp -- {^-verrors=(\d+)} $arg pattern num] { - lappend out "-fmax-errors=$num" + } elseif [regexp -- {^-verrors=(\d+)} $arg pattern num] { + lappend out "-fmax-errors=$num" - } elseif [regexp -- {^-version=(\w+)} $arg pattern value] { - lappend out "-fversion=$value" + } elseif [regexp -- {^-version=(\w+)} $arg pattern value] { + lappend out "-fversion=$value" - } elseif [string match "-vtls" $arg] { - lappend out "-ftransition=tls" + } elseif [string match "-vtls" $arg] { + lappend out "-ftransition=tls" - } elseif [string match "-w" $arg] { - lappend out "-Wall" - lappend out "-Werror" + } elseif [string match "-w" $arg] { + lappend out "-Wall" + lappend out "-Werror" - } elseif [string match "-wi" $arg] { - lappend out "-Wall" - lappend out "-Wno-error" + } elseif [string match "-wi" $arg] { + lappend out "-Wall" + lappend out "-Wno-error" - } else { - # print "Unhandled Argument: $arg" - } + } else { + # print "Unhandled Argument: $arg" + } } return $out @@ -146,8 +146,8 @@ proc gdc-copy-extra { base extra } { fconfigure $fdout -encoding binary while { [gets $fdin copy_line] >= 0 } { - set out_line $copy_line - puts $fdout $out_line + set out_line $copy_line + puts $fdout $out_line } close $fdin @@ -160,20 +160,20 @@ proc gdc-copy-extra { base extra } { # Translate DMD test directives to dejagnu equivalent. # # COMPILE_SEPARATELY: Not handled. -# EXECUTE_ARGS: Parameters to add to the execution of the test. -# COMPILED_IMPORTS: List of modules files that are imported by the main -# source file that should be included in compilation. -# Currently handled the same as EXTRA_SOURCES. -# EXTRA_SOURCES: List of extra sources to build and link along with -# the test. -# EXTRA_FILES: List of extra files to copy for the test runs. -# PERMUTE_ARGS: The set of arguments to permute in multiple compiler -# invocations. An empty set means only one permutation -# with no arguments. -# TEST_OUTPUT: The output expected from the compilation. -# POST_SCRIPT: Not handled. -# REQUIRED_ARGS: Arguments to add to the compiler command line. -# DISABLED: Not handled. +# EXECUTE_ARGS: Parameters to add to the execution of the test. +# COMPILED_IMPORTS: List of modules files that are imported by the main +# source file that should be included in compilation. +# Currently handled the same as EXTRA_SOURCES. +# EXTRA_SOURCES: List of extra sources to build and link along with +# the test. +# EXTRA_FILES: List of extra files to copy for the test runs. +# PERMUTE_ARGS: The set of arguments to permute in multiple compiler +# invocations. An empty set means only one permutation +# with no arguments. +# TEST_OUTPUT: The output expected from the compilation. +# POST_SCRIPT: Not handled. +# REQUIRED_ARGS: Arguments to add to the compiler command line. +# DISABLED: Not handled. # proc dmd2dg { base test } { @@ -198,76 +198,76 @@ proc dmd2dg { base test } { #fconfigure $fdout -encoding binary while { [gets $fdin copy_line] >= 0 } { - set out_line $copy_line - - if [regexp -- {COMPILE_SEPARATELY} $copy_line] { - # COMPILE_SEPARATELY is not handled. - regsub -- {COMPILE_SEPARATELY.*$} $copy_line "" out_line - - } elseif [regexp -- {DISABLED} $copy_line] { - # DISABLED is not handled. - regsub -- {DISABLED.*$} $copy_line "" out_line - - } elseif [regexp -- {POST_SCRIPT} $copy_line] { - # POST_SCRIPT is not handled - regsub -- {POST_SCRIPT.*$} $copy_line "" out_line - - } elseif [regexp -- {PERMUTE_ARGS\s*:\s*(.*)} $copy_line match args] { - # PERMUTE_ARGS is handled by gdc-do-test. - set PERMUTE_ARGS [gdc-convert-args $args] - regsub -- {PERMUTE_ARGS.*$} $copy_line "" out_line - - } elseif [regexp -- {EXECUTE_ARGS\s*:\s*(.*)} $copy_line match args] { - # EXECUTE_ARGS is handled by gdc_load. - foreach arg $args { - lappend GDC_EXECUTE_ARGS $arg - } - regsub -- {EXECUTE_ARGS.*$} $copy_line "" out_line - - } elseif [regexp -- {REQUIRED_ARGS\s*:\s*(.*)} $copy_line match args] { - # Convert all listed arguments to from dmd to gdc-style. - set new_option "{ dg-additional-options \"[gdc-convert-args $args]\" }" - regsub -- {REQUIRED_ARGS.*$} $copy_line $new_option out_line - - } elseif [regexp -- {EXTRA_SOURCES\s*:\s*(.*)} $copy_line match sources] { - # Copy all sources to the testsuite build directory. - foreach import $sources { - # print "Import: $base $type/$import" - gdc-copy-extra $base "$type/$import" - } - set new_option "{ dg-additional-sources \"$sources\" }" - regsub -- {EXTRA_SOURCES.*$} $copy_line $new_option out_line - - } elseif [regexp -- {EXTRA_CPP_SOURCES\s*:\s*(.*)} $copy_line match sources] { - # Copy all sources to the testsuite build directory. - foreach import $sources { - # print "Import: $base $type/$import" - gdc-copy-extra $base "$type/$import" - } - set new_option "{ dg-additional-sources \"$sources\" }" - regsub -- {EXTRA_CPP_SOURCES.*$} $copy_line $new_option out_line - - } elseif [regexp -- {EXTRA_FILES\s*:\s*(.*)} $copy_line match files] { - # Copy all files to the testsuite build directory. - foreach import $files { - # print "Import: $base $type/$import" - gdc-copy-extra $base "$type/$import" - } - set new_option "{ dg-additional-files \"$files\" }" - regsub -- {EXTRA_FILES.*$} $copy_line $new_option out_line - - } elseif [regexp -- {COMPILED_IMPORTS\s*:\s*(.*)} $copy_line match sources] { - # Copy all sources to the testsuite build directory. - foreach import $sources { - # print "Import: $base $type/$import" - gdc-copy-extra $base "$type/$import" - } - set new_option "{ dg-additional-sources \"$sources\" }" - regsub -- {COMPILED_IMPORTS.*$} $copy_line $new_option out_line - - } - - puts $fdout $out_line + set out_line $copy_line + + if [regexp -- {COMPILE_SEPARATELY} $copy_line] { + # COMPILE_SEPARATELY is not handled. + regsub -- {COMPILE_SEPARATELY.*$} $copy_line "" out_line + + } elseif [regexp -- {DISABLED} $copy_line] { + # DISABLED is not handled. + regsub -- {DISABLED.*$} $copy_line "" out_line + + } elseif [regexp -- {POST_SCRIPT} $copy_line] { + # POST_SCRIPT is not handled + regsub -- {POST_SCRIPT.*$} $copy_line "" out_line + + } elseif [regexp -- {PERMUTE_ARGS\s*:\s*(.*)} $copy_line match args] { + # PERMUTE_ARGS is handled by gdc-do-test. + set PERMUTE_ARGS [gdc-convert-args $args] + regsub -- {PERMUTE_ARGS.*$} $copy_line "" out_line + + } elseif [regexp -- {EXECUTE_ARGS\s*:\s*(.*)} $copy_line match args] { + # EXECUTE_ARGS is handled by gdc_load. + foreach arg $args { + lappend GDC_EXECUTE_ARGS $arg + } + regsub -- {EXECUTE_ARGS.*$} $copy_line "" out_line + + } elseif [regexp -- {REQUIRED_ARGS\s*:\s*(.*)} $copy_line match args] { + # Convert all listed arguments to from dmd to gdc-style. + set new_option "{ dg-additional-options \"[gdc-convert-args $args]\" }" + regsub -- {REQUIRED_ARGS.*$} $copy_line $new_option out_line + + } elseif [regexp -- {EXTRA_SOURCES\s*:\s*(.*)} $copy_line match sources] { + # Copy all sources to the testsuite build directory. + foreach import $sources { + # print "Import: $base $type/$import" + gdc-copy-extra $base "$type/$import" + } + set new_option "{ dg-additional-sources \"$sources\" }" + regsub -- {EXTRA_SOURCES.*$} $copy_line $new_option out_line + + } elseif [regexp -- {EXTRA_CPP_SOURCES\s*:\s*(.*)} $copy_line match sources] { + # Copy all sources to the testsuite build directory. + foreach import $sources { + # print "Import: $base $type/$import" + gdc-copy-extra $base "$type/$import" + } + set new_option "{ dg-additional-sources \"$sources\" }" + regsub -- {EXTRA_CPP_SOURCES.*$} $copy_line $new_option out_line + + } elseif [regexp -- {EXTRA_FILES\s*:\s*(.*)} $copy_line match files] { + # Copy all files to the testsuite build directory. + foreach import $files { + # print "Import: $base $type/$import" + gdc-copy-extra $base "$type/$import" + } + set new_option "{ dg-additional-files \"$files\" }" + regsub -- {EXTRA_FILES.*$} $copy_line $new_option out_line + + } elseif [regexp -- {COMPILED_IMPORTS\s*:\s*(.*)} $copy_line match sources] { + # Copy all sources to the testsuite build directory. + foreach import $sources { + # print "Import: $base $type/$import" + gdc-copy-extra $base "$type/$import" + } + set new_option "{ dg-additional-sources \"$sources\" }" + regsub -- {COMPILED_IMPORTS.*$} $copy_line $new_option out_line + + } + + puts $fdout $out_line } # Add specific options for test type @@ -281,32 +281,32 @@ proc dmd2dg { base test } { # Fail compilable are successful if an output is not generated. # Runnable must compile, link, and return 0 to be successful by default. switch $type { - runnable { - if ![isnative] { - set out_line "// { dg-final { output-exists } }" - puts $fdout $out_line - } - } - - compilable { - set out_line "// { dg-final { output-exists } }" - puts $fdout $out_line - - # Check that Ddoc tests also generate a html file. - if [regexp -- "ddoc.*" $name] { - set ddocfile "[file rootname $name].html" - set out_line "// { dg-final { scan-file $ddocfile \"Generated by Ddoc from $test\" } }" - puts $fdout $out_line - # Cleanup extra generated files. - set out_line "// { dg-final { file delete $ddocfile } }" - puts $fdout $out_line - } - } - - fail_compilation { - set out_line "// { dg-final { output-exists-not } }" - puts $fdout $out_line - } + runnable { + if ![isnative] { + set out_line "// { dg-final { output-exists } }" + puts $fdout $out_line + } + } + + compilable { + set out_line "// { dg-final { output-exists } }" + puts $fdout $out_line + + # Check that Ddoc tests also generate a html file. + if [regexp -- "ddoc.*" $name] { + set ddocfile "[file rootname $name].html" + set out_line "// { dg-final { scan-file $ddocfile \"Generated by Ddoc from $test\" } }" + puts $fdout $out_line + # Cleanup extra generated files. + set out_line "// { dg-final { file delete $ddocfile } }" + puts $fdout $out_line + } + } + + fail_compilation { + set out_line "// { dg-final { output-exists-not } }" + puts $fdout $out_line + } } close $fdin @@ -319,14 +319,14 @@ proc gdc-permute-options { options } { set result { } set n [expr 1<<[llength $options]] for { set i 0 } { $i<$n } { incr i } { - set option "" - for { set j 0 } { $j<[llength $options] } { incr j } { - if [expr $i & 1 << $j] { - append option [lindex $options $j] - append option " " - } - } - lappend result $option + set option "" + for { set j 0 } { $j<[llength $options] } { incr j } { + if [expr $i & 1 << $j] { + append option [lindex $options $j] + append option " " + } + } + lappend result $option } return $result @@ -341,8 +341,8 @@ proc gdc-do-test { } { # If a testcase doesn't have special options, use these. global DEFAULT_DFLAGS if ![info exists DEFAULT_DFLAGS] then { - set DEFAULT_DFLAGS "-g -O2 -frelease" - #set DEFAULT_DFLAGS "-O2" + set DEFAULT_DFLAGS "-g -O2 -frelease" + #set DEFAULT_DFLAGS "-O2" } # These are special options to use on testcase, and override DEFAULT_DFLAGS @@ -373,65 +373,65 @@ proc gdc-do-test { } { # set dg-final-code "" # Find all tests and pass to routine. foreach test [lsort [find $srcdir/$subdir *]] { - regexp -- "(.*)/(.+)/(.+)\.(.+)$" $test match base dir name ext - - # Skip invalid test directory - if { [lsearch "runnable compilable fail_compilation" $dir] == -1 } { - continue - } - - # Skip invalid test extensions - if { [lsearch "d" $ext] == -1 } { - continue - } - - # Convert to DG test. - set imports [format "-I%s/%s" $base $dir] - # Include $subdir prefix so test names follow DejaGnu conventions. - set filename "$subdir/[dmd2dg $base $dir/$name.$ext]" - - if { $dir == "runnable" } { - append PERMUTE_ARGS " $SHARED_OPTION" - } - set options [gdc-permute-options $PERMUTE_ARGS] - - switch $dir { - runnable { - for { set i 0 } { $i<[llength $options] } { incr i } { - set flags [lindex $options $i] - if [isnative] { - set dg-do-what-default "run" - } else { - set dg-do-what-default "link" - } - gdc-dg-runtest $filename $flags $imports - } - } - - compilable { - for { set i 0 } { $i<[llength $options] } { incr i } { - set flags [lindex $options $i] - # Compilable test may require checking another kind of output file. - if [regexp -- "ddoc.*" $name] { - set dg-do-what-default "compile" - } else { - set dg-do-what-default "assemble" - } - gdc-dg-runtest $filename $flags $imports - } - } - - fail_compilation { - for { set i 0 } { $i<[llength $options] } { incr i } { - set flags [lindex $options $i] - set dg-do-what-default "assemble" - gdc-dg-runtest $filename $flags $imports - } - } - } - - # Cleanup - file delete $filename + regexp -- "(.*)/(.+)/(.+)\.(.+)$" $test match base dir name ext + + # Skip invalid test directory + if { [lsearch "runnable compilable fail_compilation" $dir] == -1 } { + continue + } + + # Skip invalid test extensions + if { [lsearch "d" $ext] == -1 } { + continue + } + + # Convert to DG test. + set imports [format "-I%s/%s" $base $dir] + # Include $subdir prefix so test names follow DejaGnu conventions. + set filename "$subdir/[dmd2dg $base $dir/$name.$ext]" + + if { $dir == "runnable" } { + append PERMUTE_ARGS " $SHARED_OPTION" + } + set options [gdc-permute-options $PERMUTE_ARGS] + + switch $dir { + runnable { + for { set i 0 } { $i<[llength $options] } { incr i } { + set flags [lindex $options $i] + if [isnative] { + set dg-do-what-default "run" + } else { + set dg-do-what-default "link" + } + gdc-dg-runtest $filename $flags $imports + } + } + + compilable { + for { set i 0 } { $i<[llength $options] } { incr i } { + set flags [lindex $options $i] + # Compilable test may require checking another kind of output file. + if [regexp -- "ddoc.*" $name] { + set dg-do-what-default "compile" + } else { + set dg-do-what-default "assemble" + } + gdc-dg-runtest $filename $flags $imports + } + } + + fail_compilation { + for { set i 0 } { $i<[llength $options] } { incr i } { + set flags [lindex $options $i] + set dg-do-what-default "assemble" + gdc-dg-runtest $filename $flags $imports + } + } + } + + # Cleanup + file delete $filename } set allow_blank_lines $save_allow_blank_lines diff --git a/gcc/testsuite/lib/gdc-dg.exp b/gcc/testsuite/lib/gdc-dg.exp index 631b7f97f61..d33085fbd39 100644 --- a/gcc/testsuite/lib/gdc-dg.exp +++ b/gcc/testsuite/lib/gdc-dg.exp @@ -37,7 +37,7 @@ proc gdc-dg-test { prog do_what extra_tool_flags } { set prog [dg-trim-dirname gdc.test $prog] set result \ - [gcc-dg-test-1 gdc_target_compile $prog $do_what $extra_tool_flags] + [gcc-dg-test-1 gdc_target_compile $prog $do_what $extra_tool_flags] set comp_output [lindex $result 0] set output_file [lindex $result 1] @@ -60,26 +60,26 @@ proc gdc-dg-runtest { testcases flags default-extra-flags } { global runtests foreach test $testcases { - # If we're only testing specific files and this isn't one of - # them, skip it. - if ![runtest_file_p $runtests $test] { - continue - } - - # Use TORTURE_OPTIONS to cycle through an option list. - if [torture-options-exist] then { - global torture_with_loops - set option_list $torture_with_loops - } else { - set option_list { "" } - } - - set nshort [file tail [file dirname $test]]/[file tail $test] - - foreach flags_t $option_list { - verbose "Testing $nshort, $flags $flags_t" 1 - dg-test $test "$flags $flags_t" ${default-extra-flags} - } + # If we're only testing specific files and this isn't one of + # them, skip it. + if ![runtest_file_p $runtests $test] { + continue + } + + # Use TORTURE_OPTIONS to cycle through an option list. + if [torture-options-exist] then { + global torture_with_loops + set option_list $torture_with_loops + } else { + set option_list { "" } + } + + set nshort [file tail [file dirname $test]]/[file tail $test] + + foreach flags_t $option_list { + verbose "Testing $nshort, $flags $flags_t" 1 + dg-test $test "$flags $flags_t" ${default-extra-flags} + } } } @@ -93,13 +93,13 @@ if { [info procs gdc_load] != [list] \ rename gdc_load prev_gdc_load proc gdc_load { program args } { - global GDC_EXECUTE_ARGS - if [info exists GDC_EXECUTE_ARGS] then { - set args [concat "{$GDC_EXECUTE_ARGS}"] - } - #print "Running: $program [lindex $args 0]" - set result [eval [list prev_gdc_load $program] $args ] - return $result + global GDC_EXECUTE_ARGS + if [info exists GDC_EXECUTE_ARGS] then { + set args [concat "{$GDC_EXECUTE_ARGS}"] + } + #print "Running: $program [lindex $args 0]" + set result [eval [list prev_gdc_load $program] $args ] + return $result } } diff --git a/gcc/testsuite/lib/gdc.exp b/gcc/testsuite/lib/gdc.exp index 1bc45b92061..59aec674be6 100644 --- a/gcc/testsuite/lib/gdc.exp +++ b/gcc/testsuite/lib/gdc.exp @@ -44,22 +44,22 @@ proc gdc_version { } { # verify that the compiler exists if { [is_remote host] || [which $compiler] != 0 } then { - set tmp [remote_exec host "$compiler -v"] - set status [lindex $tmp 0] - set output [lindex $tmp 1] - regexp " version \[^\n\r\]*" $output version - if { $status == 0 && [info exists version] } then { - if [is_remote host] { - clone_output "$compiler $version\n" - } else { - clone_output "[which $compiler] $version\n" - } - } else { - clone_output "Couldn't determine version of [which $compiler]\n" - } + set tmp [remote_exec host "$compiler -v"] + set status [lindex $tmp 0] + set output [lindex $tmp 1] + regexp " version \[^\n\r\]*" $output version + if { $status == 0 && [info exists version] } then { + if [is_remote host] { + clone_output "$compiler $version\n" + } else { + clone_output "[which $compiler] $version\n" + } + } else { + clone_output "Couldn't determine version of [which $compiler]\n" + } } else { - # compiler does not exist (this should have already been detected) - warning "$compiler does not exist" + # compiler does not exist (this should have already been detected) + warning "$compiler does not exist" } } @@ -74,26 +74,26 @@ proc gdc_include_flags { paths } { set flags "" if { [is_remote host] || ![info exists TESTING_IN_BUILD_TREE] } { - return "${flags}" + return "${flags}" } set gccpath ${paths} set target [file tail [file normalize ${paths}]] if { $gccpath != "" } { - if [file exists "${gccpath}/libphobos/libdruntime"] { - append flags "-I${gccpath}/libphobos/libdruntime " - } + if [file exists "${gccpath}/libphobos/libdruntime"] { + append flags "-I${gccpath}/libphobos/libdruntime " + } } append flags "-I${srcdir}/../../libphobos/libdruntime " append flags "-I${srcdir}/../../libphobos/src " # For the tests that mix C++ and D, we should try and handle this better. if { $gccpath != "" } { - if [file exists "${gccpath}/libstdc++-v3/include"] { - append flags "-I${gccpath}/libstdc++-v3/include " - append flags "-I${gccpath}/libstdc++-v3/include/$target " - } + if [file exists "${gccpath}/libstdc++-v3/include"] { + append flags "-I${gccpath}/libstdc++-v3/include " + append flags "-I${gccpath}/libstdc++-v3/include/$target " + } } append flags "-I${srcdir}/../../libstdc++-v3/libsupc++" } @@ -118,60 +118,60 @@ proc gdc_link_flags { paths } { verbose "shared lib extension: $shlib_ext" if { $gccpath != "" } { - # Path to libgphobos.spec. - append flags "-B${gccpath}/libphobos/src " - # Path to drtbegin.o/drtend.o. - if { [file exists "${gccpath}/libphobos/libdruntime/gcc/drtbegin.o"] } { - append flags "-B${gccpath}/libphobos/libdruntime/gcc " - } - - if { [file exists "${gccpath}/libphobos/src/.libs/libgphobos.a"] \ - || [file exists "${gccpath}/libphobos/src/.libs/libgphobos.${shlib_ext}"] } { - append flags "-L${gccpath}/libphobos/src/.libs " - append ld_library_path ":${gccpath}/libphobos/src/.libs" - } - if { [file exists "${gccpath}/libphobos/libdruntime/.libs/libgdruntime.a"] \ - || [file exists "${gccpath}/libphobos/libdruntime/.libs/libgdruntime.${shlib_ext}"] } { - append flags "-L${gccpath}/libphobos/libdruntime/.libs " - append ld_library_path ":${gccpath}/libphobos/libdruntime/.libs" - } - # Static linking is default. If only the shared lib is available adjust - # flags to always use it. If both are available, set SHARED_OPTION which - # will be added to PERMUTE_ARGS - if { [file exists "${gccpath}/libphobos/libdruntime/.libs/libgdruntime.${shlib_ext}"] } { - if { [file exists "${gccpath}/libphobos/libdruntime/.libs/libgdruntime.a"] } { - set SHARED_OPTION "-shared-libphobos" - } else { - append flags "-shared-libphobos " - } - } - if [file exists "${gccpath}/libiberty/libiberty.a"] { - append flags "-L${gccpath}/libiberty " - } - # For the tests that mix C++ and D, we should try and handle this better. - if { [file exists "${gccpath}/libstdc++-v3/src/.libs/libstdc++.a"] \ - || [file exists "${gccpath}/libstdc++-v3/src/.libs/libstdc++.${shlib_ext}"] } { - append flags "-L${gccpath}/libstdc++-v3/src/.libs " - append ld_library_path ":${gccpath}/libstdc++-v3/src/.libs" - } - append ld_library_path [gcc-set-multilib-library-path $GDC_UNDER_TEST] + # Path to libgphobos.spec. + append flags "-B${gccpath}/libphobos/src " + # Path to drtbegin.o/drtend.o. + if { [file exists "${gccpath}/libphobos/libdruntime/gcc/drtbegin.o"] } { + append flags "-B${gccpath}/libphobos/libdruntime/gcc " + } + + if { [file exists "${gccpath}/libphobos/src/.libs/libgphobos.a"] \ + || [file exists "${gccpath}/libphobos/src/.libs/libgphobos.${shlib_ext}"] } { + append flags "-L${gccpath}/libphobos/src/.libs " + append ld_library_path ":${gccpath}/libphobos/src/.libs" + } + if { [file exists "${gccpath}/libphobos/libdruntime/.libs/libgdruntime.a"] \ + || [file exists "${gccpath}/libphobos/libdruntime/.libs/libgdruntime.${shlib_ext}"] } { + append flags "-L${gccpath}/libphobos/libdruntime/.libs " + append ld_library_path ":${gccpath}/libphobos/libdruntime/.libs" + } + # Static linking is default. If only the shared lib is available adjust + # flags to always use it. If both are available, set SHARED_OPTION which + # will be added to PERMUTE_ARGS + if { [file exists "${gccpath}/libphobos/libdruntime/.libs/libgdruntime.${shlib_ext}"] } { + if { [file exists "${gccpath}/libphobos/libdruntime/.libs/libgdruntime.a"] } { + set SHARED_OPTION "-shared-libphobos" + } else { + append flags "-shared-libphobos " + } + } + if [file exists "${gccpath}/libiberty/libiberty.a"] { + append flags "-L${gccpath}/libiberty " + } + # For the tests that mix C++ and D, we should try and handle this better. + if { [file exists "${gccpath}/libstdc++-v3/src/.libs/libstdc++.a"] \ + || [file exists "${gccpath}/libstdc++-v3/src/.libs/libstdc++.${shlib_ext}"] } { + append flags "-L${gccpath}/libstdc++-v3/src/.libs " + append ld_library_path ":${gccpath}/libstdc++-v3/src/.libs" + } + append ld_library_path [gcc-set-multilib-library-path $GDC_UNDER_TEST] } else { - global tool_root_dir - - set libphobos [lookfor_file ${tool_root_dir} libgphobos] - if { $libphobos != "" } { - append flags "-B${libphobos} -L${libphobos} " - append ld_library_path ":${libphobos}" - } - set libdruntime [lookfor_file ${tool_root_dir} libgdruntime] - if { $libdruntime != "" } { - append flags "-L${libdruntime} " - append ld_library_path ":${libdruntime}" - } - set libiberty [lookfor_file ${tool_root_dir} libiberty] - if { $libiberty != "" } { - append flags "-L${libiberty} " - } + global tool_root_dir + + set libphobos [lookfor_file ${tool_root_dir} libgphobos] + if { $libphobos != "" } { + append flags "-B${libphobos} -L${libphobos} " + append ld_library_path ":${libphobos}" + } + set libdruntime [lookfor_file ${tool_root_dir} libgdruntime] + if { $libdruntime != "" } { + append flags "-L${libdruntime} " + append ld_library_path ":${libdruntime}" + } + set libiberty [lookfor_file ${tool_root_dir} libiberty] + if { $libiberty != "" } { + append flags "-L${libiberty} " + } } set_ld_library_path_env_vars @@ -204,29 +204,29 @@ proc gdc_init { args } { setenv LANG C if ![info exists GDC_UNDER_TEST] then { - if [info exists TOOL_EXECUTABLE] { - set GDC_UNDER_TEST $TOOL_EXECUTABLE - } else { - if { [is_remote host] || ! [info exists TESTING_IN_BUILD_TREE] } { - set GDC_UNDER_TEST [transform gdc] - } else { - set GDC_UNDER_TEST [findfile $base_dir/../../gdc "$base_dir/../../gdc -B$base_dir/../../" [findfile $base_dir/gdc "$base_dir/gdc -B$base_dir/" [transform gdc]]] - } - } + if [info exists TOOL_EXECUTABLE] { + set GDC_UNDER_TEST $TOOL_EXECUTABLE + } else { + if { [is_remote host] || ! [info exists TESTING_IN_BUILD_TREE] } { + set GDC_UNDER_TEST [transform gdc] + } else { + set GDC_UNDER_TEST [findfile $base_dir/../../gdc "$base_dir/../../gdc -B$base_dir/../../" [findfile $base_dir/gdc "$base_dir/gdc -B$base_dir/" [transform gdc]]] + } + } } if ![is_remote host] { - if { [which $GDC_UNDER_TEST] == 0 } then { - perror "GDC_UNDER_TEST ($GDC_UNDER_TEST) does not exist" - exit 1 - } + if { [which $GDC_UNDER_TEST] == 0 } then { + perror "GDC_UNDER_TEST ($GDC_UNDER_TEST) does not exist" + exit 1 + } } if ![info exists tmpdir] { - set tmpdir "/tmp" + set tmpdir "/tmp" } if [info exists gluefile] { - unset gluefile + unset gluefile } gdc_maybe_build_wrapper "${tmpdir}/d-testglue.o" @@ -237,21 +237,21 @@ proc gdc_init { args } { # compilation. They are passed first to allow individual # tests to override them. if [info exists TEST_ALWAYS_FLAGS] { - lappend ALWAYS_DFLAGS "additional_flags=$TEST_ALWAYS_FLAGS" + lappend ALWAYS_DFLAGS "additional_flags=$TEST_ALWAYS_FLAGS" } if ![is_remote host] { - if [info exists TOOL_OPTIONS] { - lappend ALWAYS_DFLAGS "additional_flags=[gdc_include_flags [get_multilibs ${TOOL_OPTIONS}] ]" - lappend ALWAYS_DFLAGS "ldflags=[gdc_link_flags [get_multilibs ${TOOL_OPTIONS}] ]" - } else { - lappend ALWAYS_DFLAGS "additional_flags=[gdc_include_flags [get_multilibs] ]" - lappend ALWAYS_DFLAGS "ldflags=[gdc_link_flags [get_multilibs] ]" - } + if [info exists TOOL_OPTIONS] { + lappend ALWAYS_DFLAGS "additional_flags=[gdc_include_flags [get_multilibs ${TOOL_OPTIONS}] ]" + lappend ALWAYS_DFLAGS "ldflags=[gdc_link_flags [get_multilibs ${TOOL_OPTIONS}] ]" + } else { + lappend ALWAYS_DFLAGS "additional_flags=[gdc_include_flags [get_multilibs] ]" + lappend ALWAYS_DFLAGS "ldflags=[gdc_link_flags [get_multilibs] ]" + } } if [info exists TOOL_OPTIONS] { - lappend ALWAYS_DFLAGS "additional_flags=$TOOL_OPTIONS" + lappend ALWAYS_DFLAGS "additional_flags=$TOOL_OPTIONS" } verbose -log "ALWAYS_DFLAGS set to $ALWAYS_DFLAGS" @@ -273,8 +273,8 @@ proc gdc_target_compile { source dest type options } { global GDC_UNDER_TEST if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { - lappend options "libs=${gluefile}" - lappend options "ldflags=${wrap_flags}" + lappend options "libs=${gluefile}" + lappend options "ldflags=${wrap_flags}" } lappend options "timeout=[timeout_value]" diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog index 22766a2d52a..c2bfe5034b3 100644 --- a/libphobos/ChangeLog +++ b/libphobos/ChangeLog @@ -1,3 +1,11 @@ +2019-02-18 Rainer Orth + + * testsuite/lib/libphobos-dg.exp: Tabify. + * testsuite/lib/libphobos.exp: Likewise. + * testsuite/libphobos.cycles/cycles.exp: Likewise. + * testsuite/libphobos.shared/shared.exp: Likewise. + * testsuite/libphobos.unittests/unittests.exp: Likewise. + 2019-02-14 Maya Rashish * configure.tgt: Add netbsd/x86 as supported target. diff --git a/libphobos/testsuite/lib/libphobos-dg.exp b/libphobos/testsuite/lib/libphobos-dg.exp index b796011394d..5f33e4de710 100644 --- a/libphobos/testsuite/lib/libphobos-dg.exp +++ b/libphobos/testsuite/lib/libphobos-dg.exp @@ -42,11 +42,11 @@ if { [info procs libphobos_load] != [list] \ rename libphobos_load prev_libphobos_load proc libphobos_load { program args } { - global libphobos_run_args - if { $libphobos_run_args != "" } { - set args [concat "{$libphobos_run_args}"] - } - set result [eval [list prev_libphobos_load $program] $args ] - return $result + global libphobos_run_args + if { $libphobos_run_args != "" } { + set args [concat "{$libphobos_run_args}"] + } + set result [eval [list prev_libphobos_load $program] $args ] + return $result } } diff --git a/libphobos/testsuite/lib/libphobos.exp b/libphobos/testsuite/lib/libphobos.exp index 3985b4497df..1944c7d546c 100644 --- a/libphobos/testsuite/lib/libphobos.exp +++ b/libphobos/testsuite/lib/libphobos.exp @@ -48,30 +48,30 @@ proc libphobos-dg-test { prog do_what extra_tool_flags } { # Set up the compiler flags, based on what we're going to do. switch $do_what { - "run" { - set compile_type "executable" - # FIXME: "./" is to cope with "." not being in $PATH. - # Should this be handled elsewhere? - # YES. - set output_file "./[file rootname [file tail $prog]].exe" - # This is the only place where we care if an executable was - # created or not. If it was, dg.exp will try to run it. - catch { remote_file build delete $output_file } - } - "link" { - set compile_type "executable" - set output_file "./[file rootname [file tail $prog]].exe" - } - default { - perror "$do_what: not a valid dg-do keyword" - return "" - } + "run" { + set compile_type "executable" + # FIXME: "./" is to cope with "." not being in $PATH. + # Should this be handled elsewhere? + # YES. + set output_file "./[file rootname [file tail $prog]].exe" + # This is the only place where we care if an executable was + # created or not. If it was, dg.exp will try to run it. + catch { remote_file build delete $output_file } + } + "link" { + set compile_type "executable" + set output_file "./[file rootname [file tail $prog]].exe" + } + default { + perror "$do_what: not a valid dg-do keyword" + return "" + } } set select_compile "libphobos_target_compile" set options "" if { $extra_tool_flags != "" } { - lappend options "additional_flags=$extra_tool_flags" + lappend options "additional_flags=$extra_tool_flags" } set comp_output [$select_compile "$prog" "$output_file" "$compile_type" $options] @@ -95,15 +95,15 @@ proc libphobos_init { args } { # If a testcase doesn't have special options, use these. if ![info exists DEFAULT_DFLAGS] then { - set DEFAULT_DFLAGS "" + set DEFAULT_DFLAGS "" } # By default, we assume we want to run program images. global dg-do-what-default if [isnative] { - set dg-do-what-default "run" + set dg-do-what-default "run" } else { - set dg-do-what-default "link" + set dg-do-what-default "link" } # What arguments to pass to run program images. @@ -121,15 +121,15 @@ proc libphobos_init { args } { set gdcldflags "" if { [file exists $flags_file] } { - set gdc [exec sh $flags_file --gdc] - set gdcflags [exec sh $flags_file --gdcflags] - set gdcpaths [exec sh $flags_file --gdcpaths] - set gdcldflags [exec sh $flags_file --gdcldflags] + set gdc [exec sh $flags_file --gdc] + set gdcflags [exec sh $flags_file --gdcflags] + set gdcpaths [exec sh $flags_file --gdcpaths] + set gdcldflags [exec sh $flags_file --gdcldflags] } set exeext "" if [info exists env(EXEEXT)] { - set exeext $env(EXEEXT) + set exeext $env(EXEEXT) } # Compute what needs to be added to the existing LD_LIBRARY_PATH. @@ -137,16 +137,16 @@ proc libphobos_init { args } { set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] if {$gccdir != ""} { - set gccdir [file dirname $gccdir] - append ld_library_path ":${gccdir}" + set gccdir [file dirname $gccdir] + append ld_library_path ":${gccdir}" } if { [file exists "${blddir}/libdruntime/.libs/libgdruntime.${shlib_ext}"] } { - append ld_library_path ":${blddir}/libdruntime/.libs" + append ld_library_path ":${blddir}/libdruntime/.libs" } if { [file exists "${blddir}/src/.libs/libgphobos.${shlib_ext}"] } { - append ld_library_path ":${blddir}/src/.libs" + append ld_library_path ":${blddir}/src/.libs" } set_ld_library_path_env_vars @@ -166,21 +166,21 @@ proc libphobos_target_compile { source dest type options } { lappend options "additional_flags=-fno-diagnostics-show-caret -fdiagnostics-color=never" if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { - lappend options "libs=${gluefile}" - lappend options "ldflags=${wrap_flags}" + lappend options "libs=${gluefile}" + lappend options "ldflags=${wrap_flags}" } # Flag setting based on type argument. if { $type == "executable" } { - # Link the support objects into executables. - lappend options "additional_flags=$gdcldflags" + # Link the support objects into executables. + lappend options "additional_flags=$gdcldflags" } # Set the compiler, only add D flags and paths if building D sources. set gdc_final $gdc if [regexp ".*\.d\$" $source] { - set gdc_final [concat $gdc_final $gdcflags] - set gdc_final [concat $gdc_final $gdcpaths] + set gdc_final [concat $gdc_final $gdcflags] + set gdc_final [concat $gdc_final $gdcpaths] } lappend options "compiler=$gdc_final" diff --git a/libphobos/testsuite/libphobos.cycles/cycles.exp b/libphobos/testsuite/libphobos.cycles/cycles.exp index 0bc99cad3a0..5ea2fe4879e 100644 --- a/libphobos/testsuite/libphobos.cycles/cycles.exp +++ b/libphobos/testsuite/libphobos.cycles/cycles.exp @@ -20,7 +20,7 @@ set dg-output-text [list] # Arguments to pass to the test program, expected output, and return code. set cycle_test_list [list \ - { ignore "" 0 } \ + { ignore "" 0 } \ { abort "object.Error@.*: Cyclic dependency between module mod. and mod." 1 } \ { print "Cyclic dependency between module mod. and mod." 0 } \ { deprecate "Deprecation 16211 warning:" 0 } \ @@ -41,8 +41,8 @@ foreach cycle_test $cycle_test_list { set expected_fail [lindex $cycle_test 2] foreach test $tests { - set shouldfail $expected_fail - dg-test $test "" $DEFAULT_DFLAGS + set shouldfail $expected_fail + dg-test $test "" $DEFAULT_DFLAGS } set shouldfail 0 diff --git a/libphobos/testsuite/libphobos.shared/shared.exp b/libphobos/testsuite/libphobos.shared/shared.exp index ecbf9284510..7765634090c 100644 --- a/libphobos/testsuite/libphobos.shared/shared.exp +++ b/libphobos/testsuite/libphobos.shared/shared.exp @@ -39,9 +39,9 @@ proc shared_library { source destfile options } { set comp_output [libphobos_target_compile "$source" "$destfile" "executable" $options] if ![ string match "" $comp_output ] { - fail "libphobos.shared/[file tail $source]" - verbose -log $comp_output - return 1 + fail "libphobos.shared/[file tail $source]" + verbose -log $comp_output + return 1 } lappend all_libraries $destfile @@ -52,7 +52,7 @@ shared_library "$srcdir/$subdir/lib.d" "lib.so" "" # liblinkdep.so shared_library "$srcdir/$subdir/liblinkdep.d" "liblinkdep.so" \ - [list "additional_flags=-I$srcdir/$subdir lib.so"] + [list "additional_flags=-I$srcdir/$subdir lib.so"] # libloaddep.so shared_library "$srcdir/$subdir/libloaddep.d" "libloaddep.so" "" @@ -69,14 +69,14 @@ dg-init # Main loop. dg-test "$srcdir/$subdir/link.d" "-I$srcdir/$subdir lib.so -shared-libphobos" \ - "$DEFAULT_DFLAGS" + "$DEFAULT_DFLAGS" dg-test "$srcdir/$subdir/link_linkdep.d" \ - "-I$srcdir/$subdir liblinkdep.so lib.so -shared-libphobos" \ - "$DEFAULT_DFLAGS" + "-I$srcdir/$subdir liblinkdep.so lib.so -shared-libphobos" \ + "$DEFAULT_DFLAGS" dg-test "$srcdir/$subdir/link_loaddep.d" \ - "-I$srcdir/$subdir libloaddep.so -shared-libphobos" "$DEFAULT_DFLAGS" + "-I$srcdir/$subdir libloaddep.so -shared-libphobos" "$DEFAULT_DFLAGS" # dlopen() tests. if [is-effective-target dlopen] { diff --git a/libphobos/testsuite/libphobos.unittests/unittests.exp b/libphobos/testsuite/libphobos.unittests/unittests.exp index 43797144f0a..b734a9b98d8 100644 --- a/libphobos/testsuite/libphobos.unittests/unittests.exp +++ b/libphobos/testsuite/libphobos.unittests/unittests.exp @@ -29,15 +29,15 @@ proc unittest_list_modules { prog } { # Runs all unittests for each module compiled into the test program. proc unittest_run_tests { name prog } { foreach module [unittest_list_modules $prog] { - set result [libphobos_load "$prog" "$module" ""] - set status [lindex $result 0] - $status "libphobos.unittests/$name/$module" + set result [libphobos_load "$prog" "$module" ""] + set status [lindex $result 0] + $status "libphobos.unittests/$name/$module" } } proc unittester { name prog } { if [file exists $prog] { - unittest_run_tests $name $prog + unittest_run_tests $name $prog } }