Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Update Eagle in externals to the beta 42 release. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
2f73ab7148a2558d168983b4e8c648f1 |
User & Date: | mistachkin 2018-07-30 05:04:08.176 |
Context
2018-08-04
| ||
21:41 | Attempt to support cross-platform native binaries in the core NuGet package for use with .NET Standard 2.0. check-in: 33424a48a4 user: mistachkin tags: trunk | |
2018-07-30
| ||
05:04 | Update Eagle in externals to the beta 42 release. check-in: 2f73ab7148 user: mistachkin tags: trunk | |
2018-07-26
| ||
08:21 | Fix handling of codes returned from sqlite3_config_log_interop(). Update version history docs. check-in: 2baae0f0d8 user: mistachkin tags: trunk | |
Changes
Changes to Externals/Eagle/bin/netFramework40/Eagle.dll.
cannot compute difference between binary files
Changes to Externals/Eagle/bin/netFramework40/EagleShell.exe.
cannot compute difference between binary files
Changes to Externals/Eagle/bin/netFramework40/EagleShell32.exe.
cannot compute difference between binary files
Changes to Externals/Eagle/bin/netFramework40/x64/Spilornis.dll.
cannot compute difference between binary files
Changes to Externals/Eagle/bin/netFramework40/x86/Spilornis.dll.
cannot compute difference between binary files
Added Externals/Eagle/bin/netStandard20/Eagle.dll.
cannot compute difference between binary files
Added Externals/Eagle/bin/netStandard20/EagleShell.dll.
cannot compute difference between binary files
Added Externals/Eagle/bin/netStandard20/EagleShell.runtimeconfig.json.
> > > > > > > > > | 1 2 3 4 5 6 7 8 9 | { "runtimeOptions": { "tfm": "netcoreapp2.0", "framework": { "name": "Microsoft.NETCore.App", "version": "2.0.0" } } } |
Changes to Externals/Eagle/lib/Eagle1.0/csharp.eagle.
︙ | ︙ | |||
115 116 117 118 119 120 121 | # # NOTE: This procedure is used to determine whether the C# compiler appears # to work when invoked via the interfaces defined in this script file. # Non-zero is returned to indicate success. This procedure should not # raise script errors. # | | > > > > > > > > > > > > | | > > > > > > > > > > > > > > > > | 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | # # NOTE: This procedure is used to determine whether the C# compiler appears # to work when invoked via the interfaces defined in this script file. # Non-zero is returned to indicate success. This procedure should not # raise script errors. # proc doesCompileCSharpWork { {name ""} {errorsVarName ""} } { if {[string length $errorsVarName] > 0} then { upvar 1 $errorsVarName errors } if {[catch {getCSharpTestProgram $name} program]} then { set errors [list [appendArgs \ "caught error while getting \"" $name "\" test program: " \ $program]] return false } if {[llength $program] < 2} then { set errors [list [appendArgs \ "command \[getCSharpTestProgram\] returned malformed \"" \ $name "\" test program: " $program]] return false } unset -nocomplain results local_errors if {[catch { compileCSharp [lindex $program 1] true true true results local_errors } code]} then { set errors [list [appendArgs \ "caught error while compiling \"" $name "\" test program: " \ $code]] return false } if {$code ne "Ok"} then { set errors [list [appendArgs \ "errors from compilation of \"" $name "\" test program: " \ $local_errors]] return false } if {[catch { object invoke [lindex $program 0] Main null } exitCode]} then { set errors [list [appendArgs \ "caught error while executing \"" $name "\" test program: " \ $exitCode]] return false } if {$exitCode ne "0"} then { set errors [list [appendArgs \ "bad exit code from \"" $name "\" test program: " \ $exitCode]] return false } return true } # |
︙ | ︙ | |||
285 286 287 288 289 290 291 | # if {$library} then { set libraryOptions [expr { \ [info exists ::eagle_platform(compileOptions)] ? \ $::eagle_platform(compileOptions) : [list] \ }] } else { | | | | 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 | # if {$library} then { set libraryOptions [expr { \ [info exists ::eagle_platform(compileOptions)] ? \ $::eagle_platform(compileOptions) : [list] \ }] } else { set libraryOptions [list] } # # NOTE: Permit extra C# compiler options to be passed via the global # array element "csharpOptions", if it exists. This caller may # disable this handling. # if {$csharp} then { set csharpOptions [expr { \ [info exists ::eagle_platform(csharpOptions)] ? \ $::eagle_platform(csharpOptions) : [list] \ }] } else { set csharpOptions [list] } # # NOTE: Start out with no compiler options. # set result "" |
︙ | ︙ | |||
489 490 491 492 493 494 495 | # NOTE: Do we not want to persist the generated assembly to disk? # set outputFileName "" if {$memory} then { $parameters GenerateInMemory true } else { | | | > > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > > > > > > > > | 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 | # NOTE: Do we not want to persist the generated assembly to disk? # set outputFileName "" if {$memory} then { $parameters GenerateInMemory true } else { $parameters OutputAssembly [set outputFileName [appendArgs [set \ tempName(1) [file tempname]] .dll]] } # # NOTE: Use a try/finally block to cleanup temporary files. # try { # # NOTE: Do we want symbols to be generated for the generated assembly? # if {$symbols} then { $parameters IncludeDebugInformation true } # # NOTE: Start out the compiler options with the pre-existing defaults # for the compiler followed by those necessary for the platform. # $parameters CompilerOptions \ [getCSharpCompilerOptions $parameters true true /] # # NOTE: Process extra compiler settings the caller may have provided. # foreach {name value} $args { $parameters -nocase $name $value } # # NOTE: Prepare to transfer the object reference to the caller. We # must use [upvar] here because otherwise the object is lost # when the procedure call frame is cleaned up. # if {[string length $resultsVarName] > 0} then { upvar 1 $resultsVarName results } # # NOTE: Attempt to compile the specified string as C# and capture the # results into the variable provided by the caller. # set results [$provider -alias CompileAssemblyFromSource $parameters \ $string] # # NOTE: We no longer need the C# code provider object (i.e. the # compiler); therefore, dispose it now. # unset provider; # dispose # # NOTE: Fetch the collection of compiler errors (which may be empty). # set errors [$results -alias Errors] # # NOTE: It is assumed that no assembly was generated if there were # any compiler errors. Ignore all compiler warnings unless # we are in strict mode. # if {[$errors HasErrors] || \ ($strict && [$errors HasWarnings])} then { # # NOTE: Compilation of the assembly failed. # set code Error # # NOTE: Prepare to transfer error messages to the caller. # if {[string length $errorsVarName] > 0} then { upvar 1 $errorsVarName local_errors } # # NOTE: Grab each error object and append the string itself to # the overall list of errors. # for {set index 0} {$index < [$errors Count]} {incr index} { # # NOTE: Get the compiler error object at this index. # set error [$errors -alias Item $index] # # NOTE: Convert it to a string and append it to the list of # errors. # lappend local_errors [$error ToString] # # NOTE: Since the error itself is actually an object, we must # dispose it. # unset error; # dispose } } else { # # NOTE: Compilation of the assembly succeeded. # set code Ok } # # NOTE: We no longer need the compiler errors collection; therefore, # dispose it now. # unset errors; # dispose # # HACK: *BREAKING CHANGE* If there is an output file name, return it # as well; otherwise, just return success. # if {[string length $outputFileName] > 0} then { # # NOTE: Return a two element list: the first element is the overall # result and the second element is the output file name. # return [list $code $outputFileName] } else { # # NOTE: Return the overall result to the caller. # return $code } } finally { # # NOTE: Make sure the dummy temporary files are cleaned up. # if {[array exists tempName]} then { foreach tempFileName [array values tempName] { if {[file exists $tempFileName]} then { catch {file delete $tempFileName} } } } } } # # NOTE: This procedure is used to dynamically compile arbitrary C# code # from within a script using the command line C# compiler provided # by the .NET Core SDK. This procedure was originally designed to |
︙ | ︙ | |||
670 671 672 673 674 675 676 | # append command " " [getCSharpCompilerOptions "" true true -] # # NOTE: Allocate a couple temporary file names, one to hold the source # code to compile and one to hold the generated assembly. # | | | > > > > | | | | | | | | | < | 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 | # append command " " [getCSharpCompilerOptions "" true true -] # # NOTE: Allocate a couple temporary file names, one to hold the source # code to compile and one to hold the generated assembly. # set sourceFileName [appendArgs [set tempName(1) [file tempname]] .cs] set outputFileName [appendArgs [set tempName(2) [file tempname]] .dll] # # NOTE: Use a try/finally block to cleanup temporary files. # try { # # NOTE: Process extra compiler settings the caller may have provided. # foreach {name value} $args { set nameValueArguments \ [compilerParameterToArguments $name $value outputFileName] if {[llength $nameValueArguments] > 0} then { eval lappend command $nameValueArguments } } # # NOTE: Make the compiler output a little quieter. This is needed # to maintain compatibility with the results generated by the # [compileViaCSharpCodeProvider] procedure. # lappend command -nologo |
︙ | ︙ | |||
821 822 823 824 825 826 827 828 829 830 831 832 833 834 | # # NOTE: Delete the temporary file name used to hold the source code. # if {[string length $sourceFileName] > 0 && \ [file exists $sourceFileName]} then { catch {file delete $sourceFileName} } } # # HACK: *BREAKING CHANGE* If there is an output file name, return it # as well; otherwise, just return success. # if {!$memory && [string length $outputFileName] > 0} then { | > > > > > > > > > > > | 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 | # # NOTE: Delete the temporary file name used to hold the source code. # if {[string length $sourceFileName] > 0 && \ [file exists $sourceFileName]} then { catch {file delete $sourceFileName} } # # NOTE: Make sure the dummy temporary files are cleaned up. # if {[array exists tempName]} then { foreach tempFileName [array values tempName] { if {[file exists $tempFileName]} then { catch {file delete $tempFileName} } } } } # # HACK: *BREAKING CHANGE* If there is an output file name, return it # as well; otherwise, just return success. # if {!$memory && [string length $outputFileName] > 0} then { |
︙ | ︙ |
Changes to Externals/Eagle/lib/Eagle1.0/exec.eagle.
︙ | ︙ | |||
89 90 91 92 93 94 95 96 97 98 99 100 101 102 | # # NOTE: Finally, execute the resulting [exec] command in the context # of the caller, returning its result. # return [uplevel 1 $command] } # # NOTE: Provide the Eagle "execute" package to the interpreter. # package provide Eagle.Execute \ [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}] } | > > > > > > > > > > > > > > > > > > | 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | # # NOTE: Finally, execute the resulting [exec] command in the context # of the caller, returning its result. # return [uplevel 1 $command] } # # NOTE: This procedure is designed to extract the exit code for a child # process run via [exec] using the value of $::errorCode. It will # always return either a valid integer -OR- the specified default # value, which may be an empty string. # proc maybeGetExitCode { value {default ""} } { if {[lindex $value 0] eq "CHILDSTATUS"} then { set status [lindex $value 2] if {[string is integer -strict $status]} then { return $status } } return $default } # # NOTE: Provide the Eagle "execute" package to the interpreter. # package provide Eagle.Execute \ [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}] } |
︙ | ︙ |
Changes to Externals/Eagle/lib/Eagle1.0/file3.eagle.
︙ | ︙ | |||
458 459 460 461 462 463 464 465 466 467 468 469 470 471 | } } } return $result } } # # NOTE: Provide the Eagle "file finder" package to the interpreter. # package provide Eagle.File.Finder \ [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}] } | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 | } } } return $result } } # # NOTE: This procedure attempts to copy all files matching the specified # source directory and patterns to the destination directory. This # procedure may raise script errors. # proc copyFilesRecursive { sourceDirectory targetDirectory {patterns ""} {options ""} } { # # NOTE: Block non-Windows platforms since this is Windows specific. # if {![isWindows]} then { error "not supported on this operating system" } # # NOTE: Start out with the [exec] command and the necessary options # to the command. # if {[isEagle]} then { set command [list exec -exitcode exitCode -- robocopy] } else { set command [list exec -- robocopy] } # # NOTE: Add the source and target directory names. These are always # required. # if {[isEagle]} then { lappend command [appendArgs \" [file nativename $sourceDirectory] \"] lappend command [appendArgs \" [file nativename $targetDirectory] \"] } else { lappend command [file nativename $sourceDirectory] lappend command [file nativename $targetDirectory] } # # NOTE: If there are patterns specified, add them now. By default, # all files are copied (i.e. "*.*"). # if {[llength $patterns] > 0} then { eval lappend command $patterns } # # NOTE: Should the default Robocopy options be excluded? Generally, # these options should not be excluded. All matching files # are copied, using restartable mode, and using extra options # when running as administrator to enable copying more files # and metadata, e.g. using backup mode and copying the extra # file security information. # if {[lsearch -exact $options -nocopyopts] == -1} then { lappend command /E if {[isEagle] && [isAdministrator]} then { lappend command /ZB /COPYALL } else { lappend command /Z } lappend command /DCOPY:T } # # NOTE: Should we override the default number of retries per file? # If no retry related option is found, the Robocopy default # behavior will be used (i.e. 1 million retries per file). # if {[set index [lsearch -glob $options -retries:*]] != -1} then { # # NOTE: Grab the retry option name/value from the list of options # and attempt to extract the integer number of retries from # it. # set value [lindex $options $index] if {[regexp -- {^-retries:(\d+)$} $value dummy retries] && \ [string is integer -strict $retries] && $retries >= 0} then { # # NOTE: Use the specified number of retries. This value will # be greater than or equal to zero and within the range # of a 32-bit integer. # lappend command [appendArgs /R: $retries] } else { # # NOTE: The specified number of retries is somehow invalid. # error "number of retries must be a positive integer" } } elseif {[lsearch -exact $options -retry] == -1} then { # # NOTE: Fallback to setting retry count to zero, which is used # to disable per-file retries. # lappend command /R:0 } # # NOTE: By default, do not process file system junctions. This # is used to avoid the possibility of infinite loops when # traversing the file system (i.e. because it is trivial # to utilize file system junctions in order to construct # directory trees that loop back upon themselves). # if {[lsearch -exact $options -junctions] == -1} then { lappend command /XJ } # # NOTE: By default, do not purge any files that happen to be in # the target directory. # if {[lsearch -exact $options -purge] != -1} then { lappend command /PURGE } # # NOTE: By default, do not produce a verbose log files in the # temporary directory. # if {[lsearch -exact $options -logging] != -1} then { lappend command /X /V /FP /NP package require Eagle.Test set logFileName [getTemporaryFileName] if {[isEagle]} then { lappend command [appendArgs \ \"/LOG: [file nativename $logFileName] \"] } else { lappend command [appendArgs \ /LOG: [file nativename $logFileName]] } } # # NOTE: Upon success, the exit code from Robocopy will be between # zero and seven. If the exit code is eight or greater, it # has somehow failed and that error must be reported to the # caller via raising a script error. # if {[isEagle]} then { # # NOTE: Execute the resulting [exec] command in our context and # capture the results. # set result [eval $command] if {[info exists exitCode] && $exitCode in \ [list Success Failure Exception 0 1 2 3 4 5 6 7]} then { # # NOTE: Return the captured output from the Robocopy command, # whatever it was. Generally, this will either be the # summary and details of the files copied -OR- the log # file name. # return $result } else { # # NOTE: Raise a script error, using the captured errors from # the Robocopy command, whatever it was. # error [appendArgs \ "command \"" $command "\" error: " $result] } } else { # # NOTE: Execute the resulting [exec] command in our context and # capture the results. # if {[catch $command result] == 0 || ([info exists ::errorCode] && \ [maybeGetExitCode $::errorCode 8] < 8)} then { # # NOTE: Return the captured output from the Robocopy command, # whatever it was. Generally, this will either be the # summary and details of the files copied -OR- the log # file name. # return $result } else { # # NOTE: Raise a script error, using the captured errors from # the Robocopy command, whatever it was. # error [appendArgs \ "command \"" $command "\" error: " $result] } } } # # NOTE: Provide the Eagle "file finder" package to the interpreter. # package provide Eagle.File.Finder \ [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}] } |
︙ | ︙ |
Changes to Externals/Eagle/lib/Eagle1.0/init.eagle.
︙ | ︙ | |||
368 369 370 371 372 373 374 | getPluginName getPluginPath getPackageInstallPath appendArgs \ lappendArgs getDictionaryValue getColumnValue getRowColumnValue \ tqputs tqlog makeBinaryChannel makeAsciiChannel makeUnicodeChannel \ makeLogChannel readFile readSharedFile writeFile appendFile \ appendLogFile appendSharedFile appendSharedLogFile \ readAsciiFile writeAsciiFile readUnicodeFile \ writeUnicodeFile getDirResultPath addToPath removeFromPath \ | | | | 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 | getPluginName getPluginPath getPackageInstallPath appendArgs \ lappendArgs getDictionaryValue getColumnValue getRowColumnValue \ tqputs tqlog makeBinaryChannel makeAsciiChannel makeUnicodeChannel \ makeLogChannel readFile readSharedFile writeFile appendFile \ appendLogFile appendSharedFile appendSharedLogFile \ readAsciiFile writeAsciiFile readUnicodeFile \ writeUnicodeFile getDirResultPath addToPath removeFromPath \ execShell maybeGetExitCode lshuffle ldifference filter map reduce \ getLengthModifier debug findDirectories \ findDirectoriesRecursive findFiles findFilesRecursive \ copyFilesRecursive exportAndImportPackageCommands setupUnzipVars \ unzipMustBeInstalled extractZipArchive] false false } ########################################################################### ############################## END Tcl ONLY ############################### ########################################################################### } |
︙ | ︙ |
Changes to Externals/Eagle/lib/Eagle1.0/test.eagle.
︙ | ︙ | |||
691 692 693 694 695 696 697 | } # # TODO: Add more support for standard "tcltest" options here. # set options [list \ -breakOnLeak -configuration -constraints -exitOnComplete \ | | | | | 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 | } # # TODO: Add more support for standard "tcltest" options here. # set options [list \ -breakOnLeak -configuration -constraints -exitOnComplete \ -file -logFile -machine -match -namePrefix -no -notFile \ -platform -postTest -preTest -postWait -preWait -randomOrder \ -skip -startFile -stopFile -stopOnFailure -stopOnLeak -suffix \ -suite -tclsh -threshold -uncountedLeaks -verbose] set length [llength $args] for {set index 0} {$index < $length} {incr index} { # # NOTE: Grab the current list element, which should be the name of |
︙ | ︙ | |||
997 998 999 1000 1001 1002 1003 | } # # NOTE: Check each candidate Tcl shell and query its fully # qualified path from it. If it cannot be executed, # we know that candidate Tcl shell is not available. # | > | | | | | | | | | > | 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 | } # # NOTE: Check each candidate Tcl shell and query its fully # qualified path from it. If it cannot be executed, # we know that candidate Tcl shell is not available. # if {![info exists ::no(getTclExecutableForTclShell)]} then { foreach shell $shells { if {[catch { getTclExecutableForTclShell $shell } executable] == 0 && $executable ne "error"} then { # # NOTE: It looks like this Tcl shell is available. # Return the fully qualified path to it now. # return $executable } } } } # # NOTE: Return the fallback default. # |
︙ | ︙ | |||
1216 1217 1218 1219 1220 1221 1222 | proc getDefaultTestLog {} { set executable [info nameofexecutable] if {![info exists ::no(temporaryTestLog)]} then { set path [getTemporaryPath] } else { | > > > > > > > > | | | > | | | 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 | proc getDefaultTestLog {} { set executable [info nameofexecutable] if {![info exists ::no(temporaryTestLog)]} then { set path [getTemporaryPath] } else { # # HACK: It seems that .NET Core considers itself to be the # executable-of-record for the process; in that case, # relocate the log file to be nearer the assemblies. # if {[isEagle] && [isDotNetCore]} then { set path [info binary] } else { set path [file dirname $executable] } } return [file normalize [file join $path [appendArgs \ [file tail $executable] [getTestLogId] .test. [pid] .log]]] } proc getTestLog {} { return [expr {[info exists ::test_log] ? $::test_log : ""}] } proc getLastTestLog {} { |
︙ | ︙ | |||
1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 | } else { # # NOTE: We are missing the configuration, return nothing. # return "" } } proc getTestSuffix {} { # # NOTE: Determine the effective test suffix and return it. If # the test suffix cannot be determined, return an empty # string. # | > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 | } else { # # NOTE: We are missing the configuration, return nothing. # return "" } } proc getTestNamePrefix {} { # # NOTE: Determine the effective test name prefix and return it. If # the test name prefix cannot be determined, return an empty # string. # if {[info exists ::test_flags(-namePrefix)] && \ [string length $::test_flags(-namePrefix)] > 0} then { # # NOTE: The test name prefix has been manually overridden via the # test flags; therefore, use it. # return $::test_flags(-namePrefix) } elseif {[info exists ::test_name_prefix] && \ [string length $::test_name_prefix] > 0} then { # # NOTE: Use the default test name prefix. # return $::test_name_prefix } else { # # NOTE: We are missing the test name prefix, return nothing. # return "" } } proc getTestSuffix {} { # # NOTE: Determine the effective test suffix and return it. If # the test suffix cannot be determined, return an empty # string. # |
︙ | ︙ | |||
1459 1460 1461 1462 1463 1464 1465 | # NOTE: Use the build suffix of Eagle itself. This value # will typically be "NetFx20", "NetFx40", etc. The # default value of this element is an empty string. # return $::eagle_platform(suffix) } else { # | | | 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 | # NOTE: Use the build suffix of Eagle itself. This value # will typically be "NetFx20", "NetFx40", etc. The # default value of this element is an empty string. # return $::eagle_platform(suffix) } else { # # NOTE: We are missing the test suffix, return nothing. # return "" } } proc getTestUncountedLeaks {} { if {[info exists ::test_uncounted_leaks] && \ |
︙ | ︙ | |||
2575 2576 2577 2578 2579 2580 2581 | # # NOTE: Does the file name contain directory information? # if {[string length [file dirname $fileName]] <= 1} then { # # NOTE: If not, assume it is under the supplied test path. # | | | 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 | # # NOTE: Does the file name contain directory information? # if {[string length [file dirname $fileName]] <= 1} then { # # NOTE: If not, assume it is under the supplied test path. # set fileName [file normalize [file join $path $fileName]] } # # NOTE: The "magic" pattern we are looking for to determine if # a given file is part of the formal test suite. # set pattern {^(\s)*runTest .*$} |
︙ | ︙ | |||
4075 4076 4077 4078 4079 4080 4081 | # set suffix [getTestSuffix] # # NOTE: If necessary, automatically detect the machine for the Tcl # shell that we plan on using. # | | > | 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 | # set suffix [getTestSuffix] # # NOTE: If necessary, automatically detect the machine for the Tcl # shell that we plan on using. # if {[string length $machine] == 0 && \ ![info exists ::no(getMachineForTclShell)]} then { set machine [getMachineForTclShell] } # # NOTE: Build the full path and file name of the Garuda DLL, using # the Eagle base path. Currently, this will only work # correctly if the test suite is being run from inside the |
︙ | ︙ | |||
4232 4233 4234 4235 4236 4237 4238 | haveOrAddConstraint getConstraints getCachedConstraints \ useCachedConstraints removeConstraint fixConstraints \ fixTimingConstraints calculateBogoCops calculateRelativePerformance \ formatTimeStamp formatElapsedTime sourceIfValid \ processTestArguments getTclShellFileName getTemporaryPath \ getFiles getTestFiles getTestRunId getNewTestRunId getTestLogId \ getDefaultTestLog getTestLog getLastTestLog getTestSuite \ | | | | | | | | | | | | | | | 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 | haveOrAddConstraint getConstraints getCachedConstraints \ useCachedConstraints removeConstraint fixConstraints \ fixTimingConstraints calculateBogoCops calculateRelativePerformance \ formatTimeStamp formatElapsedTime sourceIfValid \ processTestArguments getTclShellFileName getTemporaryPath \ getFiles getTestFiles getTestRunId getNewTestRunId getTestLogId \ getDefaultTestLog getTestLog getLastTestLog getTestSuite \ getTestMachine getTestPlatform getTestConfiguration getTestNamePrefix \ getTestSuffix getTestUncountedLeaks getRuntimeAssemblyName \ getTestAssemblyName canTestExec testExec testClrExec execTestShell \ isRandomOrder isBreakOnDemand isBreakOnLeak isStopOnFailure \ isStopOnLeak isExitOnComplete returnInfoScript runTestPrologue \ runTestEpilogue hookPuts unhookPuts runTest testDebugBreak \ testArrayGet testShim tsource recordTestStatistics \ reportTestStatistics formatList formatListAsDict pathToRegexp \ assemblyNameToRegexp inverseLsearchGlob removePathFromFileNames \ formatDecimal clearTestPercent reportTestPercent runAllTests \ isTestSuiteRunning getTestChannelOrDefault tryVerifyTestPath \ checkForAndSetTestPath configureTcltest machineToPlatform \ getPassPercentage getSkipPercentage] false false ########################################################################### ############################## END Tcl ONLY ############################### ########################################################################### } # # NOTE: Provide the Eagle "test" package to the interpreter. # package provide Eagle.Test \ [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}] } |
Changes to Externals/Eagle/lib/Eagle1.0/unzip.eagle.
︙ | ︙ | |||
86 87 88 89 90 91 92 | # # NOTE: The command to use when attempting to unzip an archive. # variable unzipExtractCommand; # DEFAULT: unzip ... if {$force || ![info exists unzipExtractCommand]} then { | | | 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | # # NOTE: The command to use when attempting to unzip an archive. # variable unzipExtractCommand; # DEFAULT: unzip ... if {$force || ![info exists unzipExtractCommand]} then { set unzipExtractCommand {unzip -n {${fileName}} -d {${directory}}} } } # # NOTE: This procedure attempts to verify that an implementation of the # unzip command line tool is installed locally. There are no # arguments. Script errors are raised if any problems are found. |
︙ | ︙ |
Changes to Externals/Eagle/lib/Test1.0/constraints.eagle.
︙ | ︙ | |||
78 79 80 81 82 83 84 | # if {$force || ![info exists ::no(monoVersions)]} then { return [list \ [list 2 0] [list 2 2] [list 2 4] [list 2 6] [list 2 8] [list 2 10] \ [list 2 11] [list 3 0] [list 3 1] [list 3 2] [list 3 4] [list 3 6] \ [list 3 8] [list 3 10] [list 3 12] [list 4 0] [list 4 2] [list 4 4] \ [list 4 6] [list 4 8] [list 5 0] [list 5 2] [list 5 4] [list 5 8] \ | | | 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | # if {$force || ![info exists ::no(monoVersions)]} then { return [list \ [list 2 0] [list 2 2] [list 2 4] [list 2 6] [list 2 8] [list 2 10] \ [list 2 11] [list 3 0] [list 3 1] [list 3 2] [list 3 4] [list 3 6] \ [list 3 8] [list 3 10] [list 3 12] [list 4 0] [list 4 2] [list 4 4] \ [list 4 6] [list 4 8] [list 5 0] [list 5 2] [list 5 4] [list 5 8] \ [list 5 10] [list 5 12] [list 5 14]] } else { return [list] } } proc addKnownMonoConstraints { generic } { # |
︙ | ︙ | |||
1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 | } } } } tputs $channel no\n } proc checkForNamespaces { channel quiet } { tputs $channel "---- checking for namespace support... " if {[isEagle]} then { # # NOTE: Check if namespace support was compiled into the core | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 | } } } } tputs $channel no\n } proc checkForEFormat { channel } { tputs $channel "---- checking for \"eformat\" support... " if {[catch { # # HACK: This test was stolen directly from the native Tcl source # file "library/tcltest/tcltest.tcl", which is part of the # "tcltest" package. # if {[isEagle]} then { expr { [string equal [format %.0e 5e-5] 5e-05] && \ [string equal [format %#.5g 0] 0.0000] } } else { expr { [string equal [format %g 5e-5] 5e-05] && \ [string equal [format %#.5g 0] 0.0000] } } } eformat] == 0 && [string is true -strict $eformat]} then { addConstraint eformat tputs $channel yes\n } else { tputs $channel no\n } } proc checkForNamespaces { channel quiet } { tputs $channel "---- checking for namespace support... " if {[isEagle]} then { # # NOTE: Check if namespace support was compiled into the core |
︙ | ︙ | |||
1731 1732 1733 1734 1735 1736 1737 | } # # NOTE: We were able to query for namespace support (i.e. this # must be beta 29 or later); however, we still need to # check if it has been enabled at runtime. # | | | 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 | } # # NOTE: We were able to query for namespace support (i.e. this # must be beta 29 or later); however, we still need to # check if it has been enabled at runtime. # if {[string is true -strict $enabled]} then { # # NOTE: Yes, it appears that it is available and enabled. # addConstraint namespaces tputs $channel enabled\n } else { |
︙ | ︙ | |||
1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 | addConstraint [appendArgs configuration. $::test_configuration] tputs $channel [appendArgs $::test_configuration \n] } else { tputs $channel unknown\n } } proc checkForTestSuffix { channel } { tputs $channel "---- checking for test suffix... " if {[info exists ::test_suffix] && \ [string length $::test_suffix] > 0} then { addConstraint [appendArgs suffix. $::test_suffix] | > > > > > > > > > > > > > | 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 | addConstraint [appendArgs configuration. $::test_configuration] tputs $channel [appendArgs $::test_configuration \n] } else { tputs $channel unknown\n } } proc checkForTestNamePrefix { channel } { tputs $channel "---- checking for test name prefix... " if {[info exists ::test_name_prefix] && \ [string length $::test_name_prefix] > 0} then { addConstraint [appendArgs namePrefix. $::test_name_prefix] tputs $channel [appendArgs $::test_name_prefix \n] } else { tputs $channel unknown\n } } proc checkForTestSuffix { channel } { tputs $channel "---- checking for test suffix... " if {[info exists ::test_suffix] && \ [string length $::test_suffix] > 0} then { addConstraint [appendArgs suffix. $::test_suffix] |
︙ | ︙ | |||
2435 2436 2437 2438 2439 2440 2441 | if {[isEagle]} then { # # NOTE: Attempt to query for native stack checking in Eagle. # if {[catch { object invoke -flags +NonPublic \ Eagle._Components.Private.NativeStack CanQueryThread | | > | 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 | if {[isEagle]} then { # # NOTE: Attempt to query for native stack checking in Eagle. # if {[catch { object invoke -flags +NonPublic \ Eagle._Components.Private.NativeStack CanQueryThread } canQueryThread] == 0 && \ [string is true -strict $canQueryThread]} then { # # NOTE: Yes, it appears that it is available. # addConstraint stackIntensive tputs $channel yes\n } else { |
︙ | ︙ | |||
2476 2477 2478 2479 2480 2481 2482 | object invoke -flags +NonPublic \ Eagle._Components.Private.FileOps \ GetPeFileStackReserveAndCommit \ [info nameofexecutable] reserve commit set reserve; # primitive, already numeric. | | > | 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 | object invoke -flags +NonPublic \ Eagle._Components.Private.FileOps \ GetPeFileStackReserveAndCommit \ [info nameofexecutable] reserve commit set reserve; # primitive, already numeric. } stackSize] == 0 && \ [string is integer -strict $stackSize] && $stackSize > 0} then { addConstraint [appendArgs stackSize.0x [format %x $stackSize]] tputs $channel [appendArgs "yes (" $stackSize ")\n"] } else { tputs $channel no\n } } else { |
︙ | ︙ | |||
2689 2690 2691 2692 2693 2694 2695 | proc checkForSecurity { channel } { tputs $channel "---- checking for security... " if {[catch { object invoke -flags +NonPublic Interpreter.GetActive HasSecurity } security] == 0} then { | | | 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 | proc checkForSecurity { channel } { tputs $channel "---- checking for security... " if {[catch { object invoke -flags +NonPublic Interpreter.GetActive HasSecurity } security] == 0} then { if {[string is true -strict $security]} then { addConstraint security.enabled tputs $channel yes\n } else { addConstraint security.disabled tputs $channel no\n |
︙ | ︙ | |||
2970 2971 2972 2973 2974 2975 2976 | } } proc checkForHost { channel } { tputs $channel "---- checking for host... " if {[catch {host isopen} open] == 0} then { | | | | 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 | } } proc checkForHost { channel } { tputs $channel "---- checking for host... " if {[catch {host isopen} open] == 0} then { if {[string is true -strict $open]} then { addConstraint hostIsOpen tputs $channel open\n } else { if {[catch {host redirected Input} redirected] == 0} then { if {[string is true -strict $redirected]} then { addConstraint hostInputRedirected tputs $channel redirected\n } else { addConstraint hostIsClosed tputs $channel closed\n |
︙ | ︙ | |||
3586 3587 3588 3589 3590 3591 3592 | proc checkForQuiet { channel quiet } { if {!$quiet} then { tputs $channel "---- checking for quiet... " } if {[catch { object invoke Interpreter.GetActive Quiet | | | 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 | proc checkForQuiet { channel quiet } { if {!$quiet} then { tputs $channel "---- checking for quiet... " } if {[catch { object invoke Interpreter.GetActive Quiet } isQuiet] == 0 && [string is true -strict $isQuiet]} then { # # NOTE: Yes, quiet mode is enabled. # addConstraint quiet if {!$quiet} then { tputs $channel yes\n |
︙ | ︙ | |||
3641 3642 3643 3644 3645 3646 3647 | } else { tputs $channel no\n } } proc testForDynamicLoading { {fileName ""} } { if {[catch { | | > | > > > > > > | 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 | } else { tputs $channel no\n } } proc testForDynamicLoading { {fileName ""} } { if {[catch { if {[string length $fileName] == 0} then { if {[isWindows]} then { set fileName kernel32; # HACK: Always pre-loaded? } elseif {[info exists ::tcl_platform(os)] && \ $::tcl_platform(os) eq "Darwin"} then { set fileName libdl.dylib; # TODO: Good default? } else { set fileName libdl.so; # TODO: Good default? } } set error null object invoke -flags +NonPublic \ Eagle._Components.Private.NativeOps TestLoadLibrary \ $fileName error |
︙ | ︙ | |||
3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 | # interpreter and AppDomain tidy. It also requires access # to native Windows support in order to use the [info hwnd] # sub-command. # if {[haveConstraint compile.ISOLATED_INTERPRETERS] && \ [haveConstraint compile.NATIVE] && \ [haveConstraint compile.WINDOWS]} then { try { if {[catch { # # NOTE: In an attempt to limit the assemblies loaded into the # primary AppDomain, create an isolated interpreter. # set interp [interp create -isolated] # # NOTE: Give the newly created (isolated) interpreter a means # to set variables in the parent (this) interpreter. # interp alias $interp pset {} set; # parent set # # NOTE: Evaluate all the Excel interop assembly related code # in the other AppDomain. # interp eval $interp { # # NOTE: First, attempt to load the Excel interop assembly. | > > > > > > > > > > > > > > > > > | 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 | # interpreter and AppDomain tidy. It also requires access # to native Windows support in order to use the [info hwnd] # sub-command. # if {[haveConstraint compile.ISOLATED_INTERPRETERS] && \ [haveConstraint compile.NATIVE] && \ [haveConstraint compile.WINDOWS]} then { # # NOTE: Allocate a temporary file name that can be used to save # the Excel spreadsheet. This name will be provided to a # child interpreter for its use -AND- cleaned up by this # interpreter before exiting this procedure. # set tempName(1) [getTemporaryFileName] # # NOTE: Use a try/finally block to cleanup temporary files. # try { if {[catch { # # NOTE: In an attempt to limit the assemblies loaded into the # primary AppDomain, create an isolated interpreter. # set interp [interp create -isolated] # # NOTE: Give the newly created (isolated) interpreter a means # to set variables in the parent (this) interpreter. # interp alias $interp pset {} set; # parent set # # NOTE: Give the newly created (isolated) interpreter a base # name for a temporary file. # interp set $interp tempName(1) $tempName(1) # # NOTE: Evaluate all the Excel interop assembly related code # in the other AppDomain. # interp eval $interp { # # NOTE: First, attempt to load the Excel interop assembly. |
︙ | ︙ | |||
3957 3958 3959 3960 3961 3962 3963 | # # NOTE: Next, attempt to add a new workbook. If this fails, # Excel is not considered usable. # set workbook [object invoke -alias \ $application.Workbooks Add $enumValue] | < < < < < < | | | 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 | # # NOTE: Next, attempt to add a new workbook. If this fails, # Excel is not considered usable. # set workbook [object invoke -alias \ $application.Workbooks Add $enumValue] # # NOTE: Setup a temporary file name that can be used to save # the Excel spreadsheet. # pset fileName [set fileName [file nativename [appendArgs \ $tempName(1) .xls]]] # # NOTE: Next, attempt to save a new workbook. If this fails, # Excel is not considered usable. # $workbook SaveAs $fileName |
︙ | ︙ | |||
4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 | # # NOTE: Make sure the temporary spreadsheet file is deleted if # it was actually created. # if {[info exists fileName] && [file exists $fileName]} then { catch {file delete $fileName} } } } else { tputs $channel "unknown, missing optional feature\n" } } else { tputs $channel "unknown, no Excel interop assembly\n" } | > > > > > > > > > > > | 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 | # # NOTE: Make sure the temporary spreadsheet file is deleted if # it was actually created. # if {[info exists fileName] && [file exists $fileName]} then { catch {file delete $fileName} } # # NOTE: Make sure the dummy temporary files are cleaned up. # if {[array exists tempName]} then { foreach tempFileName [array values tempName] { if {[file exists $tempFileName]} then { catch {file delete $tempFileName} } } } } } else { tputs $channel "unknown, missing optional feature\n" } } else { tputs $channel "unknown, no Excel interop assembly\n" } |
︙ | ︙ | |||
4143 4144 4145 4146 4147 4148 4149 | tputs $channel no\n } proc checkForTclReady { channel } { tputs $channel "---- checking for Tcl readiness... " | | > | 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 | tputs $channel no\n } proc checkForTclReady { channel } { tputs $channel "---- checking for Tcl readiness... " if {[catch {tcl ready} ready] == 0 && \ [string is true -strict $ready]} then { # # NOTE: Yes, native Tcl is loaded and ready. # addConstraint tclReady # # NOTE: Yes, native Tcl is ready -OR- available. |
︙ | ︙ | |||
4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 | # HACK: If this returns "error" that normally indicates an error was # caught during [exec] (i.e. the native Tcl shell could not be # executed). # set prefix "---- checking for Tcl shell version... " if {[canExecTclShell] && \ [catch {getTclVersionForTclShell} version] == 0 && \ $version ne "error"} then { # # NOTE: Yes, a native Tcl shell appears to be available. # addConstraint tclShell | > | 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 | # HACK: If this returns "error" that normally indicates an error was # caught during [exec] (i.e. the native Tcl shell could not be # executed). # set prefix "---- checking for Tcl shell version... " if {[canExecTclShell] && \ ![info exists ::no(getTclVersionForTclShell)] && \ [catch {getTclVersionForTclShell} version] == 0 && \ $version ne "error"} then { # # NOTE: Yes, a native Tcl shell appears to be available. # addConstraint tclShell |
︙ | ︙ | |||
4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 | # procedure, we only care if it returns "error" because that # would indicate an error was caught during [exec] (i.e. the # native Tcl shell could not be executed). # set prefix "---- checking for Tk package version... " if {[canExecTclShell] && \ [catch {getTkVersionForTclShell} version] == 0 && \ $version ne "error"} then { # # NOTE: Yes, a native Tk package appears to be available. # addConstraint tkPackage | > | 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 | # procedure, we only care if it returns "error" because that # would indicate an error was caught during [exec] (i.e. the # native Tcl shell could not be executed). # set prefix "---- checking for Tk package version... " if {[canExecTclShell] && \ ![info exists ::no(getTkVersionForTclShell)] && \ [catch {getTkVersionForTclShell} version] == 0 && \ $version ne "error"} then { # # NOTE: Yes, a native Tk package appears to be available. # addConstraint tkPackage |
︙ | ︙ | |||
4574 4575 4576 4577 4578 4579 4580 | {Software\Microsoft\NET Framework Setup\NDP\v2.0.50727}] # # NOTE: Attempt to fetch the .NET Framework 2.0 "SP" value from the # servicing registry hive. If this value does not exist -OR- # is less than 1, then no .NET Framework 2.0 service pack is # installed. If this raises a script error, that will almost | | | 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 | {Software\Microsoft\NET Framework Setup\NDP\v2.0.50727}] # # NOTE: Attempt to fetch the .NET Framework 2.0 "SP" value from the # servicing registry hive. If this value does not exist -OR- # is less than 1, then no .NET Framework 2.0 service pack is # installed. If this raises a script error, that will almost # certainly cause the result to be a non-integer, thus failing # the check below. # catch { object invoke Microsoft.Win32.Registry GetValue $key SP null } servicePack if {[string is integer -strict $servicePack]} then { |
︙ | ︙ | |||
4779 4780 4781 4782 4783 4784 4785 | {Software\Microsoft\NET Framework Setup\NDP\v4\Full}] # # NOTE: Attempt to fetch the .NET Framework 4.0 "release" value from # the servicing registry hive. If this value does not exist # -OR- is less than 378389, then the .NET Framework 4.5 is not # installed. If this raises a script error, that will almost | | | 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 | {Software\Microsoft\NET Framework Setup\NDP\v4\Full}] # # NOTE: Attempt to fetch the .NET Framework 4.0 "release" value from # the servicing registry hive. If this value does not exist # -OR- is less than 378389, then the .NET Framework 4.5 is not # installed. If this raises a script error, that will almost # certainly cause the result to be a non-integer, thus failing # the check below. # catch { object invoke Microsoft.Win32.Registry GetValue $key Release null } release if {[string is integer -strict $release] && $release >= 378389} then { |
︙ | ︙ | |||
4992 4993 4994 4995 4996 4997 4998 | # # NOTE: Is the native debugger present? # if {[catch { object invoke -flags +NonPublic \ Eagle._Components.Private.NativeOps+SafeNativeMethods \ IsDebuggerPresent | | | | 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 | # # NOTE: Is the native debugger present? # if {[catch { object invoke -flags +NonPublic \ Eagle._Components.Private.NativeOps+SafeNativeMethods \ IsDebuggerPresent } present] == 0 && [string is true -strict $present]} then { # # NOTE: Yes, it appears that it is present. # addConstraint nativeDebugger tputs $channel yes\n } else { tputs $channel no\n } } proc checkForManagedDebugger { channel } { tputs $channel "---- checking for managed debugger... " # # NOTE: Is the managed debugger attached? # if {[catch { object invoke System.Diagnostics.Debugger IsAttached } attached] == 0 && [string is true -strict $attached]} then { # # NOTE: Yes, it appears that it is attached. # addConstraint managedDebugger tputs $channel yes\n } else { |
︙ | ︙ | |||
5127 5128 5129 5130 5131 5132 5133 | cleanPackageName haveTclPlatformOsExtraUpdateName \ checkForTestSuiteFiles checkForPlatform checkForWindowsVersion \ checkForOperatingSystemUpdate checkForScriptLibrary checkForVariable \ checkForTclOptions checkForWindowsCommandProcessor checkForPackage \ checkForFossil checkForVisualStudioViaVsWhere checkForEagle \ checkForSymbols checkForLogFile checkForGaruda checkForShell \ checkForOfficialStableReleaseInProgress checkForDebug checkForTk \ | | | > | | | | | | | | | | | 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 | cleanPackageName haveTclPlatformOsExtraUpdateName \ checkForTestSuiteFiles checkForPlatform checkForWindowsVersion \ checkForOperatingSystemUpdate checkForScriptLibrary checkForVariable \ checkForTclOptions checkForWindowsCommandProcessor checkForPackage \ checkForFossil checkForVisualStudioViaVsWhere checkForEagle \ checkForSymbols checkForLogFile checkForGaruda checkForShell \ checkForOfficialStableReleaseInProgress checkForDebug checkForTk \ checkForVersion checkForCommand checkForSubCommand checkForEFormat \ checkForNamespaces checkForTestExec checkForTestMachine \ checkForTestPlatform checkForTestConfiguration checkForTestNamePrefix \ checkForTestSuffix checkForFile checkForPathFile checkForNativeCode \ checkForTip127 checkForTip194 checkForTip207 checkForTip241 \ checkForTip285 checkForTip405 checkForTip421 checkForTip426 \ checkForTip429 checkForTip440 checkForTip461 checkForTip463 \ checkForTip471 checkForTiming checkForPerformance checkForBigLists \ checkForProcessorIntensive checkForTimeIntensive checkForFullTest \ checkForMemoryIntensive checkForStackIntensive checkForStackSize \ checkForInteractive checkForInteractiveCommand \ checkForUserInteraction checkForNetwork checkForCompileOption \ checkForKnownCompileOptions] false false ########################################################################### ############################## END Tcl ONLY ############################### ########################################################################### } # # NOTE: Provide the Eagle "test constraints" package to the interpreter. # package provide Eagle.Test.Constraints \ [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}] } |
Changes to Externals/Eagle/lib/Test1.0/prologue.eagle.
︙ | ︙ | |||
452 453 454 455 456 457 458 459 460 461 462 463 464 465 | # # NOTE: If command line arguments were supplied, process them now. # set test_flags(-suite) ""; # test suite name, default to empty. set test_flags(-machine) ""; # machine architecture, default to empty. set test_flags(-platform) ""; # build platform, default to empty. set test_flags(-configuration) ""; # build configuration, default to empty. set test_flags(-suffix) ""; # build suffix, default to empty. set test_flags(-file) [list *.eagle]; # default to running all test files. set test_flags(-notFile) [list l.*.eagle]; # COMPAT: Tcl. set test_flags(-startFile) [list]; # start running at these test files. set test_flags(-stopFile) [list]; # stop running after these test files. set test_flags(-match) [list *]; # default to running all tests. set test_flags(-skip) [list]; # default to skipping no tests. | > | 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 | # # NOTE: If command line arguments were supplied, process them now. # set test_flags(-suite) ""; # test suite name, default to empty. set test_flags(-machine) ""; # machine architecture, default to empty. set test_flags(-platform) ""; # build platform, default to empty. set test_flags(-configuration) ""; # build configuration, default to empty. set test_flags(-namePrefix) ""; # test name prefix, default to empty. set test_flags(-suffix) ""; # build suffix, default to empty. set test_flags(-file) [list *.eagle]; # default to running all test files. set test_flags(-notFile) [list l.*.eagle]; # COMPAT: Tcl. set test_flags(-startFile) [list]; # start running at these test files. set test_flags(-stopFile) [list]; # stop running after these test files. set test_flags(-match) [list *]; # default to running all tests. set test_flags(-skip) [list]; # default to skipping no tests. |
︙ | ︙ | |||
630 631 632 633 634 635 636 637 638 639 640 641 642 643 | # # NOTE: Set the default test configuration (i.e. Debug or Release), if # necessary. # if {![info exists test_configuration]} then { set test_configuration [getPlatformInfo configuration Release] } # # NOTE: Has automatic log file naming been disabled? # if {![info exists no(logFileName)]} then { # # NOTE: Set the log to use for test output, if necessary. | > > > > > > > | 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 | # # NOTE: Set the default test configuration (i.e. Debug or Release), if # necessary. # if {![info exists test_configuration]} then { set test_configuration [getPlatformInfo configuration Release] } # # NOTE: Set the name prefix used for some tests, if necessary. # if {![info exists test_name_prefix]} then { set test_name_prefix "" } # # NOTE: Has automatic log file naming been disabled? # if {![info exists no(logFileName)]} then { # # NOTE: Set the log to use for test output, if necessary. |
︙ | ︙ | |||
836 837 838 839 840 841 842 843 844 845 846 847 848 849 | tputs $test_channel [appendArgs "---- test platform: " \ [expr {[info exists test_platform] ? \ $test_platform : "<none>"}] \n] tputs $test_channel [appendArgs "---- test configuration: " \ [expr {[info exists test_configuration] ? \ $test_configuration : "<none>"}] \n] tputs $test_channel [appendArgs "---- test suffix: " \ [expr {[info exists test_suffix] ? \ $test_suffix : "<none>"}] \n] if {[isEagle]} then { tputs $test_channel [appendArgs "---- original command line: " \ | > > > > | 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 | tputs $test_channel [appendArgs "---- test platform: " \ [expr {[info exists test_platform] ? \ $test_platform : "<none>"}] \n] tputs $test_channel [appendArgs "---- test configuration: " \ [expr {[info exists test_configuration] ? \ $test_configuration : "<none>"}] \n] tputs $test_channel [appendArgs "---- test name prefix: " \ [expr {[info exists test_name_prefix] ? \ $test_name_prefix : "<none>"}] \n] tputs $test_channel [appendArgs "---- test suffix: " \ [expr {[info exists test_suffix] ? \ $test_suffix : "<none>"}] \n] if {[isEagle]} then { tputs $test_channel [appendArgs "---- original command line: " \ |
︙ | ︙ | |||
3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 | # # NOTE: Has checking for the test configuration been disabled? # if {![info exists no(testConfiguration)]} then { checkForTestConfiguration $test_channel } # # NOTE: Has checking for the test suffix been disabled? # if {![info exists no(testSuffix)]} then { checkForTestSuffix $test_channel } | > > > > > > > | 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 | # # NOTE: Has checking for the test configuration been disabled? # if {![info exists no(testConfiguration)]} then { checkForTestConfiguration $test_channel } # # NOTE: Has checking for the test name prefix been disabled? # if {![info exists no(testNamePrefix)]} then { checkForTestNamePrefix $test_channel } # # NOTE: Has checking for the test suffix been disabled? # if {![info exists no(testSuffix)]} then { checkForTestSuffix $test_channel } |
︙ | ︙ | |||
3255 3256 3257 3258 3259 3260 3261 | # 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 $core_bin_path sqlite3.dll] # | | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 | # 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 $core_bin_path sqlite3.dll] # # NOTE: Did we manage to find the native SQLite library yet? If not, # try to check using the machine type as a sub-directory. # if {![haveConstraint file_sqlite3.dll]} then { # # NOTE: Ok, now try to check for the machine specific native # SQLite library. # checkForFile $test_channel [file join $core_bin_path \ [machineToPlatform $test_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 $core_bin_path \ [machineToPlatform $test_machine false] sqlite3.dll] } } if {[isEagle] && ![isWindows]} then { # # NOTE: Did we manage to find the native SQLite library yet? If not, # try to check using the machine type as a sub-directory -AND- # using the Unix file name. # if {![haveConstraint file_sqlite3.dll]} then { # # NOTE: Ok, now try to check for the machine specific native # SQLite library, near the binary, using the Unix name. # checkForFile $test_channel [file join $core_bin_path \ [machineToPlatform $test_machine true] [appendArgs \ libsqlite3 [info sharedlibextension]]] 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, near the binary, using the Unix name. # checkForFile $test_channel [file join $core_bin_path \ [machineToPlatform $test_machine false] [appendArgs \ libsqlite3 [info sharedlibextension]]] sqlite3.dll } } # # NOTE: Did we manage to find the native SQLite library yet? If not, # try to check using the Unix library directories -AND- using # the Unix file name. # if {![haveConstraint file_sqlite3.dll]} then { # # NOTE: Attempt to obtain the path information for the Unix # local library directory. This will not work for # native Tcl. # if {[catch { info path "=NativeLibrary +Local" } lib_dir] == 0} then { # # NOTE: Ok, now try to check for the machine specific native # SQLite library, in the Unix local library directory, # and the Unix file name. # checkForFile $test_channel [file join $lib_dir [appendArgs \ libsqlite3 [info sharedlibextension]]] sqlite3.dll } # # NOTE: Did we manage to find the native SQLite library yet? # if {![haveConstraint file_sqlite3.dll]} then { # # NOTE: Attempt to obtain the path information for the Unix # global library directory. This will not work for # native Tcl. # if {[catch { info path "=NativeLibrary -Local" } lib_dir] == 0} then { # # NOTE: Ok, now try to check for the machine specific native # SQLite library, in the Unix global library directory, # and the Unix file name. # checkForFile $test_channel [file join $lib_dir [appendArgs \ libsqlite3 [info sharedlibextension]]] sqlite3.dll } } unset lib_dir } # # NOTE: Did we manage to find the native SQLite library yet? If not, # try to check using the Unix library directories -AND- using # the Unix file name, without using the processor name. # if {![haveConstraint file_sqlite3.dll]} then { # # NOTE: Attempt to obtain the path information for the Unix # local library directory without the processor name. # This will not work for native Tcl. # if {[catch { info path "=NativeLibrary +Local +NoProcessor" } lib_dir] == 0} then { # # NOTE: Ok, now try to check for the machine specific native # SQLite library, in the Unix local library directory, # and the Unix file name. # checkForFile $test_channel [file join $lib_dir [appendArgs \ libsqlite3 [info sharedlibextension]]] sqlite3.dll } # # NOTE: Did we manage to find the native SQLite library yet? # if {![haveConstraint file_sqlite3.dll]} then { # # NOTE: Attempt to obtain the path information for the Unix # global library directory without the processor name. # This will not work for native Tcl. # if {[catch { info path "=NativeLibrary -Local +NoProcessor" } lib_dir] == 0} then { # # NOTE: Ok, now try to check for the machine specific native # SQLite library, in the Unix global library directory, # and the Unix file name. # checkForFile $test_channel [file join $lib_dir [appendArgs \ libsqlite3 [info sharedlibextension]]] sqlite3.dll } } unset lib_dir } } } if {![info exists no(System.Data.SQLite.dll)]} then { checkForFile $test_channel [file join $core_bin_path \ System.Data.SQLite.dll] } |
︙ | ︙ | |||
3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 | if {![info exists no(versionCommand)]} then { checkForCommand $test_channel version } if {![info exists no(xmlCommand)]} then { checkForCommand $test_channel xml } # # NOTE: Has namespace detection support been disabled? # if {![info exists no(namespaces)]} then { checkForNamespaces $test_channel [haveConstraint quiet] } | > > > > > > > | 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 | if {![info exists no(versionCommand)]} then { checkForCommand $test_channel version } if {![info exists no(xmlCommand)]} then { checkForCommand $test_channel xml } # # NOTE: Has "eformat" detection support been disabled? # if {![info exists no(eformat)]} then { checkForEFormat $test_channel } # # NOTE: Has namespace detection support been disabled? # if {![info exists no(namespaces)]} then { checkForNamespaces $test_channel [haveConstraint quiet] } |
︙ | ︙ |