Skip to content
Browse files

Shell projects, scripts and tools

  • Loading branch information...
0 parents commit 9a81ef92386b3e78255623e92f83c4062ce26c21 @damianh committed
Showing with 5,777 additions and 0 deletions.
  1. +19 −0 nuget/RavenDB.Client.ContextualListeners.nuspec
  2. +50 −0 scripts/default.ps1
  3. +5 −0 scripts/psake.ps1
  4. +663 −0 scripts/psake.psm1
  5. +6 −0 src/.nuget/NuGet.Config
  6. BIN src/.nuget/NuGet.exe
  7. +71 −0 src/.nuget/NuGet.targets
  8. +4 −0 src/Raven.Client.ContextualListeners/Properties/AssemblyInfo.cs
  9. +70 −0 src/Raven.Client.ContextualListeners/Raven.Client.ContextualListeners.csproj
  10. +6 −0 src/Raven.Client.ContextualListeners/packages.config
  11. +4 −0 src/Tests.Raven.Client.ContextualListeners/Properties/AssemblyInfo.cs
  12. +60 −0 src/Tests.Raven.Client.ContextualListeners/Tests.Raven.Client.ContextualListeners.csproj
  13. +4 −0 src/Tests.Raven.Client.ContextualListeners/packages.config
  14. +29 −0 tools/XUnitRunner/EULA.txt
  15. +128 −0 tools/XUnitRunner/HTML.xslt
  16. +121 −0 tools/XUnitRunner/NUnitXml.xslt
  17. BIN tools/XUnitRunner/Thumbs.db
  18. BIN tools/XUnitRunner/XUnitRunner.nupkg
  19. BIN tools/XUnitRunner/xunit.console.clr4.exe
  20. +21 −0 tools/XUnitRunner/xunit.console.clr4.exe.config
  21. BIN tools/XUnitRunner/xunit.console.clr4.x86.exe
  22. +21 −0 tools/XUnitRunner/xunit.console.clr4.x86.exe.config
  23. BIN tools/XUnitRunner/xunit.console.exe
  24. +21 −0 tools/XUnitRunner/xunit.console.exe.config
  25. BIN tools/XUnitRunner/xunit.console.x86.exe
  26. +21 −0 tools/XUnitRunner/xunit.console.x86.exe.config
  27. BIN tools/XUnitRunner/xunit.dll
  28. +5 −0 tools/XUnitRunner/xunit.dll.tdnet
  29. BIN tools/XUnitRunner/xunit.extensions.dll
  30. +797 −0 tools/XUnitRunner/xunit.extensions.xml
  31. BIN tools/XUnitRunner/xunit.gui.clr4.exe
  32. BIN tools/XUnitRunner/xunit.gui.clr4.x86.exe
  33. BIN tools/XUnitRunner/xunit.gui.exe
  34. BIN tools/XUnitRunner/xunit.gui.x86.exe
  35. BIN tools/XUnitRunner/xunit.installer.exe
  36. BIN tools/XUnitRunner/xunit.runner.msbuild.dll
  37. BIN tools/XUnitRunner/xunit.runner.tdnet.dll
  38. BIN tools/XUnitRunner/xunit.runner.utility.dll
  39. BIN tools/XUnitRunner/xunit.runner.utility.pdb
  40. +1,212 −0 tools/XUnitRunner/xunit.runner.utility.xml
  41. +2,439 −0 tools/XUnitRunner/xunit.xml
19 nuget/RavenDB.Client.ContextualListeners.nuspec
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<package>
+ <metadata>
+ <id>RavenDB.Client.ContextualListeners</id>
+ <version>1.0</version>
+ <title>RavenDB Client that allows context to be passed into listeners</title>
+ <authors>Damian Hickey</authors>
+ <description>RavenDB.Client.ContextualListeners is a 3rd party bundle and not offically supported by Hibernating Rhinos.</description>
+ <language>en-US</language>
+ <licenseUrl>http://www.opensource.org/licenses/MIT</licenseUrl>
+ <projectUrl>https://github.com/damianh/RavenDB.Client.ContextualListeners</projectUrl>
+ <requireLicenseAcceptance>false</requireLicenseAcceptance>
+ <tags>nosql ravendb raven document database client</tags>
+ <dependencies>
+ <dependency id="RavenDB.Client" version="" />
+ </dependencies>
+ <iconUrl>http://static.ravendb.net/logo-for-nuget.png</iconUrl>
+ </metadata>
+</package>
50 scripts/default.ps1
@@ -0,0 +1,50 @@
+properties {
+ $base_dir = resolve-path ..\
+ $build_dir = "$base_dir\build"
+ $src_dir = "$base_dir\src"
+ $sln_file = "$base_dir\src\RavenDB.Client.ContextualListeners.sln"
+ $version = "1.0"
+ $tools_dir = "$base_dir\tools"
+ $buildNumber = 0
+}
+
+task default -depends Release
+
+task Clean {
+ remove-item -force -recurse $build_dir -ErrorAction SilentlyContinue
+ exec { msbuild $sln_file /t:Clean }
+}
+
+task Compile -depends Clean {
+ exec { msbuild $sln_file /p:Configuration=Release }
+}
+
+task RunTests -depends Compile {
+ New-Item $build_dir -Type directory
+ .$tools_dir\XunitRunner\xunit.console.clr4.exe "$base_dir\src\Tests.Raven.Client.ContextualListeners\bin\Release\Tests.Raven.Client.ContextualListeners.dll" /html "$build_dir\index.html"
+}
+
+task BuildPackages -depends Compile{
+ New-Item $build_dir\RavenDB.Client.ContextualListeners\lib\net40 -Type directory | Out-Null
+ Copy-Item $base_dir\NuGet\RavenDB.Client.ContextualListeners.nuspec $build_dir\RavenDB.Client.ContextualListeners\RavenDB.Client.ContextualListeners.nuspec
+ @("Raven.Client.ContextualListeners.???") |% { Copy-Item "$src_dir\Raven.Client.ContextualListeners\bin\Release\$_" $build_dir\RavenDB.Client.ContextualListeners\lib\net40 }
+
+ $packagesConfig = [xml](Get-Content $base_dir\src\Raven.Client.ContextualListeners\packages.config)
+ $packagesConfig.packages.package | Where-Object {$_.id -eq "RavenDB.Client"} |% {$ravenDependencyVersion = $_.Version}
+ $packageVersion = $ravenDependencyVersion + "." + $buildNumber
+
+ $packages = Get-ChildItem $build_dir *.nuspec -recurse
+ $packages |% {
+ $nuspec = [xml](Get-Content $_.FullName)
+ $nuspec.package.metadata.version = $packageVersion
+ $nuspec | Select-Xml '//dependency' |% {
+ if($_.Node.Id.StartsWith('RavenDB')){
+ $_.Node.Version = "[$ravenDependencyVersion]"
+ }
+ }
+ $nuspec.Save($_.FullName);
+ &"$base_dir\src\.nuget\nuget.exe" pack $_.FullName -OutputDirectory $build_dir
+ }
+}
+
+task Release -depends RunTests, BuildPackages
5 scripts/psake.ps1
@@ -0,0 +1,5 @@
+# Helper script for those who want to run
+# psake without importing the module.
+import-module .\psake.psm1
+invoke-psake @args
+remove-module psake
663 scripts/psake.psm1
@@ -0,0 +1,663 @@
+# psake
+# Copyright (c) 2010 James Kovacs
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+#Requires -Version 2.0
+
+#Ensure that only one instance of the psake module is loaded
+remove-module psake -erroraction silentlycontinue
+
+#-- Public Module Functions --#
+
+# .ExternalHelp psake.psm1-help.xml
+function Invoke-Task
+{
+ [CmdletBinding()]
+ param(
+ [Parameter(Position=0,Mandatory=1)] [string]$taskName
+ )
+
+ Assert $taskName ($msgs.error_invalid_task_name)
+
+ $taskKey = $taskName.ToLower()
+
+ $currentContext = $psake.context.Peek()
+ $tasks = $currentContext.tasks
+ $executedTasks = $currentContext.executedTasks
+ $callStack = $currentContext.callStack
+
+ Assert ($tasks.Contains($taskKey)) ($msgs.error_task_name_does_not_exist -f $taskName)
+
+ if ($executedTasks.Contains($taskKey)) { return }
+
+ Assert (!$callStack.Contains($taskKey)) ($msgs.error_circular_reference -f $taskName)
+
+ $callStack.Push($taskKey)
+
+ $task = $tasks.$taskKey
+
+ $precondition_is_valid = & $task.Precondition
+
+ if (!$precondition_is_valid) {
+ $msgs.precondition_was_false -f $taskName
+ } else {
+ if ($taskKey -ne 'default') {
+ $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
+
+ if ($task.PreAction -or $task.PostAction) {
+ Assert ($task.Action -ne $null) $msgs.error_missing_action_parameter
+ }
+
+ if ($task.Action) {
+ try {
+ foreach($childTask in $task.DependsOn) {
+ Invoke-Task $childTask
+ }
+
+ $currentContext.currentTaskName = $taskName
+
+ & $currentContext.taskSetupScriptBlock
+
+ if ($task.PreAction) {
+ & $task.PreAction
+ }
+
+ if ($currentContext.formatTaskName -is [ScriptBlock]) {
+ & $currentContext.formatTaskName $taskName
+ } else {
+ $formattedTaskName = $currentContext.formatTaskName -f $taskName
+ Write-TeamCityBlockOpened $formattedTaskName
+ }
+
+ & $task.Action
+ Write-TeamCityBlockClosed $formattedTaskName
+
+ if ($task.PostAction) {
+ & $task.PostAction
+ }
+
+ & $currentContext.taskTearDownScriptBlock
+ } catch {
+ if ($task.ContinueOnError) {
+ "-"*70
+ $msgs.continue_on_error -f $taskName,$_
+ "-"*70
+ } else {
+ throw $_
+ }
+ }
+ } else {
+ #no Action was specified but we still execute all the dependencies
+ foreach($childTask in $task.DependsOn) {
+ Invoke-Task $childTask
+ }
+ }
+ $stopwatch.stop()
+ $task.Duration = $stopwatch.Elapsed
+ } else {
+ foreach($childTask in $task.DependsOn) {
+ Invoke-Task $childTask
+ }
+ }
+
+ Assert (& $task.Postcondition) ($msgs.postcondition_failed -f $taskName)
+ }
+
+ $poppedTaskKey = $callStack.Pop()
+ Assert ($poppedTaskKey -eq $taskKey) ($msgs.error_corrupt_callstack -f $taskKey,$poppedTaskKey)
+
+ $executedTasks.Push($taskKey)
+}
+
+# .ExternalHelp psake.psm1-help.xml
+function Exec
+{
+ [CmdletBinding()]
+ param(
+ [Parameter(Position=0,Mandatory=1)][scriptblock]$cmd,
+ [Parameter(Position=1,Mandatory=0)][string]$errorMessage = ($msgs.error_bad_command -f $cmd)
+ )
+ & $cmd
+ if ($lastexitcode -ne 0) {
+ throw ("Exec: " + $errorMessage)
+ }
+}
+
+# .ExternalHelp psake.psm1-help.xml
+function Assert
+{
+ [CmdletBinding()]
+ param(
+ [Parameter(Position=0,Mandatory=1)]$conditionToCheck,
+ [Parameter(Position=1,Mandatory=1)]$failureMessage
+ )
+ if (!$conditionToCheck) {
+ throw ("Assert: " + $failureMessage)
+ }
+}
+
+# .ExternalHelp psake.psm1-help.xml
+function Task
+{
+ [CmdletBinding()]
+ param(
+ [Parameter(Position=0,Mandatory=1)] [string]$name = $null,
+ [Parameter(Position=1,Mandatory=0)] [scriptblock]$action = $null,
+ [Parameter(Position=2,Mandatory=0)] [scriptblock]$preaction = $null,
+ [Parameter(Position=3,Mandatory=0)] [scriptblock]$postaction = $null,
+ [Parameter(Position=4,Mandatory=0)] [scriptblock]$precondition = {$true},
+ [Parameter(Position=5,Mandatory=0)] [scriptblock]$postcondition = {$true},
+ [Parameter(Position=6,Mandatory=0)] [switch]$continueOnError = $false,
+ [Parameter(Position=7,Mandatory=0)] [string[]]$depends = @(),
+ [Parameter(Position=8,Mandatory=0)] [string]$description = $null
+ )
+
+ if ($name -eq 'default') {
+ Assert (!$action) ($msgs.error_default_task_cannot_have_action)
+ }
+
+ $newTask = @{
+ Name = $name
+ DependsOn = $depends
+ PreAction = $preaction
+ Action = $action
+ PostAction = $postaction
+ Precondition = $precondition
+ Postcondition = $postcondition
+ ContinueOnError = $continueOnError
+ Description = $description
+ Duration = 0
+ }
+
+ $taskKey = $name.ToLower()
+
+ $currentContext = $psake.context.Peek()
+
+ Assert (!$currentContext.tasks.ContainsKey($taskKey)) ($msgs.error_duplicate_task_name -f $name)
+
+ $currentContext.tasks.$taskKey = $newTask
+}
+
+# .ExternalHelp psake.psm1-help.xml
+function Properties {
+ [CmdletBinding()]
+ param(
+ [Parameter(Position=0,Mandatory=1)][scriptblock]$properties
+ )
+ $psake.context.Peek().properties += $properties
+}
+
+# .ExternalHelp psake.psm1-help.xml
+function Include {
+ [CmdletBinding()]
+ param(
+ [Parameter(Position=0,Mandatory=1)][string]$fileNamePathToInclude
+ )
+ Assert (test-path $fileNamePathToInclude) ($msgs.error_invalid_include_path -f $fileNamePathToInclude)
+ $psake.context.Peek().includes.Enqueue((Resolve-Path $fileNamePathToInclude));
+}
+
+# .ExternalHelp psake.psm1-help.xml
+function FormatTaskName {
+ [CmdletBinding()]
+ param(
+ [Parameter(Position=0,Mandatory=1)]$format
+ )
+ $psake.context.Peek().formatTaskName = $format
+}
+
+# .ExternalHelp psake.psm1-help.xml
+function TaskSetup {
+ [CmdletBinding()]
+ param(
+ [Parameter(Position=0,Mandatory=1)][scriptblock]$setup
+ )
+ $psake.context.Peek().taskSetupScriptBlock = $setup
+}
+
+# .ExternalHelp psake.psm1-help.xml
+function TaskTearDown {
+ [CmdletBinding()]
+ param(
+ [Parameter(Position=0,Mandatory=1)][scriptblock]$teardown
+ )
+ $psake.context.Peek().taskTearDownScriptBlock = $teardown
+}
+
+# .ExternalHelp psake.psm1-help.xml
+function Invoke-psake {
+ [CmdletBinding()]
+ param(
+ [Parameter(Position = 0, Mandatory = 0)][string] $buildFile = $psake.config.defaultBuildFileName,
+ [Parameter(Position = 1, Mandatory = 0)][string[]] $taskList = @(),
+ [Parameter(Position = 2, Mandatory = 0)][string] $framework = '3.5',
+ [Parameter(Position = 3, Mandatory = 0)][switch] $docs = $false,
+ [Parameter(Position = 4, Mandatory = 0)][hashtable] $parameters = @{},
+ [Parameter(Position = 5, Mandatory = 0)][hashtable] $properties = @{}
+ )
+
+ try {
+ "psake version {0}`nCopyright (c) 2010 James Kovacs`n" -f $psake.version
+ $psake.build_success = $false
+ $psake.framework_version = $framework
+
+ $psake.context.push(@{
+ "formatTaskName" = $psake.config.taskNameFormat;
+ "taskSetupScriptBlock" = {};
+ "taskTearDownScriptBlock" = {};
+ "executedTasks" = new-object System.Collections.Stack;
+ "callStack" = new-object System.Collections.Stack;
+ "originalEnvPath" = $env:path;
+ "originalDirectory" = get-location;
+ "originalErrorActionPreference" = $global:ErrorActionPreference;
+ "tasks" = @{};
+ "properties" = @();
+ "includes" = new-object System.Collections.Queue;
+ })
+
+ $currentContext = $psake.context.Peek()
+
+ <#
+ If the default.ps1 file exists and the given "buildfile" isn 't found assume that the given
+ $buildFile is actually the target Tasks to execute in the default.ps1 script.
+ #>
+ if ((test-path $psake.config.defaultBuildFileName ) -and !(test-path $buildFile)) {
+ $taskList = $buildFile.Split(', ')
+ $buildFile = $psake.config.defaultBuildFileName
+ }
+
+ # Execute the build file to set up the tasks and defaults
+ Assert (test-path $buildFile) ($msgs.error_build_file_not_found -f $buildFile)
+
+ $psake.build_script_file = get-item $buildFile
+ $psake.build_script_dir = $psake.build_script_file.DirectoryName
+
+ Load-Configuration $psake.build_script_dir
+
+ Load-Modules
+
+ $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
+
+ set-location $psake.build_script_dir
+
+ . $psake.build_script_file.FullName
+
+ if ($docs) {
+ Write-Documentation
+ Cleanup-Environment
+ return
+ }
+
+ Configure-BuildEnvironment
+
+ # N.B. The initial dot (.) indicates that variables initialized/modified
+ # in the propertyBlock are available in the parent scope.
+ while ($currentContext.includes.Count -gt 0) {
+ $includeBlock = $currentContext.includes.Dequeue()
+ . $includeBlock
+ }
+
+ foreach ($key in $parameters.keys) {
+ if (test-path "variable:\$key") {
+ set-item -path "variable:\$key" -value $parameters.$key | out-null
+ } else {
+ new-item -path "variable:\$key" -value $parameters.$key | out-null
+ }
+ }
+
+ foreach ($propertyBlock in $currentContext.properties) {
+ . $propertyBlock
+ }
+
+ foreach ($key in $properties.keys) {
+ if (test-path "variable:\$key") {
+ set-item -path "variable:\$key" -value $properties.$key | out-null
+ }
+ }
+
+ # Execute the list of tasks or the default task
+ if ($taskList) {
+ foreach ($task in $taskList) {
+ invoke-task $task
+ }
+ } elseif ($currentContext.tasks.default) {
+ invoke-task default
+ } else {
+ throw $msgs.error_no_default_task
+ }
+
+ $stopwatch.Stop()
+
+ "`n" + $msgs.build_success + "`n"
+
+ Write-TaskTimeSummary
+
+ $psake.build_success = $true
+ } catch {
+ if ($psake.config.verboseError) {
+ $error_message = "{0}: An Error Occurred. See Error Details Below: `n" -f (Get-Date)
+ $error_message += ("-" * 70) + "`n"
+ $error_message += Resolve-Error $_
+ $error_message += ("-" * 70) + "`n"
+ $error_message += "Script Variables" + "`n"
+ $error_message += ("-" * 70) + "`n"
+ $error_message += get-variable -scope script | format-table | out-string
+ } else {
+ $error_message = "{0}: An Error Occurred: `n{1}" -f (Get-Date), $_
+ }
+
+ $psake.build_success = $false
+
+ if (!$psake.run_by_psake_build_tester) {
+ #if we are running in a nested scope (i.e. running a psake script from a psake script) then we need to re-throw the exception
+ #so that the parent script will fail otherwise the parent script will report a successful build
+ $inNestedScope = ($psake.context.count -gt 1)
+ if ( $inNestedScope ) {
+ throw $_
+ } else {
+ write-host $error_message -foregroundcolor red
+ }
+
+ # Need to return a non-zero DOS exit code so that CI server's (Hudson, TeamCity, etc...) can detect a failed job
+ if ((IsChildOfService)) {
+ exit($psake.config.exitCode)
+ }
+ }
+ } finally {
+ Cleanup-Environment
+ }
+} #Invoke-psake
+
+#-- Private Module Functions --#
+function Load-Modules {
+ $modules = $null
+
+ if ($psake.config.modules.autoload) {
+ if ($psake.config.modules.directory) {
+ Assert (test-path $psake.config.modules.directory) ($msgs.error_invalid_module_dir -f $psake.config.modules.directory)
+ $modules = get-item(join-path $psake.config.modules.directory "*.psm1")
+ }
+ elseif (test-path (join-path $PSScriptRoot "modules")) {
+ $modules = get-item (join-path (join-path $PSScriptRoot "modules") "*.psm1")
+ }
+ } else {
+ if ($psake.config.modules.module) {
+ $modules = $psake.config.modules.module | % {
+ Assert (test-path $_.path) ($msgs.error_invalid_module_path -f $_.path);
+ get-item $_.path
+ }
+ }
+ }
+
+ if ($modules) {
+ $modules | % {
+ "loading module: $_";
+ $module = import-module $_ -passthru;
+ if (!$module) {
+ throw ($msgs.error_loading_module -f $_.Name)
+ }
+ }
+ ""
+ }
+}
+
+function Load-Configuration {
+ param(
+ [string] $configdir = $PSScriptRoot
+ )
+
+ $psakeConfigFilePath = (join-path $configdir "psake-config.ps1")
+
+ if (test-path $psakeConfigFilePath) {
+ try {
+ . $psakeConfigFilePath
+ } catch {
+ throw "Error Loading Configuration from psake-config.ps1: " + $_
+ }
+ } else {
+ if (!$psake.config) {
+ $psake.config = new-object psobject -property @{
+ defaultBuildFileName = "default.ps1";
+ taskNameFormat = "Executing {0}";
+ exitCode = "1";
+ verboseError = $false;
+ modules = (new-object PSObject -property @{
+ autoload = $false
+ })
+ }
+ }
+ }
+}
+
+function IsChildOfService {
+ param(
+ [int] $currentProcessID = $PID
+ )
+
+ $currentProcess = gwmi -Query "select * from win32_process where processid = '$currentProcessID'"
+
+ #System Idle Process
+ if ($currentProcess.ProcessID -eq 0) {
+ return $false
+ }
+
+ $service = Get-WmiObject -Class Win32_Service -Filter "ProcessId = '$currentProcessID'"
+
+ #We are invoked by a windows service
+ if ($service) {
+ return $true
+ } else {
+ $parentProcess = gwmi -Query "select * from win32_process where processid = '$($currentProcess.ParentProcessID)'"
+ return IsChildOfService $parentProcess.ProcessID
+ }
+}
+
+function Configure-BuildEnvironment {
+ if ($framework.Length -ne 3 -and $framework.Length -ne 6) {
+ throw ($msgs.error_invalid_framework -f $framework)
+ }
+ $versionPart = $framework.Substring(0, 3)
+ $bitnessPart = $framework.Substring(3)
+ $versions = $null
+ switch ($versionPart) {
+ '1.0' {
+ $versions = @('v1.0.3705')
+ }
+ '1.1' {
+ $versions = @('v1.1.4322')
+ }
+ '2.0' {
+ $versions = @('v2.0.50727')
+ }
+ '3.0' {
+ $versions = @('v2.0.50727')
+ }
+ '3.5' {
+ $versions = @('v3.5', 'v2.0.50727')
+ }
+ '4.0' {
+ $versions = @('v4.0.30319')
+ }
+ default {
+ throw ($msgs.error_unknown_framework -f $versionPart, $framework)
+ }
+ }
+
+ $bitness = 'Framework'
+ if ($versionPart -ne '1.0' -and $versionPart -ne '1.1') {
+ switch ($bitnessPart) {
+ 'x86' {
+ $bitness = 'Framework'
+ }
+ 'x64' {
+ $bitness = 'Framework64'
+ }
+ $null {
+ $ptrSize = [System.IntPtr]::Size
+ switch ($ptrSize) {
+ 4 {
+ $bitness = 'Framework'
+ }
+ 8 {
+ $bitness = 'Framework64'
+ }
+ default {
+ throw ($msgs.error_unknown_pointersize -f $ptrSize)
+ }
+ }
+ }
+ default {
+ throw ($msgs.error_unknown_bitnesspart -f $bitnessPart, $framework)
+ }
+ }
+ }
+ $frameworkDirs = $versions | foreach { "$env:windir\Microsoft.NET\$bitness\$_\" }
+
+ $frameworkDirs | foreach { Assert (test-path $_) ($msgs.error_no_framework_install_dir_found -f $_)}
+
+ $env:path = ($frameworkDirs -join ";") + ";$env:path"
+ #if any error occurs in a PS function then "stop" processing immediately
+ #this does not effect any external programs that return a non-zero exit code
+ $global:ErrorActionPreference = "Stop"
+}
+
+function Cleanup-Environment {
+ if ($psake.context.Count -gt 0) {
+ $currentContext = $psake.context.Peek()
+ $env:path = $currentContext.originalEnvPath
+ Set-Location $currentContext.originalDirectory
+ $global:ErrorActionPreference = $currentContext.originalErrorActionPreference
+ [void] $psake.context.Pop()
+ }
+}
+
+#borrowed from Jeffrey Snover http://blogs.msdn.com/powershell/archive/2006/12/07/resolve-error.aspx
+function Resolve-Error($ErrorRecord = $Error[0]) {
+ $error_message = "`nErrorRecord:{0}ErrorRecord.InvocationInfo:{1}Exception:{2}"
+ $formatted_errorRecord = $ErrorRecord | format-list * -force | out-string
+ $formatted_invocationInfo = $ErrorRecord.InvocationInfo | format-list * -force | out-string
+ $formatted_exception = ""
+ $Exception = $ErrorRecord.Exception
+ for ($i = 0; $Exception; $i++, ($Exception = $Exception.InnerException)) {
+ $formatted_exception += ("$i" * 70) + "`n"
+ $formatted_exception += $Exception | format-list * -force | out-string
+ $formatted_exception += "`n"
+ }
+
+ return $error_message -f $formatted_errorRecord, $formatted_invocationInfo, $formatted_exception
+}
+
+function Write-Documentation {
+ $currentContext = $psake.context.Peek()
+ $currentContext.tasks.Keys | foreach-object {
+ if ($_ -eq "default") {
+ return
+ }
+
+ $task = $currentContext.tasks.$_
+ new-object PSObject -property @{
+ Name = $task.Name;
+ Description = $task.Description;
+ "Depends On" = $task.DependsOn -join ", "
+ }
+ } | sort 'Name' | format-table -Auto
+}
+
+function Write-TaskTimeSummary {
+ "-" * 70
+ "Build Time Report"
+ "-" * 70
+ $list = @()
+ $currentContext = $psake.context.Peek()
+ while ($currentContext.executedTasks.Count -gt 0) {
+ $taskKey = $currentContext.executedTasks.Pop()
+ $task = $currentContext.tasks.$taskKey
+ if ($taskKey -eq "default") {
+ continue
+ }
+ $list += new-object PSObject -property @{
+ Name = $task.Name;
+ Duration = $task.Duration
+ }
+ }
+ [Array]::Reverse($list)
+ $list += new-object PSObject -property @{
+ Name = "Total:";
+ Duration = $stopwatch.Elapsed
+ }
+ $list | format-table -auto | out-string -stream | ? { $_ } #using "Out-String -Stream" to filter out the blank line that Format-Table prepends
+}
+
+function Write-TeamCityBlockOpened($name = $(throw "name paramater required.")){
+ if($env:TEAMCITY_PROJECT_NAME -ne $null){ # detect if this script is being run in TeamCity. Uses same mechanism as xunit http://xunit.codeplex.com/wikipage?title=HowToUseTeamCity
+ "##teamcity[blockOpened name='$name']"
+ }
+ else{
+ $name
+ }
+}
+
+function Write-TeamCityBlockClosed($name = $(throw "name paramater required.")){
+ if($env:TEAMCITY_PROJECT_NAME -ne $null){
+ "##teamcity[blockClosed name='$name']"
+ }
+}
+
+DATA msgs {
+convertfrom-stringdata @'
+ error_invalid_task_name = Task name should not be null or empty string
+ error_task_name_does_not_exist = task [{0}] does not exist
+ error_circular_reference = Circular reference found for task, {0}
+ error_missing_action_parameter = Action parameter must be specified when using PreAction or PostAction parameters
+ error_corrupt_callstack = CallStack was corrupt. Expected {0}, but got {1}.
+ error_invalid_framework = Invalid .NET Framework version, {0}, specified
+ error_unknown_framework = Unknown .NET Framework version, {0}, specified in {1}
+ error_unknown_pointersize = Unknown pointer size ({0}) returned from System.IntPtr.
+ error_unknown_bitnesspart = Unknown .NET Framework bitness, {0}, specified in {1}
+ error_no_framework_install_dir_found = No .NET Framework installation directory found at {0}
+ error_bad_command = Error executing command: {0}
+ error_default_task_cannot_have_action = 'default' task cannot specify an action
+ error_duplicate_task_name = Task {0} has already been defined.
+ error_invalid_include_path = Unable to include {0}. File not found.
+ error_build_file_not_found = Could not find the build file, {0}.
+ error_no_default_task = default task required
+ error_invalid_module_dir = Unable to load modules from directory: {0}
+ error_invalid_module_path = Unable to load module at path: {0}
+ error_loading_module = Error loading module: {0}
+ postcondition_failed = Postcondition failed for {0}
+ precondition_was_false = Precondition was false not executing {0}
+ continue_on_error = Error in Task [{0}] {1}
+ build_success = Build Succeeded!
+'@
+}
+
+import-localizeddata -bindingvariable msgs -erroraction silentlycontinue
+
+$script:psake = @{}
+$psake.build_success = $false # indicates that the current build was successful
+$psake.version = "4.2" # contains the current version of psake
+$psake.build_script_file = $null # contains a System.IO.FileInfo for the current build file
+$psake.build_script_dir = "" # contains a string with fully-qualified path to current build script
+$psake.framework_version = "" # contains the framework version # for the current build
+$psake.run_by_psake_build_tester = $false # indicates that build is being run by psake-BuildTester
+$psake.context = new-object system.collections.stack # holds onto the current state of all variables
+
+Load-Configuration
+
+export-modulemember -function invoke-psake, invoke-task, task, properties, include, formattaskname, tasksetup, taskteardown, assert, exec -variable psake
6 src/.nuget/NuGet.Config
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <solution>
+ <add key="disableSourceControlIntegration" value="true" />
+ </solution>
+</configuration>
BIN src/.nuget/NuGet.exe
Binary file not shown.
71 src/.nuget/NuGet.targets
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
+
+ <!-- Windows specific commands -->
+ <NuGetToolsPath Condition=" '$(OS)' == 'Windows_NT'">$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
+ <PackagesConfig Condition=" '$(OS)' == 'Windows_NT'">$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
+ <PackagesDir Condition=" '$(OS)' == 'Windows_NT'">$([System.IO.Path]::Combine($(SolutionDir), "packages"))</PackagesDir>
+
+ <!-- We need to launch nuget.exe with the mono command if we're not on windows -->
+ <NuGetToolsPath Condition=" '$(OS)' != 'Windows_NT'">$(SolutionDir).nuget</NuGetToolsPath>
+ <PackagesConfig Condition=" '$(OS)' != 'Windows_NT' ">packages.config</PackagesConfig>
+ <PackagesDir Condition=" '$(OS)' != 'Windows_NT'">$(SolutionDir)packages</PackagesDir>
+
+ <!-- NuGet command -->
+ <NuGetExePath>$(NuGetToolsPath)\nuget.exe</NuGetExePath>
+ <NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
+ <NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>
+
+ <PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
+
+ <!-- Package sources used to restore packages. By default will used the registered sources under %APPDATA%\NuGet\NuGet.Config -->
+ <PackageSources>""</PackageSources>
+
+ <!-- Enable the restore command to run before builds -->
+ <RestorePackages Condition="$(RestorePackages) == ''">false</RestorePackages>
+
+ <!-- Property that enables building a package from a project -->
+ <BuildPackage Condition="$(BuildPackage) == ''">false</BuildPackage>
+
+ <!-- Commands -->
+ <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source $(PackageSources) -o "$(PackagesDir)"</RestoreCommand>
+ <BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>
+
+ <!-- Make the build depend on restore packages -->
+ <BuildDependsOn Condition="$(RestorePackages) == 'true'">
+ RestorePackages;
+ $(BuildDependsOn);
+ </BuildDependsOn>
+
+ <!-- Make the build depend on restore packages -->
+ <BuildDependsOn Condition="$(BuildPackage) == 'true'">
+ $(BuildDependsOn);
+ BuildPackage;
+ </BuildDependsOn>
+ </PropertyGroup>
+
+ <Target Name="CheckPrerequisites">
+ <!-- Raise an error if we're unable to locate nuget.exe -->
+ <Error Condition="!Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
+ </Target>
+
+ <Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
+ <Exec Command="$(RestoreCommand)"
+ Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
+
+ <Exec Command="$(RestoreCommand)"
+ LogStandardErrorAsError="true"
+ Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
+ </Target>
+
+ <Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
+ <Exec Command="$(BuildCommand)"
+ Condition=" '$(OS)' != 'Windows_NT' " />
+
+ <Exec Command="$(BuildCommand)"
+ LogStandardErrorAsError="true"
+ Condition=" '$(OS)' == 'Windows_NT' " />
+ </Target>
+</Project>
4 src/Raven.Client.ContextualListeners/Properties/AssemblyInfo.cs
@@ -0,0 +1,4 @@
+using System.Reflection;
+
+[assembly: AssemblyTitle("Raven.Client.ContextualListeners")]
+[assembly: AssemblyDescription("")]
70 src/Raven.Client.ContextualListeners/Raven.Client.ContextualListeners.csproj
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{D1ECF00F-2902-444E-8409-3E94D00A7A3F}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Raven.Client.ContextualListeners</RootNamespace>
+ <AssemblyName>Raven.Client.ContextualListeners</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
+ <RestorePackages>true</RestorePackages>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Newtonsoft.Json">
+ <HintPath>..\packages\Newtonsoft.Json.4.0.8\lib\net40\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="NLog">
+ <HintPath>..\packages\NLog.2.0.0.2000\lib\net40\NLog.dll</HintPath>
+ </Reference>
+ <Reference Include="Raven.Abstractions">
+ <HintPath>..\packages\RavenDB.Client.1.0.888\lib\net40\Raven.Abstractions.dll</HintPath>
+ </Reference>
+ <Reference Include="Raven.Client.Lightweight">
+ <HintPath>..\packages\RavenDB.Client.1.0.888\lib\net40\Raven.Client.Lightweight.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.ComponentModel.Composition" />
+ <Reference Include="System.Core" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="..\SharedAssemblyInfo.cs">
+ <Link>Properties\SharedAssemblyInfo.cs</Link>
+ </Compile>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
6 src/Raven.Client.ContextualListeners/packages.config
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="Newtonsoft.Json" version="4.0.8" />
+ <package id="NLog" version="2.0.0.2000" />
+ <package id="RavenDB.Client" version="1.0.888" />
+</packages>
4 src/Tests.Raven.Client.ContextualListeners/Properties/AssemblyInfo.cs
@@ -0,0 +1,4 @@
+using System.Reflection;
+
+[assembly: AssemblyTitle("Tests.Raven.Client.ContextualListeners")]
+[assembly: AssemblyDescription("")]
60 src/Tests.Raven.Client.ContextualListeners/Tests.Raven.Client.ContextualListeners.csproj
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{3E060E16-1CE2-430D-B9C3-E78782A040BE}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Tests.Raven.Client.ContextualListeners</RootNamespace>
+ <AssemblyName>Tests.Raven.Client.ContextualListeners</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
+ <RestorePackages>true</RestorePackages>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="xunit">
+ <HintPath>..\packages\xunit.1.8.0.1549\lib\xunit.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="..\SharedAssemblyInfo.cs">
+ <Link>Properties\SharedAssemblyInfo.cs</Link>
+ </Compile>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
4 src/Tests.Raven.Client.ContextualListeners/packages.config
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="xunit" version="1.8.0.1549" />
+</packages>
29 tools/XUnitRunner/EULA.txt
@@ -0,0 +1,29 @@
+This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
+
+1. Definitions
+
+The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
+
+A "contribution" is the original software, or any additions or changes to the software.
+
+A "contributor" is any person that distributes its contribution under this license.
+
+"Licensed patents" are a contributor's patent claims that read directly on its contribution.
+
+2. Grant of Rights
+
+(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
+
+(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
+
+3. Conditions and Limitations
+
+(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
+
+(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
+
+(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
+
+(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
+
+(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
128 tools/XUnitRunner/HTML.xslt
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="html"/>
+ <xsl:template match="/">
+ <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">]]></xsl:text>
+ <html>
+ <head>
+ <title>
+ xUnit.net Test Results - <xsl:value-of select="@name"/>
+ </title>
+ <style type="text/css">
+ body { font-family: Calibri, Verdana, Arial, sans-serif; background-color: White; color: Black; }
+ h2,h3,h4,h5 { margin: 0; padding: 0; }
+ h3 { font-weight: normal; }
+ h5 { font-weight: normal; font-style: italic; margin-bottom: 0.75em; }
+ pre { font-family: Consolas; font-size: 85%; margin: 0 0 0 1em; padding: 0; }
+ .divided { border-top: solid 1px #f0f5fa; padding-top: 0.5em; }
+ .row, .altrow { padding: 0.1em 0.3em; }
+ .row { background-color: #f0f5fa; }
+ .altrow { background-color: #e1ebf4; }
+ .success, .failure, .skipped { font-family: Arial Unicode MS; font-weight: normal; float: left; width: 1em; display: block; }
+ .success { color: #0c0; }
+ .failure { color: #c00; }
+ .skipped { color: #cc0; }
+ .timing { float: right; }
+ .indent { margin: 0.25em 0 0.5em 2em; }
+ .clickable { cursor: pointer; }
+ .testcount { font-size: 85%; }
+ </style>
+ <script language="javascript">
+ function ToggleClass(id) {
+ var elem = document.getElementById(id);
+ if (elem.style.display == "none") {
+ elem.style.display = "block";
+ }
+ else {
+ elem.style.display = "none";
+ }
+ }
+ </script>
+ </head>
+ <body>
+ <xsl:apply-templates/>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="assemblies">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="assembly">
+ <h3 class="divided"><b>Results for <xsl:value-of select="@name"/></b></h3>
+ <div>
+ Tests run: <a href="#all"><b><xsl:value-of select="@total"/></b></a> &#160;
+ Failures: <a href="#failures"><b><xsl:value-of select="@failed"/></b></a>,
+ Skipped: <a href="#skipped"><b><xsl:value-of select="@skipped"/></b></a>,
+ Run time: <b><xsl:value-of select="@time"/>s</b>
+ </div>
+ <xsl:if test="class/test[@result='Fail']">
+ <br />
+ <h2><a name="failures"></a>Failed tests</h2>
+ <xsl:apply-templates select="class/test[@result='Fail']"><xsl:sort select="@name"/></xsl:apply-templates>
+ </xsl:if>
+ <xsl:if test="class/failure">
+ <br />
+ <h2><a name="failures"></a>Failed fixtures</h2>
+ <xsl:apply-templates select="class/failure"><xsl:sort select="../@name"/></xsl:apply-templates>
+ </xsl:if>
+ <xsl:if test="@skipped > 0">
+ <br />
+ <h2><a name="skipped"></a>Skipped tests</h2>
+ <xsl:apply-templates select="class/test[@result='Skip']"><xsl:sort select="@name"/></xsl:apply-templates>
+ </xsl:if>
+ <br />
+ <h2><a name="all"></a>All tests</h2>
+ <h5>Click test class name to expand/collapse test details</h5>
+ <xsl:apply-templates select="class"><xsl:sort select="@name"/></xsl:apply-templates>
+ <br /><h5>Results generated <xsl:value-of select="@run-date"/> at <xsl:value-of select="@run-time"/></h5>
+ </xsl:template>
+
+ <xsl:template match="test">
+ <div>
+ <xsl:attribute name="class"><xsl:if test="(position() mod 2 = 0)">alt</xsl:if>row</xsl:attribute>
+ <xsl:if test="@result!='Skip'"><span class="timing"><xsl:value-of select="@time"/>s</span></xsl:if>
+ <xsl:if test="@result='Skip'"><span class="timing">Skipped</span><span class="skipped">&#x2762;</span></xsl:if>
+ <xsl:if test="@result='Fail'"><span class="failure">&#x2718;</span></xsl:if>
+ <xsl:if test="@result='Pass'"><span class="success">&#x2714;</span></xsl:if>
+ &#160;<xsl:value-of select="@name"/>
+ <xsl:if test="child::node()/message"> : <xsl:value-of select="child::node()/message"/></xsl:if>
+ <br clear="all" />
+ <xsl:if test="failure/stack-trace">
+ <pre><xsl:value-of select="failure/stack-trace"/></pre>
+ </xsl:if>
+ <xsl:if test="output">
+ <h4>Output</h4>
+ <pre><xsl:value-of select="output"/></pre>
+ </xsl:if>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="failure">
+ <span class="failure">&#x2718;</span> <xsl:value-of select="../@name"/> : <xsl:value-of select="message"/><br clear="all"/>
+ Stack Trace:<br />
+ <pre><xsl:value-of select="stack-trace"/></pre>
+ </xsl:template>
+
+ <xsl:template match="class">
+ <h3>
+ <span class="timing"><xsl:value-of select="@time"/>s</span>
+ <span class="clickable">
+ <xsl:attribute name="onclick">ToggleClass('class<xsl:value-of select="position()"/>')</xsl:attribute>
+ <xsl:attribute name="ondblclick">ToggleClass('class<xsl:value-of select="position()"/>')</xsl:attribute>
+ <xsl:if test="@failed > 0"><span class="failure">&#x2718;</span></xsl:if>
+ <xsl:if test="@failed = 0"><span class="success">&#x2714;</span></xsl:if>
+ &#160;<xsl:value-of select="@name"/>
+ &#160;<span class="testcount">(<xsl:value-of select="@total"/>&#160;test<xsl:if test="@total > 1">s</xsl:if>)</span>
+ </span>
+ <br clear="all" />
+ </h3>
+ <div class="indent">
+ <xsl:if test="@failed = 0"><xsl:attribute name="style">display: none;</xsl:attribute></xsl:if>
+ <xsl:attribute name="id">class<xsl:value-of select="position()"/></xsl:attribute>
+ <xsl:apply-templates select="test"><xsl:sort select="@name"/></xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+</xsl:stylesheet>
121 tools/XUnitRunner/NUnitXml.xslt
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output cdata-section-elements="message stack-trace"/>
+
+ <xsl:template match="/">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="assembly">
+ <test-results>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="date">
+ <xsl:value-of select="@run-date"/>
+ </xsl:attribute>
+ <xsl:attribute name="time">
+ <xsl:value-of select="@run-time"/>
+ </xsl:attribute>
+ <xsl:attribute name="total">
+ <xsl:value-of select="@total"/>
+ </xsl:attribute>
+ <xsl:attribute name="failures">
+ <xsl:value-of select="@failed"/>
+ </xsl:attribute>
+ <xsl:attribute name="not-run">
+ <xsl:value-of select="@skipped"/>
+ </xsl:attribute>
+ <test-suite>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="success">
+ <xsl:if test="@failed > 0">False</xsl:if>
+ <xsl:if test="@failed = 0">True</xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="time">
+ <xsl:value-of select="@time"/>
+ </xsl:attribute>
+ <results>
+ <xsl:apply-templates select="class"/>
+ </results>
+ </test-suite>
+ </test-results>
+ </xsl:template>
+
+ <xsl:template match="class">
+ <test-suite>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="success">
+ <xsl:if test="@failed > 0">False</xsl:if>
+ <xsl:if test="@failed = 0">True</xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="time">
+ <xsl:value-of select="@time"/>
+ </xsl:attribute>
+ <xsl:if test="failure">
+ <xsl:copy-of select="failure"/>
+ </xsl:if>
+ <xsl:if test="reason">
+ <reason>
+ <xsl:apply-templates select="reason"/>
+ </reason>
+ </xsl:if>
+ <results>
+ <xsl:apply-templates select="test"/>
+ </results>
+ </test-suite>
+ </xsl:template>
+
+ <xsl:template match="test">
+ <test-case>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="executed">
+ <xsl:if test="@result='Skip'">False</xsl:if>
+ <xsl:if test="@result!='Skip'">True</xsl:if>
+ </xsl:attribute>
+ <xsl:if test="@result!='Skip'">
+ <xsl:attribute name="success">
+ <xsl:if test="@result='Fail'">False</xsl:if>
+ <xsl:if test="@result='Pass'">True</xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@time">
+ <xsl:attribute name="time">
+ <xsl:value-of select="@time"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="traits"/>
+ <xsl:apply-templates select="failure"/>
+ </test-case>
+ </xsl:template>
+
+ <xsl:template match="traits">
+ <properties>
+ <xsl:apply-templates select="trait"/>
+ </properties>
+ </xsl:template>
+
+ <xsl:template match="trait">
+ <property>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="value">
+ <xsl:value-of select="@value"/>
+ </xsl:attribute>
+ </property>
+ </xsl:template>
+
+ <xsl:template match="failure">
+ <failure>
+ <xsl:copy-of select="node()"/>
+ </failure>
+ </xsl:template>
+
+</xsl:stylesheet>
BIN tools/XUnitRunner/Thumbs.db
Binary file not shown.
BIN tools/XUnitRunner/XUnitRunner.nupkg
Binary file not shown.
BIN tools/XUnitRunner/xunit.console.clr4.exe
Binary file not shown.
21 tools/XUnitRunner/xunit.console.clr4.exe.config
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+
+ <configSections>
+ <section name="xunit" type="Xunit.ConsoleClient.XunitConsoleConfigurationSection, xunit.console.clr4"/>
+ </configSections>
+
+ <xunit>
+ <transforms>
+ <add
+ commandline="html"
+ xslfile="HTML.xslt"
+ description="output results to HTML file"/>
+ <add
+ commandline="nunit"
+ xslfile="NUnitXml.xslt"
+ description="output results to NUnit-style XML file"/>
+ </transforms>
+ </xunit>
+
+</configuration>
BIN tools/XUnitRunner/xunit.console.clr4.x86.exe
Binary file not shown.
21 tools/XUnitRunner/xunit.console.clr4.x86.exe.config
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+
+ <configSections>
+ <section name="xunit" type="Xunit.ConsoleClient.XunitConsoleConfigurationSection, xunit.console.clr4.x86"/>
+ </configSections>
+
+ <xunit>
+ <transforms>
+ <add
+ commandline="html"
+ xslfile="HTML.xslt"
+ description="output results to HTML file"/>
+ <add
+ commandline="nunit"
+ xslfile="NUnitXml.xslt"
+ description="output results to NUnit-style XML file"/>
+ </transforms>
+ </xunit>
+
+</configuration>
BIN tools/XUnitRunner/xunit.console.exe
Binary file not shown.
21 tools/XUnitRunner/xunit.console.exe.config
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+
+ <configSections>
+ <section name="xunit" type="Xunit.ConsoleClient.XunitConsoleConfigurationSection, xunit.console"/>
+ </configSections>
+
+ <xunit>
+ <transforms>
+ <add
+ commandline="html"
+ xslfile="HTML.xslt"
+ description="output results to HTML file"/>
+ <add
+ commandline="nunit"
+ xslfile="NUnitXml.xslt"
+ description="output results to NUnit-style XML file"/>
+ </transforms>
+ </xunit>
+
+</configuration>
BIN tools/XUnitRunner/xunit.console.x86.exe
Binary file not shown.
21 tools/XUnitRunner/xunit.console.x86.exe.config
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+
+ <configSections>
+ <section name="xunit" type="Xunit.ConsoleClient.XunitConsoleConfigurationSection, xunit.console.x86"/>
+ </configSections>
+
+ <xunit>
+ <transforms>
+ <add
+ commandline="html"
+ xslfile="HTML.xslt"
+ description="output results to HTML file"/>
+ <add
+ commandline="nunit"
+ xslfile="NUnitXml.xslt"
+ description="output results to NUnit-style XML file"/>
+ </transforms>
+ </xunit>
+
+</configuration>
BIN tools/XUnitRunner/xunit.dll
Binary file not shown.
5 tools/XUnitRunner/xunit.dll.tdnet
@@ -0,0 +1,5 @@
+<TestRunner>
+ <FriendlyName>xUnit.net {0}.{1}.{2} build {3}</FriendlyName>
+ <AssemblyPath>xunit.runner.tdnet.dll</AssemblyPath>
+ <TypeName>Xunit.Runner.TdNet.TdNetRunner</TypeName>
+</TestRunner>
BIN tools/XUnitRunner/xunit.extensions.dll
Binary file not shown.
797 tools/XUnitRunner/xunit.extensions.xml
@@ -0,0 +1,797 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>xunit.extensions</name>
+ </assembly>
+ <members>
+ <member name="T:Xunit.Extensions.Assertions">
+ <summary>
+ A wrapper for Assert which is used by <see cref="T:Xunit.Extensions.TestClass"/>.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Contains``1(``0,System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Verifies that a collection contains a given object.
+ </summary>
+ <typeparam name="T">The type of the object to be verified</typeparam>
+ <param name="expected">The object expected to be in the collection</param>
+ <param name="collection">The collection to be inspected</param>
+ <exception cref="T:Xunit.Sdk.ContainsException">Thrown when the object is not present in the collection</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Contains``1(``0,System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEqualityComparer{``0})">
+ <summary>
+ Verifies that a collection contains a given object, using an equality comparer.
+ </summary>
+ <typeparam name="T">The type of the object to be verified</typeparam>
+ <param name="expected">The object expected to be in the collection</param>
+ <param name="collection">The collection to be inspected</param>
+ <param name="comparer">The comparer used to equate objects in the collection with the expected object</param>
+ <exception cref="T:Xunit.Sdk.ContainsException">Thrown when the object is not present in the collection</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Contains(System.String,System.String)">
+ <summary>
+ Verifies that a string contains a given sub-string, using the current culture.
+ </summary>
+ <param name="expectedSubstring">The sub-string expected to be in the string</param>
+ <param name="actualString">The string to be inspected</param>
+ <exception cref="T:Xunit.Sdk.ContainsException">Thrown when the sub-string is not present inside the string</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Contains(System.String,System.String,System.StringComparison)">
+ <summary>
+ Verifies that a string contains a given sub-string, using the given comparison type.
+ </summary>
+ <param name="expectedSubstring">The sub-string expected to be in the string</param>
+ <param name="actualString">The string to be inspected</param>
+ <param name="comparisonType">The type of string comparison to perform</param>
+ <exception cref="T:Xunit.Sdk.ContainsException">Thrown when the sub-string is not present inside the string</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.DoesNotContain``1(``0,System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Verifies that a collection does not contain a given object.
+ </summary>
+ <typeparam name="T">The type of the object to be compared</typeparam>
+ <param name="expected">The object that is expected not to be in the collection</param>
+ <param name="collection">The collection to be inspected</param>
+ <exception cref="T:Xunit.Sdk.DoesNotContainException">Thrown when the object is present inside the container</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.DoesNotContain``1(``0,System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEqualityComparer{``0})">
+ <summary>
+ Verifies that a collection does not contain a given object, using an equality comparer.
+ </summary>
+ <typeparam name="T">The type of the object to be compared</typeparam>
+ <param name="expected">The object that is expected not to be in the collection</param>
+ <param name="collection">The collection to be inspected</param>
+ <param name="comparer">The comparer used to equate objects in the collection with the expected object</param>
+ <exception cref="T:Xunit.Sdk.DoesNotContainException">Thrown when the object is present inside the container</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.DoesNotContain(System.String,System.String)">
+ <summary>
+ Verifies that a string does not contain a given sub-string, using the current culture.
+ </summary>
+ <param name="expectedSubstring">The sub-string which is expected not to be in the string</param>
+ <param name="actualString">The string to be inspected</param>
+ <exception cref="T:Xunit.Sdk.DoesNotContainException">Thrown when the sub-string is present inside the string</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.DoesNotContain(System.String,System.String,System.StringComparison)">
+ <summary>
+ Verifies that a string does not contain a given sub-string, using the current culture.
+ </summary>
+ <param name="expectedSubstring">The sub-string which is expected not to be in the string</param>
+ <param name="actualString">The string to be inspected</param>
+ <param name="comparisonType">The type of string comparison to perform</param>
+ <exception cref="T:Xunit.Sdk.DoesNotContainException">Thrown when the sub-string is present inside the given string</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.DoesNotThrow(Xunit.Assert.ThrowsDelegate)">
+ <summary>
+ Verifies that a block of code does not throw any exceptions.
+ </summary>
+ <param name="testCode">A delegate to the code to be tested</param>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Empty(System.Collections.IEnumerable)">
+ <summary>
+ Verifies that a collection is empty.
+ </summary>
+ <param name="collection">The collection to be inspected</param>
+ <exception cref="T:System.ArgumentNullException">Thrown when the collection is null</exception>
+ <exception cref="T:Xunit.Sdk.EmptyException">Thrown when the collection is not empty</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Equal``1(``0,``0)">
+ <summary>
+ Verifies that two objects are equal, using a default comparer.
+ </summary>
+ <typeparam name="T">The type of the objects to be compared</typeparam>
+ <param name="expected">The expected value</param>
+ <param name="actual">The value to be compared against</param>
+ <exception cref="T:Xunit.Sdk.EqualException">Thrown when the objects are not equal</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Equal``1(``0,``0,System.Collections.Generic.IEqualityComparer{``0})">
+ <summary>
+ Verifies that two objects are equal, using a custom equatable comparer.
+ </summary>
+ <typeparam name="T">The type of the objects to be compared</typeparam>
+ <param name="expected">The expected value</param>
+ <param name="actual">The value to be compared against</param>
+ <param name="comparer">The comparer used to compare the two objects</param>
+ <exception cref="T:Xunit.Sdk.EqualException">Thrown when the objects are not equal</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Equal(System.Double,System.Double,System.Int32)">
+ <summary>
+ Verifies that two <see cref="T:System.Double"/> values are equal, within the number of decimal
+ places given by <paramref name="precision"/>.
+ </summary>
+ <param name="expected">The expected value</param>
+ <param name="actual">The value to be compared against</param>
+ <param name="precision">The number of decimal places (valid values: 0-15)</param>
+ <exception cref="T:Xunit.Sdk.EqualException">Thrown when the values are not equal</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Equal(System.Decimal,System.Decimal,System.Int32)">
+ <summary>
+ Verifies that two <see cref="T:System.Decimal"/> values are equal, within the number of decimal
+ places given by <paramref name="precision"/>.
+ </summary>
+ <param name="expected">The expected value</param>
+ <param name="actual">The value to be compared against</param>
+ <param name="precision">The number of decimal places (valid values: 0-15)</param>
+ <exception cref="T:Xunit.Sdk.EqualException">Thrown when the values are not equal</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.False(System.Boolean)">
+ <summary>
+ Verifies that the condition is false.
+ </summary>
+ <param name="condition">The condition to be tested</param>
+ <exception cref="T:Xunit.Sdk.FalseException">Thrown if the condition is not false</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.False(System.Boolean,System.String)">
+ <summary>
+ Verifies that the condition is false.
+ </summary>
+ <param name="condition">The condition to be tested</param>
+ <param name="userMessage">The message to show when the condition is not false</param>
+ <exception cref="T:Xunit.Sdk.FalseException">Thrown if the condition is not false</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.InRange``1(``0,``0,``0)">
+ <summary>
+ Verifies that a value is within a given range.
+ </summary>
+ <typeparam name="T">The type of the value to be compared</typeparam>
+ <param name="actual">The actual value to be evaluated</param>
+ <param name="low">The (inclusive) low value of the range</param>
+ <param name="high">The (inclusive) high value of the range</param>
+ <exception cref="T:Xunit.Sdk.InRangeException">Thrown when the value is not in the given range</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.InRange``1(``0,``0,``0,System.Collections.Generic.IComparer{``0})">
+ <summary>
+ Verifies that a value is within a given range, using a comparer.
+ </summary>
+ <typeparam name="T">The type of the value to be compared</typeparam>
+ <param name="actual">The actual value to be evaluated</param>
+ <param name="low">The (inclusive) low value of the range</param>
+ <param name="high">The (inclusive) high value of the range</param>
+ <param name="comparer">The comparer used to evaluate the value's range</param>
+ <exception cref="T:Xunit.Sdk.InRangeException">Thrown when the value is not in the given range</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.IsAssignableFrom``1(System.Object)">
+ <summary>
+ Verifies that an object is of the given type or a derived type.
+ </summary>
+ <typeparam name="T">The type the object should be</typeparam>
+ <param name="object">The object to be evaluated</param>
+ <returns>The object, casted to type T when successful</returns>
+ <exception cref="T:Xunit.Sdk.IsAssignableFromException">Thrown when the object is not the given type</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.IsAssignableFrom(System.Type,System.Object)">
+ <summary>
+ Verifies that an object is of the given type or a derived type.
+ </summary>
+ <param name="expectedType">The type the object should be</param>
+ <param name="object">The object to be evaluated</param>
+ <exception cref="T:Xunit.Sdk.IsAssignableFromException">Thrown when the object is not the given type</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.IsNotType``1(System.Object)">
+ <summary>
+ Verifies that an object is not exactly the given type.
+ </summary>
+ <typeparam name="T">The type the object should not be</typeparam>
+ <param name="object">The object to be evaluated</param>
+ <exception cref="T:Xunit.Sdk.IsNotTypeException">Thrown when the object is the given type</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.IsNotType(System.Type,System.Object)">
+ <summary>
+ Verifies that an object is not exactly the given type.
+ </summary>
+ <param name="expectedType">The type the object should not be</param>
+ <param name="object">The object to be evaluated</param>
+ <exception cref="T:Xunit.Sdk.IsNotTypeException">Thrown when the object is the given type</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.IsType``1(System.Object)">
+ <summary>
+ Verifies that an object is exactly the given type (and not a derived type).
+ </summary>
+ <typeparam name="T">The type the object should be</typeparam>
+ <param name="object">The object to be evaluated</param>
+ <returns>The object, casted to type T when successful</returns>
+ <exception cref="T:Xunit.Sdk.IsTypeException">Thrown when the object is not the given type</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.IsType(System.Type,System.Object)">
+ <summary>
+ Verifies that an object is exactly the given type (and not a derived type).
+ </summary>
+ <param name="expectedType">The type the object should be</param>
+ <param name="object">The object to be evaluated</param>
+ <exception cref="T:Xunit.Sdk.IsTypeException">Thrown when the object is not the given type</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.NotEmpty(System.Collections.IEnumerable)">
+ <summary>
+ Verifies that a collection is not empty.
+ </summary>
+ <param name="collection">The collection to be inspected</param>
+ <exception cref="T:System.ArgumentNullException">Thrown when a null collection is passed</exception>
+ <exception cref="T:Xunit.Sdk.NotEmptyException">Thrown when the collection is empty</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.NotEqual``1(``0,``0)">
+ <summary>
+ Verifies that two objects are not equal, using a default comparer.
+ </summary>
+ <typeparam name="T">The type of the objects to be compared</typeparam>
+ <param name="expected">The expected object</param>
+ <param name="actual">The actual object</param>
+ <exception cref="T:Xunit.Sdk.NotEqualException">Thrown when the objects are equal</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.NotEqual``1(``0,``0,System.Collections.Generic.IEqualityComparer{``0})">
+ <summary>
+ Verifies that two objects are not equal, using a custom equality comparer.
+ </summary>
+ <typeparam name="T">The type of the objects to be compared</typeparam>
+ <param name="expected">The expected object</param>
+ <param name="actual">The actual object</param>
+ <param name="comparer">The comparer used to examine the objects</param>
+ <exception cref="T:Xunit.Sdk.NotEqualException">Thrown when the objects are equal</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.NotInRange``1(``0,``0,``0)">
+ <summary>
+ Verifies that a value is not within a given range, using the default comparer.
+ </summary>
+ <typeparam name="T">The type of the value to be compared</typeparam>
+ <param name="actual">The actual value to be evaluated</param>
+ <param name="low">The (inclusive) low value of the range</param>
+ <param name="high">The (inclusive) high value of the range</param>
+ <exception cref="T:Xunit.Sdk.NotInRangeException">Thrown when the value is in the given range</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.NotInRange``1(``0,``0,``0,System.Collections.Generic.IComparer{``0})">
+ <summary>
+ Verifies that a value is not within a given range, using a comparer.
+ </summary>
+ <typeparam name="T">The type of the value to be compared</typeparam>
+ <param name="actual">The actual value to be evaluated</param>
+ <param name="low">The (inclusive) low value of the range</param>
+ <param name="high">The (inclusive) high value of the range</param>
+ <param name="comparer">The comparer used to evaluate the value's range</param>
+ <exception cref="T:Xunit.Sdk.NotInRangeException">Thrown when the value is in the given range</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.NotNull(System.Object)">
+ <summary>
+ Verifies that an object reference is not null.
+ </summary>
+ <param name="object">The object to be validated</param>
+ <exception cref="T:Xunit.Sdk.NotNullException">Thrown when the object is not null</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.NotSame(System.Object,System.Object)">
+ <summary>
+ Verifies that two objects are not the same instance.
+ </summary>
+ <param name="expected">The expected object instance</param>
+ <param name="actual">The actual object instance</param>
+ <exception cref="T:Xunit.Sdk.NotSameException">Thrown when the objects are the same instance</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Null(System.Object)">
+ <summary>
+ Verifies that an object reference is null.
+ </summary>
+ <param name="object">The object to be inspected</param>
+ <exception cref="T:Xunit.Sdk.NullException">Thrown when the object reference is not null</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Same(System.Object,System.Object)">
+ <summary>
+ Verifies that two objects are the same instance.
+ </summary>
+ <param name="expected">The expected object instance</param>
+ <param name="actual">The actual object instance</param>
+ <exception cref="T:Xunit.Sdk.SameException">Thrown when the objects are not the same instance</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Single(System.Collections.IEnumerable)">
+ <summary>
+ Verifies that the given collection contains only a single
+ element of the given type.
+ </summary>
+ <param name="collection">The collection.</param>
+ <returns>The single item in the collection.</returns>
+ <exception cref="T:Xunit.Sdk.SingleException">Thrown when the collection does not contain
+ exactly one element.</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Single``1(System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Verifies that the given collection contains only a single
+ element of the given type.
+ </summary>
+ <typeparam name="T">The collection type.</typeparam>
+ <param name="collection">The collection.</param>
+ <returns>The single item in the collection.</returns>
+ <exception cref="T:Xunit.Sdk.SingleException">Thrown when the collection does not contain
+ exactly one element.</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Throws``1(Xunit.Assert.ThrowsDelegate)">
+ <summary>
+ Verifies that the exact exception is thrown (and not a derived exception type).
+ </summary>
+ <typeparam name="T">The type of the exception expected to be thrown</typeparam>
+ <param name="testCode">A delegate to the code to be tested</param>
+ <returns>The exception that was thrown, when successful</returns>
+ <exception cref="T:Xunit.Sdk.ThrowsException">Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Throws``1(Xunit.Assert.ThrowsDelegateWithReturn)">
+ <summary>
+ Verifies that the exact exception is thrown (and not a derived exception type).
+ Generally used to test property accessors.
+ </summary>
+ <typeparam name="T">The type of the exception expected to be thrown</typeparam>
+ <param name="testCode">A delegate to the code to be tested</param>
+ <returns>The exception that was thrown, when successful</returns>
+ <exception cref="T:Xunit.Sdk.ThrowsException">Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Throws(System.Type,Xunit.Assert.ThrowsDelegate)">
+ <summary>
+ Verifies that the exact exception is thrown (and not a derived exception type).
+ </summary>
+ <param name="exceptionType">The type of the exception expected to be thrown</param>
+ <param name="testCode">A delegate to the code to be tested</param>
+ <returns>The exception that was thrown, when successful</returns>
+ <exception cref="T:Xunit.Sdk.ThrowsException">Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.Throws(System.Type,Xunit.Assert.ThrowsDelegateWithReturn)">
+ <summary>
+ Verifies that the exact exception is thrown (and not a derived exception type).
+ Generally used to test property accessors.
+ </summary>
+ <param name="exceptionType">The type of the exception expected to be thrown</param>
+ <param name="testCode">A delegate to the code to be tested</param>
+ <returns>The exception that was thrown, when successful</returns>
+ <exception cref="T:Xunit.Sdk.ThrowsException">Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.True(System.Boolean)">
+ <summary>
+ Verifies that an expression is true.
+ </summary>
+ <param name="condition">The condition to be inspected</param>
+ <exception cref="T:Xunit.Sdk.TrueException">Thrown when the condition is false</exception>
+ </member>
+ <member name="M:Xunit.Extensions.Assertions.True(System.Boolean,System.String)">
+ <summary>
+ Verifies that an expression is true.
+ </summary>
+ <param name="condition">The condition to be inspected</param>
+ <param name="userMessage">The message to be shown when the condition is false</param>
+ <exception cref="T:Xunit.Sdk.TrueException">Thrown when the condition is false</exception>
+ </member>
+ <member name="T:Xunit.Extensions.TestClass">
+ <summary>
+ A class which can be derived from for test classes, which bring an overridable version
+ of Assert (using the <see cref="T:Xunit.Extensions.Assertions"/> class.
+ </summary>
+ </member>
+ <member name="P:Xunit.Extensions.TestClass.Assert">
+ <summary>
+ Gets a class which provides assertions.
+ </summary>
+ </member>
+ <member name="T:Xunit.Extensions.AssumeIdentityAttribute">
+ <summary>
+ Apply this attribute to your test method to replace the
+ <see cref="P:System.Threading.Thread.CurrentPrincipal"/> with another role.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.AssumeIdentityAttribute.#ctor(System.String)">
+ <summary>
+ Replaces the identity of the current thread with <paramref name="name"/>.
+ </summary>
+ <param name="name">The role's name</param>
+ </member>
+ <member name="M:Xunit.Extensions.AssumeIdentityAttribute.After(System.Reflection.MethodInfo)">
+ <summary>
+ Restores the original <see cref="P:System.Threading.Thread.CurrentPrincipal"/>.
+ </summary>
+ <param name="methodUnderTest">The method under test</param>
+ </member>
+ <member name="M:Xunit.Extensions.AssumeIdentityAttribute.Before(System.Reflection.MethodInfo)">
+ <summary>
+ Stores the current <see cref="P:System.Threading.Thread.CurrentPrincipal"/> and replaces it with
+ a new role identified in constructor.
+ </summary>
+ <param name="methodUnderTest">The method under test</param>
+ </member>
+ <member name="P:Xunit.Extensions.AssumeIdentityAttribute.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="T:Xunit.Extensions.AutoRollbackAttribute">
+ <summary>
+ Apply this attribute to your test method to automatically create a
+ <see cref="T:System.Transactions.TransactionScope"/> that is rolled back when the test is
+ finished.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.AutoRollbackAttribute.After(System.Reflection.MethodInfo)">
+ <summary>
+ Rolls back the transaction.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.AutoRollbackAttribute.Before(System.Reflection.MethodInfo)">
+ <summary>
+ Creates the transaction.
+ </summary>
+ </member>
+ <member name="P:Xunit.Extensions.AutoRollbackAttribute.IsolationLevel">
+ <summary>
+ Gets or sets the isolation level of the transaction.
+ Default value is <see cref="P:Xunit.Extensions.AutoRollbackAttribute.IsolationLevel"/>.Unspecified.
+ </summary>
+ </member>
+ <member name="P:Xunit.Extensions.AutoRollbackAttribute.ScopeOption">
+ <summary>
+ Gets or sets the scope option for the transaction.
+ Default value is <see cref="T:System.Transactions.TransactionScopeOption"/>.Required.
+ </summary>
+ </member>
+ <member name="P:Xunit.Extensions.AutoRollbackAttribute.TimeoutInMS">
+ <summary>
+ Gets or sets the timeout of the transaction, in milliseconds.
+ By default, the transaction will not timeout.
+ </summary>
+ </member>
+ <member name="T:Xunit.Extensions.ClassDataAttribute">
+ <summary>
+ Provides a data source for a data theory, with the data coming from a class
+ which must implement IEnumerable&lt;object[]&gt;.
+ </summary>
+ </member>
+ <member name="T:Xunit.Extensions.DataAttribute">
+ <summary>
+ Abstract attribute which represents a data source for a data theory.
+ Data source providers derive from this attribute and implement GetData
+ to return the data for the theory.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.DataAttribute.GetData(System.Reflection.MethodInfo,System.Type[])">
+ <summary>
+ Returns the data to be used to test the theory.
+ </summary>
+ <remarks>
+ The <paramref name="parameterTypes"/> parameter is provided so that the
+ test data can be converted to the destination parameter type when necessary.
+ Generally, data should NOT be automatically converted, UNLESS the source data
+ format does not have rich types (for example, all numbers in Excel spreadsheets
+ are returned as <see cref="T:System.Double"/> even if they are integers). Derivers of
+ this class should NOT throw exceptions for mismatched types or mismatched number
+ of parameters; the test framework will throw these exceptions at the correct
+ time.
+ </remarks>
+ <param name="methodUnderTest">The method that is being tested</param>
+ <param name="parameterTypes">The types of the parameters for the test method</param>
+ <returns>The theory data</returns>
+ </member>
+ <member name="P:Xunit.Extensions.DataAttribute.TypeId">
+ <inheritdoc/>
+ </member>
+ <member name="M:Xunit.Extensions.ClassDataAttribute.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Xunit.Extensions.ClassDataAttribute"/> class.
+ </summary>
+ <param name="class">The class that provides the data.</param>
+ </member>
+ <member name="M:Xunit.Extensions.ClassDataAttribute.GetData(System.Reflection.MethodInfo,System.Type[])">
+ <inheritdoc/>
+ </member>
+ <member name="P:Xunit.Extensions.ClassDataAttribute.Class">
+ <summary>
+ Gets the type of the class that provides the data.
+ </summary>
+ </member>
+ <member name="T:Xunit.Extensions.DataAdapterDataAttribute">
+ <summary>
+ Represents an implementation of <see cref="T:Xunit.Extensions.DataAttribute"/> which uses an
+ instance of <see cref="T:System.Data.IDataAdapter"/> to get the data for a <see cref="T:Xunit.Extensions.TheoryAttribute"/>
+ decorated test method.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.DataAdapterDataAttribute.GetData(System.Reflection.MethodInfo,System.Type[])">
+ <inheritdoc/>
+ </member>
+ <member name="M:Xunit.Extensions.DataAdapterDataAttribute.ConvertParameter(System.Object,System.Type)">
+ <summary>
+ Converts a parameter to its destination parameter type, if necessary.
+ </summary>
+ <param name="parameter">The parameter value</param>
+ <param name="parameterType">The destination parameter type (null if not known)</param>
+ <returns>The converted parameter value</returns>
+ </member>
+ <member name="P:Xunit.Extensions.DataAdapterDataAttribute.DataAdapter">
+ <summary>
+ Gets the data adapter to be used to retrieve the test data.
+ </summary>
+ </member>
+ <member name="T:Xunit.Extensions.InlineDataAttribute">
+ <summary>
+ Provides a data source for a data theory, with the data coming from inline values.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.InlineDataAttribute.#ctor(System.Object[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:Xunit.Extensions.InlineDataAttribute"/> class.
+ </summary>
+ <param name="dataValues">The data values to pass to the theory</param>
+ </member>
+ <member name="M:Xunit.Extensions.InlineDataAttribute.GetData(System.Reflection.MethodInfo,System.Type[])">
+ <summary>
+ Returns the data to be used to test the theory.
+ </summary>
+ <param name="methodUnderTest">The method that is being tested</param>
+ <param name="parameterTypes">The types of the parameters for the test method</param>
+ <returns>The theory data, in table form</returns>
+ </member>
+ <member name="P:Xunit.Extensions.InlineDataAttribute.DataValues">
+ <summary>
+ Gets the data values.
+ </summary>
+ </member>
+ <member name="T:Xunit.Extensions.OleDbDataAttribute">
+ <summary>
+ Provides a data source for a data theory, with the data coming from an OLEDB connection.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.OleDbDataAttribute.#ctor(System.String,System.String)">
+ <summary>
+ Creates a new instance of <see cref="T:Xunit.Extensions.OleDbDataAttribute"/>.
+ </summary>
+ <param name="connectionString">The OLEDB connection string to the data</param>
+ <param name="selectStatement">The SELECT statement used to return the data for the theory</param>
+ </member>
+ <member name="P:Xunit.Extensions.OleDbDataAttribute.ConnectionString">
+ <summary>
+ Gets the connection string.
+ </summary>
+ </member>
+ <member name="P:Xunit.Extensions.OleDbDataAttribute.SelectStatement">
+ <summary>
+ Gets the select statement.
+ </summary>
+ </member>
+ <member name="P:Xunit.Extensions.OleDbDataAttribute.DataAdapter">
+ <inheritdoc/>
+ </member>
+ <member name="T:Xunit.Extensions.PropertyDataAttribute">
+ <summary>
+ Provides a data source for a data theory, with the data coming from a public static property on the test class.
+ The property must return IEnumerable&lt;object[]&gt; with the test data.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.PropertyDataAttribute.#ctor(System.String)">
+ <summary>
+ Creates a new instance of <see cref="T:Xunit.Extensions.PropertyDataAttribute"/>/
+ </summary>
+ <param name="propertyName">The name of the public static property on the test class that will provide the test data</param>
+ </member>
+ <member name="M:Xunit.Extensions.PropertyDataAttribute.GetData(System.Reflection.MethodInfo,System.Type[])">
+ <summary>
+ Returns the data to be used to test the theory.
+ </summary>
+ <param name="methodUnderTest">The method that is being tested</param>
+ <param name="parameterTypes">The types of the parameters for the test method</param>
+ <returns>The theory data, in table form</returns>
+ </member>
+ <member name="P:Xunit.Extensions.PropertyDataAttribute.PropertyName">
+ <summary>
+ Gets the property name.
+ </summary>
+ </member>
+ <member name="T:Xunit.Extensions.SqlServerDataAttribute">
+ <summary>
+ Provides a data source for a data theory, with the data coming a Microsoft SQL Server.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.SqlServerDataAttribute.#ctor(System.String,System.String,System.String)">
+ <summary>
+ Creates a new instance of <see cref="T:Xunit.Extensions.SqlServerDataAttribute"/>, using a trusted connection.
+ </summary>
+ <param name="serverName">The server name of the Microsoft SQL Server</param>
+ <param name="databaseName">The database name</param>
+ <param name="selectStatement">The SQL SELECT statement to return the data for the data theory</param>
+ </member>
+ <member name="M:Xunit.Extensions.SqlServerDataAttribute.#ctor(System.String,System.String,System.String,System.String,System.String)">
+ <summary>
+ Creates a new instance of <see cref="T:Xunit.Extensions.SqlServerDataAttribute"/>, using the provided username and password.
+ </summary>
+ <param name="serverName">The server name of the Microsoft SQL Server</param>
+ <param name="databaseName">The database name</param>
+ <param name="username">The username for the server</param>
+ <param name="password">The password for the server</param>
+ <param name="selectStatement">The SQL SELECT statement to return the data for the data theory</param>
+ </member>
+ <member name="T:Xunit.Extensions.ExcelDataAttribute">
+ <summary>
+ Provides a data source for a data theory, with the data coming a Microsoft Excel (.xls) spreadsheet.
+ </summary>
+ </member>
+ <member name="M:Xunit.Extensions.ExcelDataAttribute.#ctor(System.String,System.String)">
+ <summary>
+ Creates a new instance of <see cref="T:Xunit.Extensions.ExcelDataAttribute"/>.
+ </summary>
+ <param name="filename">The filename of the XLS spreadsheet file; if the filename provided
+ is relative, then it is relative to the location of xunit.extensions.dll.</param>
+ <param name="selectStatement">The SELECT statement that returns the data for the theory</param>
+ </member>
+ <member name="M:Xunit.Extensions.ExcelDataAttribute.ConvertParameter(System.Object,System.Type)">
+ <inheritdoc/>
+ </member>
+ <member name="T:Xunit.Extensions.Clock">
+ <summary>
+ A wrapper around the static operations on <see cref="T:System.DateTime"/> which allows time
+ to be frozen using the <see cref="T:Xunit.Extensions.FreezeClockAttribute"/>. The clock begins in the
+ thawed state; that is, calls to <see cref="P:Xunit.Extensions.Clock.Now"/>, <see cref=