4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-01-31 19:40:33 +08:00
Jon Turney 1a9f95d894
Cygwin: Run testsuite against the just-built DLL
Since 4e7817498efc, we're just running the tests against the installed
DLL.  We're arranging to put the build directory on the path, but since
it doesn't contain cygwin1.dll (since it's built with a different name
and renamed on installation), that doesn't have any effect.

Arrange to place the just-built DLL into a directory which the testsuite
can place on it's path (while running the test, but not while compiling
it).

Also fix any remaining references to cygwin0.dll in testsuite,
documentation and comments.

Fixes: 4e7817498efc ("Cygwin: Makefile: Drop all the "test dll" considerations")
2023-01-10 10:27:13 +00:00

98 lines
2.3 KiB
Plaintext

source "site.exp"
source "$srcdir/winsup.api/known_bugs.tcl"
if { ! [isnative] } {
verbose "skipping winsup.api because it's not native"
return
}
set rv ""
set ltp_includes "-I$ltp_includes"
set ltp_libs "$ltp_libs"
set add_includes $ltp_includes
set add_libs $ltp_libs
set orig_path "$env(PATH)"
set test_filter ""
if { [info exists env(CYGWIN_TESTSUITE_TESTS)] } {
set test_filter "$env(CYGWIN_TESTSUITE_TESTS)"
}
proc ws_spawn {cmd} {
global rv
verbose "running $cmd\n"
try {
set msg [exec -ignorestderr {*}$cmd "2>@1"]
set rv 0
} trap CHILDSTATUS {results options} {
verbose "returned $::errorCode\n"
set msg $results
set rv 1
}
verbose -log "$msg"
return $rv
}
verbose "Filter: $test_filter"
foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc,c}]] {
if { $test_filter != "" && ! [regexp $test_filter $src] } {
verbose -log "Skipping $src"
continue
}
regsub "^$srcdir/$subdir/" $src "" testcase
regsub ".c$" $testcase "" base
regsub ".*/" $base "" basename
regsub "/" $base "-" base
if { [lsearch -exact $xfail_list $basename] >= 0 } {
set xfail_expected 1
setup_xfail "*-*-*"
} else {
set xfail_expected 0
clear_xfail
}
if [ file exists "$srcdir/$subdir/$basename.exp" ] then {
source "$srcdir/$subdir/$basename.exp"
} else {
ws_spawn "$CC -nodefaultlibs -mwin32 $CFLAGS $src $add_includes $add_libs $libdir/binmode.o -lgcc $libdir/libcygwin.a -lkernel32 -luser32 -o $base.exe"
if { $rv } {
fail "$testcase (compile)"
} else {
if { $verbose } {
set redirect_output "./$base.log"
} else {
set redirect_output /dev/null
}
file mkdir $tmpdir/$base
set env(PATH) "$runtime_root:$env(PATH)"
ws_spawn "$cygrun ./$base.exe $testdll_tmpdir/$base > $redirect_output"
file delete -force $tmpdir/$base
set env(PATH) "$orig_path"
if { $rv } {
fail "$testcase (execute)"
if { $xfail_expected } {
catch { file delete "$base.exe" } err
if { $err != "" } {
note "error deleting $base.exe: $err"
}
}
} else {
pass "$testcase"
if { ! $xfail_expected } {
catch { file delete "$base.exe" } err
if { $err != "" } {
note "error deleting $base.exe: $err"
}
}
}
}
}
}