Index: Externals/Eagle/bin/Eagle.dll ================================================================== --- Externals/Eagle/bin/Eagle.dll +++ Externals/Eagle/bin/Eagle.dll cannot compute difference between binary files Index: Externals/Eagle/bin/EagleShell.exe ================================================================== --- Externals/Eagle/bin/EagleShell.exe +++ Externals/Eagle/bin/EagleShell.exe cannot compute difference between binary files Index: Externals/Eagle/lib/Eagle1.0/init.eagle ================================================================== --- Externals/Eagle/lib/Eagle1.0/init.eagle +++ Externals/Eagle/lib/Eagle1.0/init.eagle @@ -1263,24 +1263,24 @@ } elseif {$compare < 0} then { # # NOTE: The patch level from the line is less, we are more # up-to-date than the latest version? # - return [list [appendArgs "your build " $enginePatchLevel \ + return [list [appendArgs "running build " $enginePatchLevel \ " is newer than the latest build " $patchLevel]] } else { # # NOTE: The patch levels are equal, we are up-to-date. # - return [list "you have the latest build"] + return [list "running build is the latest"] } } } } } - return [list "cannot determine if your build is the latest"] + return [list "cannot determine if running build is the latest"] } proc getReturnType { object member } { if {[string length $object] == 0 || [string length $member] == 0} then { return "" Index: Externals/Eagle/lib/Eagle1.0/test.eagle ================================================================== --- Externals/Eagle/lib/Eagle1.0/test.eagle +++ Externals/Eagle/lib/Eagle1.0/test.eagle @@ -56,11 +56,11 @@ if {$wow64 && [info exists ::tcl_platform(machine)] && \ $::tcl_platform(machine) eq "amd64"} then { # # NOTE: Return the WoW64 registry key name because we are running on a # 64-bit operating system and the caller specifically requested - # the Win32 registry key name. + # the WoW64 registry key name. # return Software\\Wow6432Node } else { # # NOTE: Return the native registry key name because we are either not @@ -263,11 +263,11 @@ if {[string length $value] > 0} then { return [file normalize $value] } } - if {[isEagle]} then { + if {[isEagle] && [llength [info commands object]] > 0} then { # # NOTE: Eagle fallback, use whatever is reported by the # underlying framework and/or operating system. # return [file normalize [object invoke System.IO.Path GetTempPath]] @@ -848,11 +848,11 @@ return $result } proc formatDecimal { value {places 4} } { - if {[isEagle]} then { + if {[isEagle] && [llength [info commands object]] > 0} then { # # HACK: This works; however, in order to do this kind of thing cleanly, # we really need the Tcl [format] command. # set result [object invoke String Format [appendArgs "{0:0." \ @@ -1224,10 +1224,34 @@ namespace eval :: $command } } } + + proc machineToPlatform { machine {architecture false} } { + # + # NOTE: Cannot use "-nocase" option here because Tcl 8.4 does not + # support it (i.e. because it is pre-TIP #241). + # + switch -exact -- [string tolower $machine] { + amd64 { + return x64 + } + intel { + if {!$architecture && \ + [info exists ::tcl_platform(platform)] && \ + $::tcl_platform(platform) eq "windows"} then { + return Win32 + } else { + return x86 + } + } + default { + return unknown + } + } + } if {[isEagle]} then { ########################################################################### ############################ BEGIN Eagle ONLY ############################# ########################################################################### @@ -1540,28 +1564,10 @@ return [testExecTclScript { puts -nonewline stdout [package require Tk]; exit }] } - proc machineToPlatform { machine } { - switch -exact -nocase -- $machine { - amd64 { - return x64 - } - intel { - if {$::tcl_platform(platform) eq "windows"} then { - return Win32 - } else { - return x86 - } - } - default { - return unknown - } - } - } - proc getGarudaDll {} { # # NOTE: Get the Garuda DLL of the same platform (i.e. machine type) # as the native Tcl shell. # @@ -1655,17 +1661,46 @@ set ::test_path [file join [file normalize [file dirname \ [file dirname [info library]]]] Library Tests] if {![file exists $::test_path] || \ ![file isdirectory $::test_path]} then { + # + # NOTE: Try the source release directory structure again; this time, + # assume only the embedded script library was used. + # + set ::test_path [file join [info base] Library Tests] + } + + if {![file exists $::test_path] || \ + ![file isdirectory $::test_path]} then { # # NOTE: Try for the test package directory. # set ::test_path [file join [file normalize [file dirname \ [file dirname [info script]]]] [appendArgs Test \ [info engine Version]]] } + + if {![file exists $::test_path] || \ + ![file isdirectory $::test_path]} then { + # + # NOTE: Try for the test package directory again; this time, use the + # base path and assume the source release directory structure. + # + set ::test_path [file join [info base] lib [appendArgs Test \ + [info engine Version]]] + } + + if {![file exists $::test_path] || \ + ![file isdirectory $::test_path]} then { + # + # NOTE: Try for the test package directory again; this time, use the + # base path. + # + set ::test_path [file join [info base] [appendArgs Test \ + [info engine Version]]] + } if {![file exists $::test_path] || \ ![file isdirectory $::test_path]} then { # # NOTE: This must be a binary release, no "Library" directory then. @@ -1674,10 +1709,19 @@ # match the casing used in "update.bat". # set ::test_path [file join [file normalize [file dirname \ [file dirname [info library]]]] Tests] } + + if {![file exists $::test_path] || \ + ![file isdirectory $::test_path]} then { + # + # NOTE: Fallback to using the base directory and checking for a + # "Tests" directory beneath it. + # + set ::test_path [file join [info base] Tests] + } } # # NOTE: Fake having the tcltest package unless we are prevented. # @@ -1762,11 +1806,11 @@ processTestArguments getTemporaryPath getTestLog getTestLogId getFiles \ getConstraints getTestFiles getTestRunId execTestShell runTestPrologue \ runTestEpilogue runTest runAllTests fixConstraints sourceIfValid \ isExitOnComplete getPassPercentage getSkipPercentage testExec tlog \ returnInfoScript tputs formatDecimal formatList configureTcltest \ - tsource testShim] false false + machineToPlatform tsource testShim] false false ########################################################################### ############################## END Tcl ONLY ############################### ########################################################################### } Index: Externals/Eagle/lib/Test1.0/constraints.eagle ================================================================== --- Externals/Eagle/lib/Test1.0/constraints.eagle +++ Externals/Eagle/lib/Test1.0/constraints.eagle @@ -21,11 +21,19 @@ # namespace eval ::Eagle { proc checkForPlatform { channel } { tputs $channel "---- checking for platform... " - addConstraint $::tcl_platform(platform) + if {[info exists ::tcl_platform(platform)]} then { + addConstraint $::tcl_platform(platform) + + tputs $channel [appendArgs $::tcl_platform(platform) \n] + } else { + tputs $channel [appendArgs unknown \n] + } + + ########################################################################### if {![isEagle]} then { # # BUGFIX: We do not want to skip any Mono bugs in Tcl. # Also, fake the culture. @@ -34,22 +42,53 @@ # # NOTE: Add the necessary constraints for each version # of Mono we know about. # - foreach version [list 20 22 24 26 28 210 30] { + foreach version [list 20 22 24 26 28 210 212 30] { addConstraint [appendArgs monoToDo $version] addConstraint [appendArgs monoBug $version] addConstraint [appendArgs monoCrash $version] } foreach constraint $constraints { addConstraint $constraint; # running in Tcl. } } + } + + proc checkForWindowsCommandProcessor { channel pattern {constraint ""} } { + tputs $channel "---- checking for Windows Command Processor... " - tputs $channel [appendArgs $::tcl_platform(platform) \n] + if {[info exists ::tcl_platform(platform)] && \ + $::tcl_platform(platform) eq "windows"} then { + # + # NOTE: Grab the "ComSpec" from the Windows environment and make sure it + # matches the file pattern supplied by the caller (e.g. "cmd.exe"). + # + if {[info exists ::env(ComSpec)] && \ + [string match -nocase $pattern [file tail $::env(ComSpec)]]} then { + # + # NOTE: We are running with a matching command processor. + # + if {[string length $constraint] > 0} then { + addConstraint [appendArgs comSpec_ $constraint] + } else { + addConstraint [appendArgs comSpec_ \ + [string map [list * _ - _ ? _ \[ _ \\ _ \] _] $pattern]] + } + + tputs $channel [appendArgs "yes (\"" $::env(ComSpec) "\")\n"] + + # + # NOTE: We are done here, return now. + # + return + } + } + + tputs $channel no\n } proc checkForEagle { channel } { tputs $channel "---- checking for Eagle... " @@ -383,11 +422,12 @@ return } else { # # NOTE: Use the appropriate environment variable for the platform. # - if {$::tcl_platform(platform) eq "windows"} then { + if {[info exists ::tcl_platform(platform)] && \ + $::tcl_platform(platform) eq "windows"} then { set pathName PATH } else { # # HACK: For shared libraries, use the LD_LIBRARY_PATH. # @@ -410,11 +450,12 @@ # # NOTE: Use the appropriate path separator for the platform. # if {[info exists ::tcl_platform(pathSeparator)]} then { set separator $::tcl_platform(pathSeparator) - } elseif {$::tcl_platform(platform) eq "windows"} then { + } elseif {[info exists ::tcl_platform(platform)] && \ + $::tcl_platform(platform) eq "windows"} then { set separator \; } else { set separator : } @@ -772,13 +813,13 @@ } proc checkForStrongName { channel } { tputs $channel "---- checking for strong name... " - set strongName [object invoke Interpreter.GetActive GetStrongName] - - if {[string length $strongName] > 0} then { + if {[catch {object invoke Interpreter.GetActive GetStrongName} \ + strongName] == 0 && \ + [string length $strongName] > 0} then { # # NOTE: Yes, it appears that the core library was signed with a # strong name key. # addConstraint strongName @@ -790,13 +831,13 @@ } proc checkForCertificate { channel } { tputs $channel "---- checking for certificate... " - set certificate [object invoke Interpreter.GetActive GetCertificate] - - if {[string length $certificate] > 0} then { + if {[catch {object invoke Interpreter.GetActive GetCertificate} \ + certificate] == 0 && \ + [string length $certificate] > 0} then { # # NOTE: Yes, it appears that the core library was signed with a # code-signing certificate. # addConstraint certificate @@ -835,13 +876,13 @@ } proc checkForPrimaryThread { channel } { tputs $channel "---- checking for primary thread... " - set threadId [object invoke Interpreter.GetActive ThreadId] - - if {[info tid] == $threadId} then { + if {[catch {object invoke Interpreter.GetActive ThreadId} \ + threadId] == 0 && \ + [info tid] == $threadId} then { addConstraint primaryThread tputs $channel [appendArgs "yes (" $threadId ")\n"] } else { tputs $channel [appendArgs "no (" $threadId ")\n"] @@ -849,13 +890,12 @@ } proc checkForDefaultAppDomain { channel } { tputs $channel "---- checking for default application domain... " - set appDomain [object invoke AppDomain CurrentDomain] - - if {[string length $appDomain] > 0} then { + if {[catch {object invoke AppDomain CurrentDomain} appDomain] == 0 && \ + [string length $appDomain] > 0} then { if {[object invoke $appDomain IsDefaultAppDomain]} then { addConstraint defaultAppDomain tputs $channel [appendArgs "yes (" [object invoke $appDomain Id] \ ")\n"] @@ -1006,10 +1046,17 @@ # NOTE: Check for any Mono version higher than 2.10. # if {$majorVersion > 2 || $minorVersion > 10} then { lappend monoVersions 210 } + + # + # NOTE: Check for any Mono version higher than 2.12. + # + if {$majorVersion > 2 || $minorVersion > 12} then { + lappend monoVersions 212 + } } # # NOTE: Check for any Mono version 3.x or higher. # @@ -1044,11 +1091,11 @@ # # NOTE: We do not want to skip any Mono bugs on .NET. Add the # necessary constraints for each version of Mono we know # about. # - foreach monoVersion [list 20 22 24 26 28 210 30] { + foreach monoVersion [list 20 22 24 26 28 210 212 30] { addConstraint [appendArgs monoToDo $monoVersion] addConstraint [appendArgs monoBug $monoVersion] addConstraint [appendArgs monoCrash $monoVersion] } } @@ -1125,17 +1172,15 @@ tputs $channel "---- checking for thread culture... " # # NOTE: Grab the current thread culture. # - set culture [object invoke System.Threading.Thread.CurrentThread \ - CurrentCulture] - - set culture [object invoke Eagle._Components.Private.FormatOps \ - CultureName $culture false] - - if {[string length $culture] > 0} then { + if {[catch {object invoke System.Threading.Thread.CurrentThread \ + CurrentCulture} culture] == 0 && \ + [catch {object invoke Eagle._Components.Private.FormatOps \ + CultureName $culture false} culture] == 0 && \ + [string length $culture] > 0} then { # # NOTE: The culture information is present, use it and show it. # addConstraint [appendArgs threadCulture. [string map [list - _] \ $culture]] @@ -1147,11 +1192,12 @@ } proc checkForQuiet { channel } { tputs $channel "---- checking for quiet... " - if {[object invoke Interpreter.GetActive Quiet]} then { + if {[catch {object invoke Interpreter.GetActive Quiet} quiet] == 0 && \ + $quiet} then { # # NOTE: Yes, quiet mode is enabled. # addConstraint quiet @@ -1204,11 +1250,12 @@ # # NOTE: As far as we know, dynamic loading always works on Windows. # On some Unix systems, dlopen does not work (e.g. because # Mono is statically linked, etc). # - if {$::tcl_platform(platform) eq "windows" || \ + if {([info exists ::tcl_platform(platform)] && \ + $::tcl_platform(platform) eq "windows") || \ ([llength [info commands library]] > 0 && \ [catch {library test}] == 0)} then { # # NOTE: Yes, it appears that it is available. # @@ -1231,11 +1278,12 @@ # This appears to be very necessary on Mono because it # crashes after repeated failed attempts to create a # Windows Form when the X server is unavailable (e.g. on # OpenBSD). # - if {$::tcl_platform(platform) eq "windows" || \ + if {([info exists ::tcl_platform(platform)] && \ + $::tcl_platform(platform) eq "windows") || \ [info exists ::env(DISPLAY)]} then { # # NOTE: Is the Windows Forms assembly available? # if {[catch {object resolve System.Windows.Forms} assembly] == 0} then { @@ -1345,11 +1393,12 @@ proc checkForObjectMember { channel object member {constraint ""} } { tputs $channel [appendArgs "---- checking for object member \"" \ $object . $member "\"... "] if {[catch {object members -flags +NonPublic -pattern $member $object} \ - members] == 0 && [llength $members] > 0} then { + members] == 0 && \ + [llength $members] > 0} then { # # NOTE: Yes, it appears that it is available. # if {[string length $constraint] > 0} then { addConstraint [appendArgs member_ $constraint] @@ -1499,11 +1548,12 @@ # # NOTE: Platform must be Windows for this constraint to # even be checked (i.e. we require the registry). # - if {$::tcl_platform(platform) eq "windows"} then { + if {[info exists ::tcl_platform(platform)] && \ + $::tcl_platform(platform) eq "windows"} then { # # NOTE: Indicate that we have not found it yet. # set directory "" @@ -1580,31 +1630,25 @@ [getSoftwareRegistryKey true] {\Microsoft\Windows Installer XML}] # # NOTE: The versions of WiX that we support. # - set versions [list 3.5 3.0] + set versions [list 3.6 3.5 3.0] # # NOTE: Check each version, stopping when one is found. # foreach version $versions { # - # NOTE: Attempt to fetch the WiX install directory - # value from the registry, removing the - # trailing backslash, if any. - # - set directory [file normalize [string trimright [object invoke \ - Microsoft.Win32.Registry GetValue \ - [appendArgs $key \\ $version] InstallRoot \ - null] \\]] - - # - # NOTE: Does the directory name look valid and - # does it actually exist? - # - if {[string length $directory] > 0 && \ + # NOTE: Attempt to fetch the WiX install directory value from the + # registry, removing the trailing backslash, if any. Does + # the directory name look valid and does it actually exist? + # + if {[catch {file normalize [string trimright [object invoke \ + Microsoft.Win32.Registry GetValue [appendArgs $key \\ \ + $version] InstallRoot null] \\]} directory] == 0 && \ + [string length $directory] > 0 && \ [file isdirectory $directory]} then { # # NOTE: The file name of the primary WiX assembly. # set fileName [file join $directory wix.dll] @@ -1678,11 +1722,12 @@ # NOTE: Platform must be Windows for this constraint to even be # checked (i.e. we require the registry). # set visualStudioVersions [list] - if {$::tcl_platform(platform) eq "windows"} then { + if {[info exists ::tcl_platform(platform)] && \ + $::tcl_platform(platform) eq "windows"} then { # # NOTE: Registry hive where Visual Studio install information is # stored. Make sure to look in the WoW64 registry because # Visual Studio is currently always a 32-bit application. # @@ -1699,21 +1744,18 @@ # foreach version $versions { # # NOTE: Attempt to fetch the Visual Studio install directory # value from the registry, removing the trailing backslash, - # if any. - # - set fileName [file normalize [file join [string trimright [object \ - invoke Microsoft.Win32.Registry GetValue [appendArgs $key \\ \ - [lindex $version 0]] InstallDir null] \\] msenv.dll]] - - # - # NOTE: Does the directory name look valid and does it actually - # exist? - # - if {[string length $fileName] > 0 && [file isfile $fileName]} then { + # if any. Does the directory name look valid and does it + # actually exist? + # + if {[catch {file normalize [file join [string trimright [object \ + invoke Microsoft.Win32.Registry GetValue [appendArgs $key \\ \ + [lindex $version 0]] InstallDir null] \\] msenv.dll]} \ + fileName] == 0 && \ + [string length $fileName] > 0 && [file isfile $fileName]} then { # # NOTE: Yes, it appears that it is available. # addConstraint [appendArgs visualStudio [lindex $version 1]] @@ -1746,11 +1788,12 @@ tputs $channel "---- checking for managed debugger... " # # NOTE: Is the managed debugger attached? # - if {[object invoke System.Diagnostics.Debugger IsAttached]} then { + if {[catch {object invoke System.Diagnostics.Debugger IsAttached} \ + attached] == 0 && $attached} then { # # NOTE: Yes, it appears that it is attached. # addConstraint managedDebugger @@ -1852,11 +1895,11 @@ checkForEagle checkForGaruda checkForShell checkForDebug checkForTk \ checkForVersion checkForCommand checkForFile checkForNativeCode \ checkForTip127 checkForTip194 checkForTip241 checkForTip285 \ checkForPerformance checkForTiming checkForInteractive checkForSymbols \ checkForLogFile checkForNetwork checkForCompileOption \ - checkForUserInteraction] false false + checkForWindowsCommandProcessor checkForUserInteraction] false false ########################################################################### ############################## END Tcl ONLY ############################### ########################################################################### } Index: Externals/Eagle/lib/Test1.0/epilogue.eagle ================================================================== --- Externals/Eagle/lib/Test1.0/epilogue.eagle +++ Externals/Eagle/lib/Test1.0/epilogue.eagle @@ -264,18 +264,33 @@ # if {![info exists no(postTest)]} then { # # NOTE: Evaluate the specified post-test script now, if any. # - if {[info exists test_flags(-postTest)] && \ - [string length $test_flags(-postTest)] > 0} then { + if {[info exists test_script(post)] && \ + [string length $test_script(post)] > 0} then { # # TODO: Perhaps use [uplevel] here instead of [eval]. For now, it does # not matter since we enforce this file being evaluated at the # top-level. # - eval $test_flags(-postTest) + if {[catch $test_script(post) test_script(post,result)]} then { + # + # NOTE: Make 100% sure, even in "quiet" mode, that this script error + # gets into the test log file. + # + tputs $test_channel [appendArgs "---- post-test script error: " \ + $test_script(post,result) \n] + + # + # NOTE: The post-test script failed in some way. This is considered + # to be an overall failure of the test suite; therefore, raise + # the error now that we are sure it has been recorded in the + # test log file. + # + error $test_script(post,result) + } } } # # NOTE: Do we need to exit now? @@ -291,12 +306,12 @@ } else { # # NOTE: For Eagle, even when not exiting, we still set the ExitCode # property of the interpreter. # - if {[isEagle]} then { + if {[isEagle] && [llength [info commands object]] > 0} then { object invoke -alias Interpreter.GetActive ExitCode $exitCode } unset exitCode } } Index: Externals/Eagle/lib/Test1.0/prologue.eagle ================================================================== --- Externals/Eagle/lib/Test1.0/prologue.eagle +++ Externals/Eagle/lib/Test1.0/prologue.eagle @@ -275,10 +275,26 @@ # NOTE: Set the test exit-on-complete flag to the one provided by the # command line. # set test_exit_on_complete $test_flags(-exitOnComplete) } + + if {[info exists test_flags(-preTest)] && \ + [string length $test_flags(-preTest)] > 0} then { + # + # NOTE: Set the pre-test script to the one provided by the command line. + # + set test_script(pre) $test_flags(-preTest) + } + + if {[info exists test_flags(-postTest)] && \ + [string length $test_flags(-postTest)] > 0} then { + # + # NOTE: Set the pre-test script to the one provided by the command line. + # + set test_script(post) $test_flags(-postTest) + } } # # NOTE: Set the default test configuration (i.e. Debug or Release), if # necessary. @@ -310,25 +326,54 @@ set test_log [file join [getTemporaryPath] [appendArgs [file tail [info \ nameofexecutable]] [getTestLogId] .test. [pid] .log]] } } + # + # NOTE: Show both the pre-test and post-test scripts now, prior to actually + # evaluating either of them (even if their use has been disabled). + # + tputs $test_channel [appendArgs "---- pre-test script: " \ + [expr {[info exists test_script(pre)] && \ + [string length $test_script(pre)] > 0 ? \ + [appendArgs \" $test_script(pre) \"] : ""}] \n] + + tputs $test_channel [appendArgs "---- post-test script: " \ + [expr {[info exists test_script(post)] && \ + [string length $test_script(post)] > 0 ? \ + [appendArgs \" $test_script(post) \"] : ""}] \n] + # # NOTE: Are we being prevented from evaluating the "pre-test" script? # if {![info exists no(preTest)]} then { # # NOTE: Evaluate the specified pre-test script now, if any. # - if {[info exists test_flags(-preTest)] && \ - [string length $test_flags(-preTest)] > 0} then { + if {[info exists test_script(pre)] && \ + [string length $test_script(pre)] > 0} then { # # TODO: Perhaps use [uplevel] here instead of [eval]. For now, it does # not matter since we enforce this file being evaluated at the # top-level. # - eval $test_flags(-preTest) + if {[catch $test_script(pre) test_script(pre,result)]} then { + # + # NOTE: Make 100% sure, even in "quiet" mode, that this script error + # gets into the test log file. + # + tputs $test_channel [appendArgs "---- pre-test script error: " \ + $test_script(pre,result) \n] + + # + # NOTE: The pre-test script failed in some way. This is considered + # to be an overall failure of the test suite; therefore, raise + # the error now that we are sure it has been recorded in the + # test log file. + # + error $test_script(pre,result) + } } } # # NOTE: Check for and process any custom test prologue script that may be set @@ -933,10 +978,22 @@ # # NOTE: For tests "tclLoad-1.5" and "tclLoad-1.6". # checkForCompileOption $test_channel TCL_THREADS } + + # + # NOTE: Has runtime license checking support been disabled (at + # compile-time). This only applies to third-party plugins + # and applications. + # + if {![info exists no(compileLicensing)]} then { + # + # NOTE: This is not currently used by any tests. + # + checkForCompileOption $test_channel LICENSING + } } # # NOTE: Has dynamic loading testing support been disabled? # @@ -1641,14 +1698,41 @@ if {![info exists no(test.wxs)]} then { checkForFile $test_channel [file join $base_path Installer Tests test.wxs] } # - # NOTE: For test "sql-1.2". + # NOTE: For tests "sql-1.2", "sql-1.4", "sql-1.5", "sql-1.6", "sql-1.7", + # "sql-1.8", and "sql-1.9". # if {![info exists no(sqlite3.dll)]} then { checkForFile $test_channel [file join $bin_path sqlite3.dll] + + # + # NOTE: Did we manage to find the native SQLite library? If not, do we + # at least know the machine type? + # + if {![haveConstraint file_sqlite3.dll] && \ + [info exists tcl_platform(machine)]} then { + # + # NOTE: Ok, now try to check for the machine specific native SQLite + # library. + # + checkForFile $test_channel [file join $bin_path [machineToPlatform \ + $tcl_platform(machine) true] sqlite3.dll] + + # + # NOTE: Did we manage to find the native SQLite library yet? + # + if {![haveConstraint file_sqlite3.dll]} then { + # + # NOTE: Ok, now try to check for the platform specific native SQLite + # library. + # + checkForFile $test_channel [file join $bin_path [machineToPlatform \ + $tcl_platform(machine) false] sqlite3.dll] + } + } } if {![info exists no(System.Data.SQLite.dll)]} then { checkForFile $test_channel [file join $bin_path System.Data.SQLite.dll] } @@ -1663,10 +1747,14 @@ # explicitly disabled. # if {![info exists no(platform)]} then { checkForPlatform $test_channel } + + if {![info exists no(windowsCommandProcessor)]} then { + checkForWindowsCommandProcessor $test_channel cmd.exe + } if {![info exists no(version)]} then { checkForVersion $test_channel } Index: Tests/tkt-ac47dd230a.eagle ================================================================== --- Tests/tkt-ac47dd230a.eagle +++ Tests/tkt-ac47dd230a.eagle @@ -25,11 +25,11 @@ set appDomain($i) [object invoke AppDomain CreateDomain \ tkt-ac47dd230a-1.1.$i] set result null set interpreterHelper($i) [object invoke -alias InterpreterHelper \ - Create $appDomain($i) null Default null null null result] + Create $appDomain($i) null Default Default null null null result] if {[string length $interpreterHelper($i)] == 0} then { error [object invoke $result ToString] } @@ -65,11 +65,13 @@ set results } -cleanup { unset -nocomplain results code result interpreter interpreterHelper for {set i 1} {$i < 3} {incr i} { - object invoke AppDomain Unload $appDomain($i) + if {[info exists appDomain($i)]} then { + object invoke AppDomain Unload $appDomain($i) + } } unset -nocomplain appDomain i } -constraints {eagle monoBug28 command.sql compile.DATA\ compile.ISOLATED_INTERPRETERS SQLite System.Data.SQLite} -result {Ok 0 Ok 0}}