├── Build ├── build.ps1 └── default.ps1 ├── packages ├── psake.4.0.1.0 │ └── tools │ │ ├── specs │ │ ├── duplicate_tasks_should_fail.ps1 │ │ ├── circular_dependency_in_tasks_should_fail.ps1 │ │ ├── using_msbuild_should_pass.ps1 │ │ ├── nested │ │ │ ├── nested1.ps1 │ │ │ └── nested2.ps1 │ │ ├── dotNet4_should_pass.ps1 │ │ ├── missing_task_should_fail.ps1 │ │ ├── default_task_with_action_should_fail.ps1 │ │ ├── explicitly_specified_32bit_build_should_pass.ps1 │ │ ├── multiline_blocks_should_pass.ps1 │ │ ├── using_postcondition_should_pass.ps1 │ │ ├── failing_postcondition_should_fail.ps1 │ │ ├── using_parameters_should_pass.ps1 │ │ ├── using_precondition_should_pass.ps1 │ │ ├── calling_invoke-task_should_pass.ps1 │ │ ├── bad_PreAndPostActions_should_fail.ps1 │ │ ├── running_aspnet_compiler_under_dotNet35_should_pass.ps1 │ │ ├── tasksetup_should_pass.ps1 │ │ ├── using_PreAndPostActions_should_pass.ps1 │ │ ├── using_properties_should_pass.ps1 │ │ ├── nested_builds_should_pass.ps1 │ │ ├── simple_properties_and_tasks_should_pass.ps1 │ │ └── writing_psake_variables_should_pass.ps1 │ │ ├── images │ │ ├── psake.pdn │ │ ├── psake.png │ │ ├── SakeBottle.jpg │ │ └── SakeBottleLicense.txt │ │ ├── examples │ │ ├── nested │ │ │ ├── nested1.ps1 │ │ │ └── nested2.ps1 │ │ ├── passingParametersString │ │ │ ├── build.Release.Version.bat │ │ │ └── parameters.ps1 │ │ ├── parameters.ps1 │ │ ├── continueonerror.ps1 │ │ ├── preandpostaction.ps1 │ │ ├── nested.ps1 │ │ ├── properties.ps1 │ │ ├── formattaskname_string.ps1 │ │ ├── default.ps1 │ │ ├── formattaskname_scriptblock.ps1 │ │ └── checkvariables.ps1 │ │ ├── psake-help.ps1 │ │ ├── init.ps1 │ │ ├── psake.cmd │ │ ├── chocolateyInstall.ps1 │ │ ├── psake.ps1 │ │ ├── tabexpansion │ │ ├── PsakeTabExpansion.ps1 │ │ └── Readme.PsakeTab.txt │ │ ├── psake-config.ps1 │ │ ├── psake-buildTester.ps1 │ │ └── README.markdown ├── NUnit.2.5.9.10348 │ ├── Tools │ │ ├── runpnunit.bat │ │ ├── nunit.exe │ │ ├── agent.conf │ │ ├── lib │ │ │ ├── fit.dll │ │ │ ├── Failure.png │ │ │ ├── Ignored.png │ │ │ ├── Skipped.png │ │ │ ├── Success.png │ │ │ ├── log4net.dll │ │ │ ├── nunit.core.dll │ │ │ ├── nunit.util.dll │ │ │ ├── Inconclusive.png │ │ │ ├── nunit.uikit.dll │ │ │ ├── nunit.fixtures.dll │ │ │ ├── nunit-gui-runner.dll │ │ │ ├── nunit.uiexception.dll │ │ │ ├── nunit-console-runner.dll │ │ │ └── nunit.core.interfaces.dll │ │ ├── nunit-x86.exe │ │ ├── runFile.exe │ │ ├── nunit-agent.exe │ │ ├── nunit-console.exe │ │ ├── pnunit-agent.exe │ │ ├── pnunit.tests.dll │ │ ├── nunit-agent-x86.exe │ │ ├── nunit.framework.dll │ │ ├── pnunit-launcher.exe │ │ ├── pnunit.framework.dll │ │ ├── nunit-console-x86.exe │ │ ├── agent.log.conf │ │ ├── launcher.log.conf │ │ ├── NUnitTests.nunit │ │ ├── test.conf │ │ ├── runFile.exe.config │ │ ├── nunit-console.exe.config │ │ ├── nunit-agent.exe.config │ │ ├── nunit-console-x86.exe.config │ │ ├── nunit-agent-x86.exe.config │ │ ├── pnunit-agent.exe.config │ │ ├── pnunit-launcher.exe.config │ │ ├── nunit.exe.config │ │ ├── nunit-x86.exe.config │ │ ├── NUnitTests.config │ │ └── NUnitFitTests.html │ ├── Logo.ico │ ├── license.txt │ ├── lib │ │ ├── nunit.mocks.dll │ │ ├── nunit.framework.dll │ │ └── pnunit.framework.dll │ └── NUnitFitTests.html ├── repositories.config ├── NuGet.CommandLine.1.4.20615.182 │ └── tools │ │ └── NuGet.exe └── Unity.2.0 │ └── lib │ ├── 20 │ ├── Microsoft.Practices.Unity.dll │ ├── Microsoft.Practices.ServiceLocation.dll │ ├── Microsoft.Practices.Unity.Interception.dll │ ├── Microsoft.Practices.Unity.Configuration.dll │ └── Microsoft.Practices.Unity.Interception.Configuration.dll │ └── SL30 │ ├── Microsoft.Practices.ServiceLocation.dll │ └── Microsoft.Practices.Unity.Silverlight.dll ├── Src ├── packages │ ├── NUnit.2.5.9.10348 │ │ ├── Tools │ │ │ ├── runpnunit.bat │ │ │ ├── agent.conf │ │ │ ├── nunit.exe │ │ │ ├── lib │ │ │ │ ├── fit.dll │ │ │ │ ├── Failure.png │ │ │ │ ├── Ignored.png │ │ │ │ ├── Skipped.png │ │ │ │ ├── Success.png │ │ │ │ ├── log4net.dll │ │ │ │ ├── nunit.core.dll │ │ │ │ ├── nunit.uikit.dll │ │ │ │ ├── nunit.util.dll │ │ │ │ ├── Inconclusive.png │ │ │ │ ├── nunit-gui-runner.dll │ │ │ │ ├── nunit.fixtures.dll │ │ │ │ ├── nunit.uiexception.dll │ │ │ │ ├── nunit-console-runner.dll │ │ │ │ └── nunit.core.interfaces.dll │ │ │ ├── runFile.exe │ │ │ ├── nunit-x86.exe │ │ │ ├── nunit-agent.exe │ │ │ ├── pnunit-agent.exe │ │ │ ├── pnunit.tests.dll │ │ │ ├── nunit-agent-x86.exe │ │ │ ├── nunit-console.exe │ │ │ ├── nunit.framework.dll │ │ │ ├── pnunit-launcher.exe │ │ │ ├── nunit-console-x86.exe │ │ │ ├── pnunit.framework.dll │ │ │ ├── agent.log.conf │ │ │ ├── launcher.log.conf │ │ │ ├── NUnitTests.nunit │ │ │ ├── test.conf │ │ │ ├── runFile.exe.config │ │ │ ├── nunit-console.exe.config │ │ │ ├── nunit-agent.exe.config │ │ │ ├── nunit-console-x86.exe.config │ │ │ ├── nunit-agent-x86.exe.config │ │ │ ├── pnunit-agent.exe.config │ │ │ ├── pnunit-launcher.exe.config │ │ │ ├── nunit.exe.config │ │ │ ├── nunit-x86.exe.config │ │ │ ├── NUnitTests.config │ │ │ └── NUnitFitTests.html │ │ ├── Logo.ico │ │ ├── license.txt │ │ ├── lib │ │ │ ├── nunit.mocks.dll │ │ │ ├── nunit.framework.dll │ │ │ └── pnunit.framework.dll │ │ ├── NUnit.2.5.9.10348.nupkg │ │ └── NUnitFitTests.html │ ├── Unity.2.0 │ │ ├── Unity.2.0.nupkg │ │ └── lib │ │ │ ├── 20 │ │ │ ├── Microsoft.Practices.Unity.dll │ │ │ ├── Microsoft.Practices.ServiceLocation.dll │ │ │ ├── Microsoft.Practices.Unity.Configuration.dll │ │ │ ├── Microsoft.Practices.Unity.Interception.dll │ │ │ └── Microsoft.Practices.Unity.Interception.Configuration.dll │ │ │ └── SL30 │ │ │ ├── Microsoft.Practices.ServiceLocation.dll │ │ │ └── Microsoft.Practices.Unity.Silverlight.dll │ └── repositories.config ├── ActivatorServiceProvider.cs ├── Pipeline │ ├── IFilter.cs │ ├── EndOfChainException.cs │ ├── PipelineExtensions.cs │ ├── Extensions │ │ ├── TypeConfigurationPipelineExtensions.cs │ │ └── AssemblyPipelineExtensions.cs │ ├── Pipeline.cs │ └── PipelineFunc.cs ├── Configuration │ ├── TypeConfigurationLinqExtensions.cs │ ├── TypeCollectionConfigurationSection.cs │ ├── TypeConfigurationElementCollection.cs │ └── TypeConfigurationElement.cs ├── Properties │ └── AssemblyInfo.cs └── Tamarack.csproj ├── Test ├── packages.config ├── Pipeline │ ├── ShortCircuit.cs │ ├── Extensions │ │ ├── AppendCaretToOutput.cs │ │ ├── AppendAsteriskToOutput.cs │ │ ├── AddFiltersInAppConfigTests.cs │ │ └── AddFiltersInAssemblyTests.cs │ ├── AddToInput.cs │ ├── AppendToOutput.cs │ ├── InceptionTests.cs │ ├── FinallyTests.cs │ ├── PipelineTests.cs │ └── PipelineFuncTests.cs ├── UnityServiceProvider.cs ├── Configuration │ ├── TypeConfigurationLinqExtensions.cs │ └── TypeConfigurationSectionTests.cs ├── App.config ├── Properties │ └── AssemblyInfo.cs └── Tamarack.Test.csproj ├── Example ├── Pipeline │ ├── BlogEngine │ │ ├── IBlogRepository.cs │ │ ├── Post.cs │ │ ├── Filters │ │ │ ├── CanoncalizeHtml.cs │ │ │ ├── RemoveJavascript.cs │ │ │ ├── RewriteProfanity.cs │ │ │ ├── StripMaliciousTags.cs │ │ │ └── GuardAgainstDoublePost.cs │ │ └── BlogEngine.cs │ ├── LoginService │ │ ├── LoginContext.cs │ │ ├── Filters │ │ │ ├── AuthenticateAgainstLdap.cs │ │ │ ├── LockoutOnConsecutiveFailures.cs │ │ │ ├── WriteLoginAttemptToAuditLog.cs │ │ │ └── AuthenticateAgainstLocalStore.cs │ │ └── LoginService.cs │ └── SpamScorer │ │ ├── Filters │ │ ├── SpamCopBlacklistFilter.cs │ │ ├── PornographyFilter.cs │ │ └── PerspcriptionDrugFilter.cs │ │ └── SpamScorer.cs ├── Properties │ └── AssemblyInfo.cs └── Tamarack.Example.csproj ├── How to build.txt ├── .gitignore ├── Tamarack.nuspec ├── Tamarack.sln ├── LICENSE.txt └── README.markdown /Build/build.ps1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Build/build.ps1 -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/duplicate_tasks_should_fail.ps1: -------------------------------------------------------------------------------- 1 | task A {} 2 | task B {} 3 | task A {} -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/runpnunit.bat: -------------------------------------------------------------------------------- 1 | start pnunit-agent agent.conf 2 | pnunit-launcher test.conf -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/runpnunit.bat: -------------------------------------------------------------------------------- 1 | start pnunit-agent agent.conf 2 | pnunit-launcher test.conf -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Logo.ico -------------------------------------------------------------------------------- /Src/packages/Unity.2.0/Unity.2.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/Unity.2.0/Unity.2.0.nupkg -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/license.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/license.txt -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Logo.ico -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/license.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/license.txt -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/nunit.exe -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/agent.conf: -------------------------------------------------------------------------------- 1 | 2 | 8080 3 | . 4 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/nunit.exe -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/agent.conf: -------------------------------------------------------------------------------- 1 | 2 | 8080 3 | . 4 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/fit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/fit.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit-x86.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/nunit-x86.exe -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/runFile.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/runFile.exe -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/lib/nunit.mocks.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/lib/nunit.mocks.dll -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/images/psake.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/psake.4.0.1.0/tools/images/psake.pdn -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/images/psake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/psake.4.0.1.0/tools/images/psake.png -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/fit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/fit.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/runFile.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/runFile.exe -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/Failure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/Failure.png -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/Ignored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/Ignored.png -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/Skipped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/Skipped.png -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/Success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/Success.png -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/log4net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/log4net.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit-agent.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/nunit-agent.exe -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit-x86.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/nunit-x86.exe -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/lib/nunit.mocks.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/lib/nunit.mocks.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/nunit.core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/nunit.core.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/nunit.util.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/nunit.util.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit-console.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/nunit-console.exe -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/pnunit-agent.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/pnunit-agent.exe -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/pnunit.tests.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/pnunit.tests.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/lib/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/lib/nunit.framework.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/lib/pnunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/lib/pnunit.framework.dll -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/images/SakeBottle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/psake.4.0.1.0/tools/images/SakeBottle.jpg -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/Failure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/Failure.png -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/Ignored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/Ignored.png -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/Skipped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/Skipped.png -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/Success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/Success.png -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/log4net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/log4net.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit-agent.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/nunit-agent.exe -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/pnunit-agent.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/pnunit-agent.exe -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/pnunit.tests.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/pnunit.tests.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/Inconclusive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/Inconclusive.png -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/nunit.uikit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/nunit.uikit.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit-agent-x86.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/nunit-agent-x86.exe -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/nunit.framework.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/pnunit-launcher.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/pnunit-launcher.exe -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/pnunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/pnunit.framework.dll -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/circular_dependency_in_tasks_should_fail.ps1: -------------------------------------------------------------------------------- 1 | task default -depends A 2 | task A -depends B { } 3 | task B -depends A { } 4 | -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/using_msbuild_should_pass.ps1: -------------------------------------------------------------------------------- 1 | task default -depends DisplayNotice 2 | task DisplayNotice { 3 | exec { msbuild /version } 4 | } -------------------------------------------------------------------------------- /packages/repositories.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/NUnit.2.5.9.10348.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/NUnit.2.5.9.10348.nupkg -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.core.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.uikit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.uikit.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.util.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.util.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit-agent-x86.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/nunit-agent-x86.exe -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit-console.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/nunit-console.exe -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/nunit.framework.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/pnunit-launcher.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/pnunit-launcher.exe -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/lib/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/lib/nunit.framework.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/lib/pnunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/lib/pnunit.framework.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/nunit.fixtures.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/nunit.fixtures.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit-console-x86.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/nunit-console-x86.exe -------------------------------------------------------------------------------- /packages/NuGet.CommandLine.1.4.20615.182/tools/NuGet.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NuGet.CommandLine.1.4.20615.182/tools/NuGet.exe -------------------------------------------------------------------------------- /packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/Inconclusive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/Inconclusive.png -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit-console-x86.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/nunit-console-x86.exe -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/pnunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/pnunit.framework.dll -------------------------------------------------------------------------------- /Src/packages/repositories.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/nunit-gui-runner.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/nunit-gui-runner.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/nunit.uiexception.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/nunit.uiexception.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit-gui-runner.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit-gui-runner.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.fixtures.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.fixtures.dll -------------------------------------------------------------------------------- /Src/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/nunit-console-runner.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/nunit-console-runner.dll -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/nested/nested1.ps1: -------------------------------------------------------------------------------- 1 | Properties { $x = 100 } Task default -Depends Nested1CheckX Task Nested1CheckX{ Assert ($x -eq 100) '$x was not 100' } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/nested/nested2.ps1: -------------------------------------------------------------------------------- 1 | Properties { $x = 200 } Task default -Depends Nested2CheckX Task Nested2CheckX{ Assert ($x -eq 200) '$x was not 200' } -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.uiexception.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.uiexception.dll -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/lib/nunit.core.interfaces.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/NUnit.2.5.9.10348/Tools/lib/nunit.core.interfaces.dll -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/nested/nested1.ps1: -------------------------------------------------------------------------------- 1 | Properties { $x = 100 } Task default -Depends Nested1CheckX Task Nested1CheckX{ Assert ($x -eq 100) '$x was not 100' } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/nested/nested2.ps1: -------------------------------------------------------------------------------- 1 | Properties { $x = 200 } Task default -Depends Nested2CheckX Task Nested2CheckX{ Assert ($x -eq 200) '$x was not 200' } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/dotNet4_should_pass.ps1: -------------------------------------------------------------------------------- 1 | $framework = '4.0' 2 | 3 | task default -depends MsBuild 4 | 5 | task MsBuild { 6 | exec { msbuild /version } 7 | } 8 | -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/missing_task_should_fail.ps1: -------------------------------------------------------------------------------- 1 | task default -depends Test 2 | 3 | task Test -depends Compile, Clean { 4 | Write-Host "Running PSake" 5 | } 6 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit-console-runner.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit-console-runner.dll -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.core.interfaces.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/NUnit.2.5.9.10348/Tools/lib/nunit.core.interfaces.dll -------------------------------------------------------------------------------- /Test/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/Unity.2.0/lib/20/Microsoft.Practices.ServiceLocation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/Unity.2.0/lib/20/Microsoft.Practices.ServiceLocation.dll -------------------------------------------------------------------------------- /Example/Pipeline/BlogEngine/IBlogRepository.cs: -------------------------------------------------------------------------------- 1 | namespace Tamarack.Example.Pipeline.BlogEngine 2 | { 3 | public interface IBlogRepository 4 | { 5 | int Save(Post post); 6 | } 7 | } -------------------------------------------------------------------------------- /packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.dll -------------------------------------------------------------------------------- /packages/Unity.2.0/lib/SL30/Microsoft.Practices.ServiceLocation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/Unity.2.0/lib/SL30/Microsoft.Practices.ServiceLocation.dll -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/default_task_with_action_should_fail.ps1: -------------------------------------------------------------------------------- 1 | task default { 2 | "Starting to do stuff..." 3 | "Adding stuff... 1 + 1 =" + (1+1) 4 | "Stuff done!" 5 | } -------------------------------------------------------------------------------- /Src/packages/Unity.2.0/lib/20/Microsoft.Practices.ServiceLocation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/Unity.2.0/lib/20/Microsoft.Practices.ServiceLocation.dll -------------------------------------------------------------------------------- /Src/packages/Unity.2.0/lib/SL30/Microsoft.Practices.ServiceLocation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/Unity.2.0/lib/SL30/Microsoft.Practices.ServiceLocation.dll -------------------------------------------------------------------------------- /packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Configuration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Configuration.dll -------------------------------------------------------------------------------- /packages/Unity.2.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/Unity.2.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.dll -------------------------------------------------------------------------------- /Src/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Configuration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Configuration.dll -------------------------------------------------------------------------------- /Src/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.dll -------------------------------------------------------------------------------- /Src/packages/Unity.2.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/Unity.2.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.dll -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/explicitly_specified_32bit_build_should_pass.ps1: -------------------------------------------------------------------------------- 1 | $framework = '3.5x86' 2 | 3 | task default -depends MsBuild 4 | 5 | task MsBuild { 6 | exec { msbuild /version } 7 | } 8 | -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/multiline_blocks_should_pass.ps1: -------------------------------------------------------------------------------- 1 | task default -depends doStuff 2 | task doStuff { 3 | "Starting to do stuff..." 4 | "Adding stuff... 1 + 1 =" + (1+1) 5 | "Stuff done!" 6 | } -------------------------------------------------------------------------------- /packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.Configuration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.Configuration.dll -------------------------------------------------------------------------------- /Src/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.Configuration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikevalenty/tamarack/HEAD/Src/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.Configuration.dll -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/passingParametersString/build.Release.Version.bat: -------------------------------------------------------------------------------- 1 | powershell -Command "& {Import-Module .\..\..\psake.psm1; Invoke-psake .\parameters.ps1 -parameters @{"buildConfiguration"='Release';} }" 2 | 3 | Pause -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/parameters.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $my_property = $p1 + $p2 3 | } 4 | 5 | task default -depends TestParams 6 | 7 | task TestParams { 8 | Assert ($my_property -ne $null) '$my_property should not be null' 9 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/using_postcondition_should_pass.ps1: -------------------------------------------------------------------------------- 1 | task default -depends A,B,C 2 | 3 | task A { 4 | "TaskA" 5 | } 6 | 7 | task B -postcondition { return $true } { 8 | "TaskB" 9 | } 10 | 11 | task C { 12 | "TaskC" 13 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/failing_postcondition_should_fail.ps1: -------------------------------------------------------------------------------- 1 | task default -depends A,B,C 2 | 3 | task A { 4 | "TaskA" 5 | } 6 | 7 | task B -postcondition { return $false } { 8 | "TaskB" 9 | } 10 | 11 | task C { 12 | "TaskC" 13 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/using_parameters_should_pass.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $my_property = $p1 + $p2 3 | } 4 | 5 | task default -depends TestParams 6 | 7 | task TestParams { 8 | Assert ($my_property -ne $null) '$my_property should not be null' 9 | } -------------------------------------------------------------------------------- /Example/Pipeline/BlogEngine/Post.cs: -------------------------------------------------------------------------------- 1 | namespace Tamarack.Example.Pipeline.BlogEngine 2 | { 3 | public class Post 4 | { 5 | public int PostId { get; set; } 6 | 7 | public int BlogId { get; set; } 8 | 9 | public string Text { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/using_precondition_should_pass.ps1: -------------------------------------------------------------------------------- 1 | task default -depends A,B,C 2 | 3 | task A { 4 | "TaskA" 5 | } 6 | 7 | task B -precondition { return $false } { 8 | "TaskB" 9 | } 10 | 11 | task C -precondition { return $true } { 12 | "TaskC" 13 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/calling_invoke-task_should_pass.ps1: -------------------------------------------------------------------------------- 1 | task default -depends A,B 2 | 3 | task A { 4 | } 5 | 6 | task B { 7 | "inside task B before calling task C" 8 | invoke-task C 9 | "inside task B after calling task C" 10 | } 11 | 12 | task C { 13 | } -------------------------------------------------------------------------------- /Src/ActivatorServiceProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Tamarack 4 | { 5 | public class ActivatorServiceProvider : IServiceProvider 6 | { 7 | public object GetService(Type serviceType) 8 | { 9 | return Activator.CreateInstance(serviceType); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/psake-help.ps1: -------------------------------------------------------------------------------- 1 | # Helper script to return help text. 2 | 3 | remove-module psake -ea 'SilentlyContinue' 4 | $scriptPath = Split-Path -parent $MyInvocation.MyCommand.path 5 | import-module (join-path $scriptPath psake.psm1) 6 | Get-Help Invoke-psake -full 7 | exit $lastexitcode -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/bad_PreAndPostActions_should_fail.ps1: -------------------------------------------------------------------------------- 1 | task default -depends Test 2 | 3 | task Test -depends Compile, Clean -PreAction {"Pre-Test"} -PostAction {"Post-Test"} 4 | 5 | task Compile -depends Clean { 6 | "Compile" 7 | } 8 | 9 | task Clean { 10 | "Clean" 11 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/continueonerror.ps1: -------------------------------------------------------------------------------- 1 | Task default -Depends TaskA 2 | 3 | Task TaskA -Depends TaskB { 4 | "Task - A" 5 | } 6 | 7 | Task TaskB -Depends TaskC -ContinueOnError { 8 | "Task - B" 9 | throw "I failed on purpose!" 10 | } 11 | 12 | Task TaskC { 13 | "Task - C" 14 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/init.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package) 2 | 3 | $psakeModule = Join-Path $toolsPath psake.psm1 4 | import-module $psakeModule 5 | 6 | @" 7 | ======================== 8 | psake - Automated builds with powershell 9 | ======================== 10 | "@ | Write-Host -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/running_aspnet_compiler_under_dotNet35_should_pass.ps1: -------------------------------------------------------------------------------- 1 | $framework = '3.5' 2 | 3 | task default -depends AspNetCompiler 4 | 5 | task AspNetCompiler { 6 | aspnet_compiler 7 | if ($LastExitCode -ne 1) { 8 | throw 'Error: Could not execute aspnet_compiler' 9 | } 10 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/preandpostaction.ps1: -------------------------------------------------------------------------------- 1 | task default -depends Test 2 | 3 | task Test -depends Compile, Clean -PreAction {"Pre-Test"} -Action { 4 | "Test" 5 | } -PostAction {"Post-Test"} 6 | 7 | task Compile -depends Clean { 8 | "Compile" 9 | } 10 | 11 | task Clean { 12 | "Clean" 13 | } -------------------------------------------------------------------------------- /Src/Pipeline/IFilter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Tamarack.Pipeline 4 | { 5 | public interface IFilter 6 | { 7 | void Execute(T context, Action executeNext); 8 | } 9 | 10 | public interface IFilter 11 | { 12 | TOut Execute(T context, Func executeNext); 13 | } 14 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/images/SakeBottleLicense.txt: -------------------------------------------------------------------------------- 1 | SakeBottle.jpg 2 | An American produced bottle of Ginjo Sake. 3 | Shawn Clark Lazyeights Photography http://lazyeights.net/cpg/displayimage.php?pos=-122 4 | This work is licensed under the Creative Commons Attribution 2.5 License (http://creativecommons.org/licenses/by/2.5/). -------------------------------------------------------------------------------- /How to build.txt: -------------------------------------------------------------------------------- 1 | In order to build this project, you need to execute the build.cmd from the (PowerShell) console. 2 | You do this using the following command from the root project directory: 3 | 4 | build.cmd 5 | 6 | In order to create a nuget package, you need to pass the appropriate target as parameter 7 | 8 | build.cmd package -------------------------------------------------------------------------------- /Test/Pipeline/ShortCircuit.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Test.Pipeline 5 | { 6 | public class ShortCircuit : IFilter 7 | { 8 | public string Execute(int context, Func executeNext) 9 | { 10 | return context.ToString(); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/tasksetup_should_pass.ps1: -------------------------------------------------------------------------------- 1 | TaskSetup { 2 | "executing task setup" 3 | } 4 | 5 | Task default -depends Compile, Test, Deploy 6 | 7 | Task Compile { 8 | "Compiling" 9 | } 10 | 11 | Task Test -depends Compile { 12 | "Testing" 13 | } 14 | 15 | Task Deploy -depends Test { 16 | "Deploying" 17 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/using_PreAndPostActions_should_pass.ps1: -------------------------------------------------------------------------------- 1 | task default -depends Test 2 | 3 | task Test -depends Compile, Clean -PreAction {"Pre-Test"} -Action { 4 | "Test" 5 | } -PostAction {"Post-Test"} 6 | 7 | task Compile -depends Clean { 8 | "Compile" 9 | } 10 | 11 | task Clean { 12 | "Clean" 13 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/nested.ps1: -------------------------------------------------------------------------------- 1 | Properties { 2 | $x = 1 3 | } 4 | 5 | Task default -Depends RunNested1, RunNested2, CheckX 6 | 7 | Task RunNested1 { 8 | Invoke-psake .\nested\nested1.ps1 9 | } 10 | 11 | Task RunNested2 { 12 | Invoke-psake .\nested\nested2.ps1 13 | } 14 | 15 | Task CheckX{ 16 | Assert ($x -eq 1) '$x was not 1' 17 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/properties.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $x = $null 3 | $y = $null 4 | $z = $null 5 | } 6 | 7 | task default -depends TestProperties 8 | 9 | task TestProperties { 10 | Assert ($x -ne $null) "x should not be null" 11 | Assert ($y -ne $null) "y should not be null" 12 | Assert ($z -eq $null) "z should be null" 13 | } -------------------------------------------------------------------------------- /Src/Pipeline/EndOfChainException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Tamarack.Pipeline 4 | { 5 | public class EndOfChainException : Exception 6 | { 7 | public EndOfChainException() 8 | : base("Next filter does not exist." 9 | + " Use 'Finally' or a filter that short-circuits before reaching the end of the chain") 10 | { } 11 | } 12 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/using_properties_should_pass.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $x = $null 3 | $y = $null 4 | $z = $null 5 | } 6 | 7 | task default -depends TestProperties 8 | 9 | task TestProperties { 10 | Assert ($x -ne $null) "x should not be null" 11 | Assert ($y -ne $null) "y should not be null" 12 | Assert ($z -eq $null) "z should be null" 13 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/nested_builds_should_pass.ps1: -------------------------------------------------------------------------------- 1 | Properties { 2 | $x = 1 3 | } 4 | 5 | Task default -Depends RunNested1, RunNested2, CheckX 6 | 7 | Task RunNested1 { 8 | Invoke-psake .\nested\nested1.ps1 9 | } 10 | 11 | Task RunNested2 { 12 | Invoke-psake .\nested\nested2.ps1 13 | } 14 | 15 | Task CheckX{ 16 | Assert ($x -eq 1) '$x was not 1' 17 | } -------------------------------------------------------------------------------- /Example/Pipeline/BlogEngine/Filters/CanoncalizeHtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.BlogEngine.Filters 5 | { 6 | public class CanoncalizeHtml : IFilter 7 | { 8 | public int Execute(Post context, Func executeNext) 9 | { 10 | throw new NotImplementedException(); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Example/Pipeline/BlogEngine/Filters/RemoveJavascript.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.BlogEngine.Filters 5 | { 6 | public class RemoveJavascript : IFilter 7 | { 8 | public int Execute(Post context, Func executeNext) 9 | { 10 | throw new NotImplementedException(); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Example/Pipeline/BlogEngine/Filters/RewriteProfanity.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.BlogEngine.Filters 5 | { 6 | public class RewriteProfanity : IFilter 7 | { 8 | public int Execute(Post context, Func executeNext) 9 | { 10 | throw new NotImplementedException(); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Example/Pipeline/BlogEngine/Filters/StripMaliciousTags.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.BlogEngine.Filters 5 | { 6 | public class StripMaliciousTags : IFilter 7 | { 8 | public int Execute(Post context, Func executeNext) 9 | { 10 | throw new NotImplementedException(); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Example/Pipeline/BlogEngine/Filters/GuardAgainstDoublePost.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.BlogEngine.Filters 5 | { 6 | public class GuardAgainstDoublePost : IFilter 7 | { 8 | public int Execute(Post context, Func executeNext) 9 | { 10 | throw new NotImplementedException(); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Example/Pipeline/LoginService/LoginContext.cs: -------------------------------------------------------------------------------- 1 | namespace Tamarack.Example.Pipeline.LoginService 2 | { 3 | public class LoginContext 4 | { 5 | public LoginContext(string username, string password) 6 | { 7 | Username = username; 8 | Password = password; 9 | } 10 | 11 | public string Username { get; private set; } 12 | 13 | public string Password { get; private set; } 14 | } 15 | } -------------------------------------------------------------------------------- /Example/Pipeline/SpamScorer/Filters/SpamCopBlacklistFilter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.SpamScorer.Filters 5 | { 6 | public class SpamCopBlacklistFilter : IFilter 7 | { 8 | public double Execute(string text, Func executeNext) 9 | { 10 | throw new NotImplementedException(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Test/Pipeline/Extensions/AppendCaretToOutput.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Test.Pipeline.Extensions 5 | { 6 | public class AppendCaretToOutput : IFilter 7 | { 8 | public string Execute(int context, Func executeNext) 9 | { 10 | var result = executeNext(context); 11 | 12 | return result + "^"; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Pipeline/LoginService/Filters/AuthenticateAgainstLdap.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.LoginService.Filters 5 | { 6 | public class AuthenticateAgainstLdap : IFilter 7 | { 8 | public bool Execute(LoginContext context, Func executeNext) 9 | { 10 | return executeNext(context); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Test/Pipeline/Extensions/AppendAsteriskToOutput.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Test.Pipeline.Extensions 5 | { 6 | public class AppendAsteriskToOutput : IFilter 7 | { 8 | public string Execute(int context, Func executeNext) 9 | { 10 | var result = executeNext(context); 11 | 12 | return result + "*"; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Pipeline/LoginService/Filters/LockoutOnConsecutiveFailures.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.LoginService.Filters 5 | { 6 | public class LockoutOnConsecutiveFailures : IFilter 7 | { 8 | public bool Execute(LoginContext context, Func executeNext) 9 | { 10 | return executeNext(context); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Example/Pipeline/LoginService/Filters/WriteLoginAttemptToAuditLog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.LoginService.Filters 5 | { 6 | public class WriteLoginAttemptToAuditLog : IFilter 7 | { 8 | public bool Execute(LoginContext context, Func executeNext) 9 | { 10 | return executeNext(context); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/psake.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | SET DIR=%~dp0% 4 | 5 | if '%1'=='/?' goto usage 6 | if '%1'=='-?' goto usage 7 | if '%1'=='?' goto usage 8 | if '%1'=='/help' goto usage 9 | if '%1'=='help' goto usage 10 | 11 | powershell -NoProfile -ExecutionPolicy unrestricted -Command "& '%DIR%psake.ps1' %*" 12 | 13 | goto :eof 14 | :usage 15 | powershell -NoProfile -ExecutionPolicy unrestricted -Command "& '%DIR%psake-help.ps1'" -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/simple_properties_and_tasks_should_pass.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $testMessage = 'Executed Test!' 3 | $compileMessage = 'Executed Compile!' 4 | $cleanMessage = 'Executed Clean!' 5 | } 6 | 7 | task default -depends Test 8 | 9 | task Test -depends Compile, Clean { 10 | $testMessage 11 | } 12 | 13 | task Compile -depends Clean { 14 | $compileMessage 15 | } 16 | 17 | task Clean { 18 | $cleanMessage 19 | } -------------------------------------------------------------------------------- /Src/Configuration/TypeConfigurationLinqExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Tamarack.Configuration 4 | { 5 | public static class TypeConfigurationLinqExtensions 6 | { 7 | public static IEnumerable AsEnumerable(this TypeConfigurationElementCollection collection) 8 | { 9 | foreach (TypeConfigurationElement element in collection) 10 | { 11 | yield return element; 12 | } 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/formattaskname_string.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $testMessage = 'Executed Test!' 3 | $compileMessage = 'Executed Compile!' 4 | $cleanMessage = 'Executed Clean!' 5 | } 6 | 7 | task default -depends Test 8 | 9 | formatTaskName "-------{0}-------" 10 | 11 | task Test -depends Compile, Clean { 12 | $testMessage 13 | } 14 | 15 | task Compile -depends Clean { 16 | $compileMessage 17 | } 18 | 19 | task Clean { 20 | $cleanMessage 21 | } -------------------------------------------------------------------------------- /Example/Pipeline/SpamScorer/Filters/PornographyFilter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.SpamScorer.Filters 5 | { 6 | public class PornographyFilter : IFilter 7 | { 8 | public double Execute(string text, Func executeNext) 9 | { 10 | var score = executeNext(text); 11 | 12 | if (text.Contains("sex")) 13 | score += .1; 14 | 15 | return score; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | #ignore thumbnails created by windows 3 | Thumbs.db 4 | #Ignore files build by Visual Studio 5 | *.obj 6 | *.exe 7 | *.pdb 8 | *.user 9 | *.aps 10 | *.pch 11 | *.vspscc 12 | *_i.c 13 | *_p.c 14 | *.ncb 15 | *.suo 16 | *.tlb 17 | *.tlh 18 | *.bak 19 | *.cache 20 | *.ilk 21 | *.log 22 | [Bb]in 23 | [Dd]ebug*/ 24 | *.lib 25 | *.sbr 26 | obj/ 27 | [Rr]elease*/ 28 | _ReSharper*/ 29 | [Tt]est[Rr]esult* 30 | *.nupkg 31 | #Ignore Release directory 32 | /Release -------------------------------------------------------------------------------- /Example/Pipeline/SpamScorer/Filters/PerspcriptionDrugFilter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.SpamScorer.Filters 5 | { 6 | public class PerspcriptionDrugFilter : IFilter 7 | { 8 | public double Execute(string text, Func executeNext) 9 | { 10 | var score = executeNext(text); 11 | 12 | if (text.Contains("viagra")) 13 | score += .25; 14 | 15 | return score; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Test/UnityServiceProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Practices.Unity; 3 | 4 | namespace Tamarack.Test 5 | { 6 | public class UnityServiceProvider : IServiceProvider 7 | { 8 | private readonly IUnityContainer container; 9 | 10 | public UnityServiceProvider(IUnityContainer container) 11 | { 12 | this.container = container; 13 | } 14 | 15 | public object GetService(Type serviceType) 16 | { 17 | return container.Resolve(serviceType); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/default.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $testMessage = 'Executed Test!' 3 | $compileMessage = 'Executed Compile!' 4 | $cleanMessage = 'Executed Clean!' 5 | } 6 | 7 | task default -depends Test 8 | 9 | task Test -depends Compile, Clean { 10 | $testMessage 11 | } 12 | 13 | task Compile -depends Clean { 14 | $compileMessage 15 | } 16 | 17 | task Clean { 18 | $cleanMessage 19 | } 20 | 21 | task ? -Description "Helper to display task info" { 22 | Write-Documentation 23 | } -------------------------------------------------------------------------------- /Test/Configuration/TypeConfigurationLinqExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Tamarack.Configuration; 3 | 4 | namespace Tamarack.Test.Configuration 5 | { 6 | public static class TypeConfigurationLinqExtensions 7 | { 8 | public static IEnumerable AsEnumerable(this TypeConfigurationElementCollection collection) 9 | { 10 | foreach (TypeConfigurationElement element in collection) 11 | { 12 | yield return element; 13 | } 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Src/Configuration/TypeCollectionConfigurationSection.cs: -------------------------------------------------------------------------------- 1 | using System.Configuration; 2 | 3 | namespace Tamarack.Configuration 4 | { 5 | public class TypeCollectionConfigurationSection : ConfigurationSection 6 | { 7 | private const string CollectionPropertyName = "types"; 8 | 9 | [ConfigurationProperty(CollectionPropertyName)] 10 | public TypeConfigurationElementCollection TypeCollection 11 | { 12 | get { return (TypeConfigurationElementCollection)this[CollectionPropertyName]; } 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Test/Pipeline/AddToInput.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Test.Pipeline 5 | { 6 | public class AddToInput : IFilter 7 | { 8 | private readonly int value; 9 | 10 | public AddToInput(int value) 11 | { 12 | this.value = value; 13 | } 14 | 15 | public string Execute(int context, Func executeNext) 16 | { 17 | context += value; 18 | 19 | var result = executeNext(context); 20 | 21 | return result; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Test/Pipeline/AppendToOutput.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Test.Pipeline 5 | { 6 | public class AppendToOutput : IFilter 7 | { 8 | private readonly string value; 9 | 10 | public AppendToOutput(string value) 11 | { 12 | this.value = value; 13 | } 14 | 15 | public string Execute(int context, Func executeNext) 16 | { 17 | var result = executeNext(context); 18 | 19 | result += value; 20 | 21 | return result; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/formattaskname_scriptblock.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $testMessage = 'Executed Test!' 3 | $compileMessage = 'Executed Compile!' 4 | $cleanMessage = 'Executed Clean!' 5 | } 6 | 7 | task default -depends Test 8 | 9 | formatTaskName { 10 | param($taskName) 11 | write-host $taskName -foregroundcolor Green 12 | } 13 | 14 | task Test -depends Compile, Clean { 15 | $testMessage 16 | } 17 | 18 | task Compile -depends Clean { 19 | $compileMessage 20 | } 21 | 22 | task Clean { 23 | $cleanMessage 24 | } -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/agent.log.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/agent.log.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/launcher.log.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/launcher.log.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/chocolateyInstall.ps1: -------------------------------------------------------------------------------- 1 | $nugetPath = 'C:\NuGet' 2 | $nugetExePath = Join-Path $nuGetPath 'bin' 3 | $packageBatchFileName = Join-Path $nugetExePath "psake.bat" 4 | 5 | $psakeDir = (Split-Path -parent $MyInvocation.MyCommand.Definition) 6 | #$path = ($psakeDir | Split-Path | Join-Path -ChildPath 'psake.cmd') 7 | $path = Join-Path $psakeDir 'psake.cmd' 8 | Write-Host "Adding $packageBatchFileName and pointing to $path" 9 | "@echo off 10 | ""$path"" %*" | Out-File $packageBatchFileName -encoding ASCII 11 | 12 | 13 | write-host "PSake is now ready. You can type 'psake' from any command line at any path. Get started by typing 'psake /?'" 14 | Start-Sleep 6 -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/NUnitTests.nunit: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/NUnitTests.nunit: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Test/Pipeline/Extensions/AddFiltersInAppConfigTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using NUnit.Framework; 3 | using Tamarack.Pipeline; 4 | using Tamarack.Pipeline.Extensions; 5 | 6 | namespace Tamarack.Test.Pipeline.Extensions 7 | { 8 | [TestFixture] 9 | public class AddFiltersInAppConfigTests 10 | { 11 | [Test] 12 | public void Should_add_types_to_pipeline() 13 | { 14 | var pipeline = new Pipeline().AddConfigurationSection("filters"); 15 | 16 | Assert.That(pipeline.Count, Is.EqualTo(2)); 17 | } 18 | 19 | [Test] 20 | public void Should_throw_exception_when_config_section_is_not_found() 21 | { 22 | var pipeline = new Pipeline(); 23 | 24 | Assert.Throws(() => pipeline.AddConfigurationSection("bogus")); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Src/Configuration/TypeConfigurationElementCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Configuration; 4 | 5 | namespace Tamarack.Configuration 6 | { 7 | public class TypeConfigurationElementCollection : ConfigurationElementCollection 8 | { 9 | protected override ConfigurationElement CreateNewElement() 10 | { 11 | return new TypeConfigurationElement(); 12 | } 13 | 14 | protected override object GetElementKey(ConfigurationElement element) 15 | { 16 | var typeConfigurationElement = (TypeConfigurationElement)element; 17 | 18 | var key = typeConfigurationElement.TypeName; 19 | 20 | if (!string.IsNullOrEmpty(typeConfigurationElement.Name)) 21 | { 22 | key += "." + typeConfigurationElement.Name; 23 | } 24 | 25 | return key; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/passingParametersString/parameters.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $buildOutputPath = ".\bin\$buildConfiguration" 3 | } 4 | 5 | task default -depends DoRelease 6 | 7 | task DoRelease { 8 | Assert ("$buildConfiguration" -ne $null) "buildConfiguration should not have been null" 9 | Assert ("$buildConfiguration" -eq 'Release') "buildConfiguration=[$buildConfiguration] should have been 'Release'" 10 | 11 | Write-Host "" 12 | Write-Host "" 13 | Write-Host "" 14 | Write-Host -NoNewline "Would build output into path " 15 | Write-Host -NoNewline -ForegroundColor Green "$buildOutputPath" 16 | Write-Host -NoNewline " for build configuration " 17 | Write-Host -ForegroundColor Green "$buildConfiguration" 18 | Write-Host -NoNewline "." 19 | Write-Host "" 20 | Write-Host "" 21 | Write-Host "" 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pipeline/BlogEngine/BlogEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Example.Pipeline.BlogEngine.Filters; 3 | using Tamarack.Pipeline; 4 | 5 | namespace Tamarack.Example.Pipeline.BlogEngine 6 | { 7 | public class BlogEngine 8 | { 9 | private readonly IBlogRepository repository; 10 | 11 | public BlogEngine(IBlogRepository repository) 12 | { 13 | this.repository = repository; 14 | } 15 | 16 | public int Submit(Post post) 17 | { 18 | var pipeline = new Pipeline() 19 | .Add(new CanoncalizeHtml()) 20 | .Add(new StripMaliciousTags()) 21 | .Add(new RemoveJavascript()) 22 | .Add(new RewriteProfanity()) 23 | .Add(new GuardAgainstDoublePost()) 24 | .Finally(p => repository.Save(p)); 25 | 26 | var newId = pipeline.Execute(post); 27 | 28 | return newId; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Src/Pipeline/PipelineExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Tamarack.Pipeline 4 | { 5 | public static class PipelineExtensions 6 | { 7 | /// 8 | /// Convenience method to add a short-circuiting filter to the end of the chain 9 | /// 10 | public static Pipeline Finally(this Pipeline pipeline, Func func) 11 | { 12 | pipeline.Add(new ShortCircuit(func)); 13 | return pipeline; 14 | } 15 | 16 | private class ShortCircuit : IFilter 17 | { 18 | private readonly Func func; 19 | 20 | public ShortCircuit(Func func) 21 | { 22 | this.func = func; 23 | } 24 | 25 | public TOut Execute(T context, Func executeNext) 26 | { 27 | return func.Invoke(context); 28 | } 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Example/Pipeline/LoginService/LoginService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Example.Pipeline.LoginService.Filters; 3 | using Tamarack.Pipeline; 4 | 5 | namespace Tamarack.Example.Pipeline.LoginService 6 | { 7 | public class LoginService 8 | { 9 | private readonly IServiceProvider serviceProvider; 10 | 11 | public LoginService(IServiceProvider serviceProvider) 12 | { 13 | this.serviceProvider = serviceProvider; 14 | } 15 | 16 | public bool Login(string username, string password) 17 | { 18 | var pipeline = new Pipeline(serviceProvider) 19 | .Add() 20 | .Add() 21 | .Add() 22 | .Add() 23 | .Finally(c => false); 24 | 25 | return pipeline.Execute(new LoginContext(username, password)); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/test.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Testing 6 | 7 | 8 | Testing 9 | pnunit.tests.dll 10 | TestLibraries.Testing.EqualTo19 11 | localhost:8080 12 | 13 | ..\server 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/test.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Testing 6 | 7 | 8 | Testing 9 | pnunit.tests.dll 10 | TestLibraries.Testing.EqualTo19 11 | localhost:8080 12 | 13 | ..\server 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Test/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Example/Pipeline/SpamScorer/SpamScorer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Example.Pipeline.SpamScorer.Filters; 3 | using Tamarack.Pipeline; 4 | using Tamarack.Pipeline.Extensions; 5 | 6 | namespace Tamarack.Example.Pipeline.SpamScorer 7 | { 8 | public class SpamScorer 9 | { 10 | public double CalculateSpamScore(string text) 11 | { 12 | var pipeline = new Pipeline() 13 | .Add() 14 | .Add() 15 | .Add() 16 | .Finally(score => 0); 17 | 18 | return pipeline.Execute(text); 19 | } 20 | 21 | public double CalculateSpamScore2(string text) 22 | { 23 | var pipeline = new Pipeline() 24 | .AddAssembly() 25 | .AddNamespace("Tamarack.Example.Pipeline.SpamScorer.Filters") 26 | .AddConfigurationSection("spamScoreFilters"); 27 | 28 | return pipeline.Execute(text); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Src/Configuration/TypeConfigurationElement.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Configuration; 3 | 4 | namespace Tamarack.Configuration 5 | { 6 | public class TypeConfigurationElement : ConfigurationElement 7 | { 8 | public const string NameProperty = "name"; 9 | public const string TypeProperty = "type"; 10 | 11 | [ConfigurationProperty(NameProperty)] 12 | public virtual string Name 13 | { 14 | get { return (string)this[NameProperty]; } 15 | set { this[NameProperty] = value; } 16 | } 17 | 18 | [ConfigurationProperty(TypeProperty, IsRequired=true)] 19 | public virtual string TypeName 20 | { 21 | get { return (string)this[TypeProperty]; } 22 | set { this[TypeProperty] = value; } 23 | } 24 | 25 | public virtual Type Type 26 | { 27 | get { return Type.GetType(TypeName, false); } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Test/Configuration/TypeConfigurationSectionTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Configuration; 4 | using NUnit.Framework; 5 | using Tamarack.Configuration; 6 | 7 | namespace Tamarack.Test.Configuration 8 | { 9 | [TestFixture] 10 | public class TypeConfigurationSectionTests 11 | { 12 | [Test] 13 | public void Should_read_list_of_types_from_system_configuration() 14 | { 15 | var config = (TypeCollectionConfigurationSection)ConfigurationManager.GetSection("filters"); 16 | 17 | Assert.That(config.TypeCollection, Has.Count.EqualTo(2)); 18 | } 19 | 20 | [Test] 21 | public void Can_specify_name_when_types_are_the_same() 22 | { 23 | var config = (TypeCollectionConfigurationSection)ConfigurationManager.GetSection("named"); 24 | 25 | var names = config.TypeCollection.AsEnumerable().Select(t => t.Name); 26 | 27 | Assert.That(names, Has.Member("first")); 28 | Assert.That(names, Has.Member("second")); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Example/Pipeline/LoginService/Filters/AuthenticateAgainstLocalStore.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Example.Pipeline.LoginService.Filters 5 | { 6 | public class AuthenticateAgainstLocalStore : IFilter 7 | { 8 | private readonly IUserRepository repository; 9 | 10 | public AuthenticateAgainstLocalStore(IUserRepository repository) 11 | { 12 | this.repository = repository; 13 | } 14 | 15 | public bool Execute(LoginContext context, Func executeNext) 16 | { 17 | var user = repository.FindByUsername(context.Username); 18 | 19 | if (user != null) 20 | return user.IsValid(context.Password); 21 | 22 | return executeNext(context); 23 | } 24 | } 25 | 26 | public interface IUserRepository 27 | { 28 | User FindByUsername(string username); 29 | } 30 | 31 | public class User 32 | { 33 | public bool IsValid(string password) 34 | { 35 | return password == "local"; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /Tamarack.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Tamarack 5 | $version$ 6 | Michael Valenty 7 | Michael Valenty 8 | http://www.opensource.org/licenses/ms-pl 9 | https://github.com/mikevalenty/tamarack 10 | false 11 | A micro framework for implementing the Chain of Responsibility pattern in .NET. An essential tool in OO toolbox for transforming rigid procedural code into a composable Domain Specific Language. 12 | pipeline filter chain-of-responsibility pattern framework 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Src/Pipeline/Extensions/TypeConfigurationPipelineExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Configuration; 3 | using Tamarack.Configuration; 4 | 5 | namespace Tamarack.Pipeline.Extensions 6 | { 7 | public static class TypeConfigurationPipelineExtensions 8 | { 9 | public static Pipeline AddConfigurationSection(this Pipeline pipeline, string section) 10 | { 11 | ForEachTypeIn(section, t => pipeline.Add(t)); 12 | 13 | return pipeline; 14 | } 15 | 16 | public static Pipeline AddConfigurationSection(this Pipeline pipeline, string section) 17 | { 18 | ForEachTypeIn(section, t => pipeline.Add(t)); 19 | 20 | return pipeline; 21 | } 22 | 23 | private static void ForEachTypeIn(string section, Action action) 24 | { 25 | var config = (TypeCollectionConfigurationSection)ConfigurationManager.GetSection(section); 26 | 27 | if (config == null) 28 | throw new ArgumentException("Configuration section '" + section + "' required"); 29 | 30 | foreach (TypeConfigurationElement element in config.TypeCollection) 31 | { 32 | action(element.Type); 33 | } 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /Test/Pipeline/InceptionTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Test.Pipeline 5 | { 6 | [TestFixture] 7 | public class InceptionTests 8 | { 9 | [Test] 10 | public void Pipeline_func_can_be_a_filter() 11 | { 12 | var numbers = new Pipeline() 13 | .Add(new AppendToOutput("1")) 14 | .Add(new AppendToOutput("2")) 15 | .Add(new AppendToOutput("3")); 16 | 17 | var result = new Pipeline() 18 | .Add(numbers) 19 | .Add(new AppendToOutput("4")) 20 | .Finally(x => x.ToString()) 21 | .Execute(5); 22 | 23 | Assert.That(result, Is.EqualTo("54321")); 24 | } 25 | 26 | [Test] 27 | public void Pipeline_can_be_a_filter() 28 | { 29 | var context = new MyContext(); 30 | 31 | var numbers = new Pipeline() 32 | .Add(new AppendToValue("1")) 33 | .Add(new AppendToValue("2")) 34 | .Add(new AppendToValue("3")); 35 | 36 | new Pipeline() 37 | .Add(numbers) 38 | .Add(new AppendToValue("4")) 39 | .Execute(context); 40 | 41 | Assert.That(context.Value, Is.EqualTo("1234")); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/psake.ps1: -------------------------------------------------------------------------------- 1 | # Helper script for those who want to run psake without importing the module. 2 | # Example: 3 | # .\psake.ps1 "default.ps1" "BuildHelloWord" "4.0" 4 | 5 | # Must match parameter definitions for psake.psm1/invoke-psake 6 | # otherwise named parameter binding fails 7 | param( 8 | [Parameter(Position=0,Mandatory=0)] 9 | [string]$buildFile = 'default.ps1', 10 | [Parameter(Position=1,Mandatory=0)] 11 | [string[]]$taskList = @(), 12 | [Parameter(Position=2,Mandatory=0)] 13 | [string]$framework = '3.5', 14 | [Parameter(Position=3,Mandatory=0)] 15 | [switch]$docs = $false, 16 | [Parameter(Position=4,Mandatory=0)] 17 | [System.Collections.Hashtable]$parameters = @{}, 18 | [Parameter(Position=5, Mandatory=0)] 19 | [System.Collections.Hashtable]$properties = @{} 20 | ) 21 | 22 | remove-module psake -ea 'SilentlyContinue' 23 | $scriptPath = Split-Path -parent $MyInvocation.MyCommand.path 24 | import-module (join-path $scriptPath psake.psm1) 25 | if (-not(test-path $buildFile)) 26 | { 27 | $buildFile = (join-path $scriptPath $buildFile) 28 | } 29 | invoke-psake $buildFile $taskList $framework $docs $parameters $properties 30 | exit $lastexitcode -------------------------------------------------------------------------------- /Test/Pipeline/FinallyTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | using Tamarack.Pipeline; 3 | 4 | namespace Tamarack.Test.Pipeline 5 | { 6 | [TestFixture] 7 | public class FinallyTests 8 | { 9 | [Test] 10 | public void Should_execute_final_function() 11 | { 12 | var pipeline = new Pipeline(); 13 | pipeline.Finally(x => x + "!"); 14 | 15 | var output = pipeline.Execute(2); 16 | 17 | Assert.That(output, Is.EqualTo("2!")); 18 | } 19 | 20 | [Test] 21 | public void Should_throw_exception_when_no_filters_exist() 22 | { 23 | var pipeline = new Pipeline(); 24 | 25 | Assert.Throws(() => pipeline.Execute(2)); 26 | } 27 | 28 | [Test] 29 | public void Should_throw_exception_when_chain_goes_too_far() 30 | { 31 | var pipeline = new Pipeline(); 32 | pipeline.Add(new AddToInput(3)); 33 | 34 | Assert.Throws(() => pipeline.Execute(2)); 35 | } 36 | 37 | [Test] 38 | public void Should_not_require_final_function_when_chain_short_circuits() 39 | { 40 | var pipeline = new Pipeline(); 41 | pipeline.Add(new ShortCircuit()); 42 | 43 | var output = pipeline.Execute(2); 44 | 45 | Assert.That(output, Is.EqualTo("2")); 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/tabexpansion/PsakeTabExpansion.ps1: -------------------------------------------------------------------------------- 1 | $global:psakeSwitches = @('-docs', '-task', '-properties', '-parameters') 2 | 3 | function script:psakeSwitches($filter) { 4 | $psakeSwitches | where { $_ -like "$filter*" } 5 | } 6 | 7 | function script:psakeDocs($filter, $file) { 8 | if ($file -eq $null -or $file -eq '') { $file = 'default.ps1' } 9 | psake $file -docs | out-string -Stream |% { if ($_ -match "^[^ ]*") { $matches[0]} } |? { $_ -ne "Name" -and $_ -ne "----" -and $_ -like "$filter*" } 10 | } 11 | 12 | function script:psakeFiles($filter) { 13 | ls "$filter*.ps1" |% { $_.Name } 14 | } 15 | 16 | function PsakeTabExpansion($lastBlock) { 17 | switch -regex ($lastBlock) { 18 | '(invoke-psake|psake) ([^\.]*\.ps1)? ?.* ?\-ta?s?k? (\S*)$' { # tasks only 19 | psakeDocs $matches[3] $matches[2] | sort 20 | } 21 | '(invoke-psake|psake) ([^\.]*\.ps1)? ?.* ?(\-\S*)$' { # switches only 22 | psakeSwitches $matches[3] | sort 23 | } 24 | '(invoke-psake|psake) ([^\.]*\.ps1) ?.* ?(\S*)$' { # switches or tasks 25 | @(psakeDocs $matches[3] $matches[2]) + @(psakeSwitches $matches[3]) | sort 26 | } 27 | '(invoke-psake|psake) (\S*)$' { 28 | @(psakeFiles $matches[2]) + @(psakeDocs $matches[2] 'default.ps1') + @(psakeSwitches $matches[2]) | sort 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Test/Pipeline/Extensions/AddFiltersInAssemblyTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Practices.Unity; 3 | using NUnit.Framework; 4 | using Tamarack.Pipeline; 5 | using Tamarack.Pipeline.Extensions; 6 | 7 | namespace Tamarack.Test.Pipeline.Extensions 8 | { 9 | [TestFixture] 10 | public class AddFiltersInAssemblyTests 11 | { 12 | private IServiceProvider serviceProvider; 13 | 14 | [SetUp] 15 | public void SetUp() 16 | { 17 | var container = new UnityContainer() 18 | .RegisterType(new InjectionConstructor(3)) 19 | .RegisterType(new InjectionConstructor("#")); 20 | 21 | serviceProvider = new UnityServiceProvider(container); 22 | } 23 | 24 | [Test] 25 | public void Should_load_filters_in_namespace_in_alphabetical_order() 26 | { 27 | var pipeline = new Pipeline() 28 | .AddNamespace("Tamarack.Test.Pipeline.Extensions") 29 | .Finally(x => x.ToString()); 30 | 31 | var output = pipeline.Execute(2); 32 | 33 | Assert.That(output, Is.EqualTo("2*^")); 34 | } 35 | 36 | [Test] 37 | public void Should_load_all_filters_in_assembly() 38 | { 39 | var pipeline = new Pipeline(serviceProvider) 40 | .AddAssembly(typeof(AddFiltersInAssemblyTests).Assembly); 41 | 42 | Assert.That(pipeline.Count, Is.EqualTo(5)); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Test/Pipeline/PipelineTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using NUnit.Framework; 3 | using Tamarack.Pipeline; 4 | 5 | namespace Tamarack.Test.Pipeline 6 | { 7 | [TestFixture] 8 | public class PipelineTests 9 | { 10 | [Test] 11 | public void Should_not_require_any_filters() 12 | { 13 | var context = new MyContext { Value = "hi" }; 14 | 15 | var pipeline = new Pipeline(); 16 | pipeline.Execute(context); 17 | 18 | Assert.That(context.Value, Is.EqualTo("hi")); 19 | } 20 | 21 | [Test] 22 | public void Should_apply_each_filter_in_order_added() 23 | { 24 | var context = new MyContext { Value = "one" }; 25 | 26 | var pipeline = new Pipeline(); 27 | pipeline.Add(new AppendToValue(", two")); 28 | pipeline.Add(new AppendToValue(", three")); 29 | pipeline.Execute(context); 30 | 31 | Assert.That(context.Value, Is.EqualTo("one, two, three")); 32 | } 33 | 34 | } 35 | 36 | public class MyContext 37 | { 38 | public string Value { get; set; } 39 | } 40 | 41 | public class AppendToValue : IFilter 42 | { 43 | private readonly string text; 44 | 45 | public AppendToValue(string text) 46 | { 47 | this.text = text; 48 | } 49 | 50 | public void Execute(MyContext context, Action executeNext) 51 | { 52 | context.Value += text; 53 | 54 | executeNext(context); 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /Src/Pipeline/Pipeline.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Tamarack.Pipeline 5 | { 6 | public class Pipeline : IFilter 7 | { 8 | private readonly IServiceProvider serviceProvider; 9 | private readonly IList> filters; 10 | private int current; 11 | 12 | public Pipeline() 13 | : this(new ActivatorServiceProvider()) 14 | { } 15 | 16 | public Pipeline(IServiceProvider serviceProvider) 17 | { 18 | this.serviceProvider = serviceProvider; 19 | filters = new List>(); 20 | } 21 | 22 | public int Count 23 | { 24 | get { return filters.Count; } 25 | } 26 | 27 | public Pipeline Add(IFilter filter) 28 | { 29 | filters.Add(filter); 30 | return this; 31 | } 32 | 33 | public Pipeline Add(Type filterType) 34 | { 35 | Add((IFilter)serviceProvider.GetService(filterType)); 36 | return this; 37 | } 38 | 39 | public Pipeline Add() where TFilter : IFilter 40 | { 41 | Add(typeof(TFilter)); 42 | return this; 43 | } 44 | 45 | public void Execute(T input) 46 | { 47 | ((IFilter)this).Execute(input, x => { }); 48 | } 49 | 50 | void IFilter.Execute(T input, Action executeNext) 51 | { 52 | GetNext = () => current < filters.Count 53 | ? x => filters[current++].Execute(x, GetNext()) 54 | : executeNext; 55 | 56 | GetNext().Invoke(input); 57 | } 58 | 59 | private Func> GetNext { get; set; } 60 | } 61 | } -------------------------------------------------------------------------------- /Test/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Tamarack.Test")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Tamarack.Test")] 13 | [assembly: AssemblyCopyright("Copyright © 2011")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("6000cc6e-4d3c-49c7-8a72-1a789aa4569f")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Example/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Tamarack.Example")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Tamarack.Example")] 13 | [assembly: AssemblyCopyright("Copyright © 2011")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("1670c1c0-d364-434d-9c67-9f37718575a1")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Src/Pipeline/PipelineFunc.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Tamarack.Pipeline 5 | { 6 | public class Pipeline : IFilter 7 | { 8 | private readonly IServiceProvider serviceProvider; 9 | private readonly IList> filters; 10 | private int current; 11 | 12 | public Pipeline() 13 | : this(new ActivatorServiceProvider()) 14 | { } 15 | 16 | public Pipeline(IServiceProvider serviceProvider) 17 | { 18 | this.serviceProvider = serviceProvider; 19 | filters = new List>(); 20 | } 21 | 22 | public int Count 23 | { 24 | get { return filters.Count; } 25 | } 26 | 27 | public Pipeline Add(IFilter filter) 28 | { 29 | filters.Add(filter); 30 | return this; 31 | } 32 | 33 | public Pipeline Add(Type filterType) 34 | { 35 | Add((IFilter)serviceProvider.GetService(filterType)); 36 | return this; 37 | } 38 | 39 | public Pipeline Add() where TFilter : IFilter 40 | { 41 | Add(typeof(TFilter)); 42 | return this; 43 | } 44 | 45 | public TOut Execute(T input) 46 | { 47 | var tail = new Func(x => { throw new EndOfChainException(); }); 48 | 49 | return ((IFilter)this).Execute(input, tail); 50 | } 51 | 52 | TOut IFilter.Execute(T input, Func executeNext) 53 | { 54 | GetNext = () => current < filters.Count 55 | ? x => filters[current++].Execute(x, GetNext()) 56 | : executeNext; 57 | 58 | return GetNext().Invoke(input); 59 | } 60 | 61 | private Func> GetNext { get; set; } 62 | } 63 | } -------------------------------------------------------------------------------- /Build/default.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $project_name = "Tamarack" 3 | $base_directory = resolve-path "..\." 4 | $build_directory = "$base_directory\Release" 5 | $nunit_path = "$base_directory\packages\NUnit.2.5.9.10348\Tools\nunit-console.exe" 6 | $nuget_path = "$base_directory\packages\NuGet.CommandLine.1.4.20615.182\tools\" 7 | $solution_path = "$base_directory\$project_name.sln" 8 | $nuspec_path = "$base_directory\$project_name.nuspec" 9 | $release_files = @("$project_name.dll", "$project_name.pdb"); 10 | } 11 | 12 | task Publish -depends package { 13 | 14 | # Publish the nuget package 15 | # Todo 16 | } 17 | 18 | task Package -depends Default{ 19 | 20 | # Get the version of the assembly, so no runtime patching is needed 21 | Write-Host "Getting version of assembly" 22 | $version = (Get-Command $build_directory\4.0\Tamarack.dll).FileVersionInfo.ProductVersion 23 | Write-Host "Current is $version" 24 | 25 | # Create the nuget package 26 | Exec { & $nuget_path\nuget.exe pack $nuspec_path -Version "$version" -OutputDirectory "$build_directory" -Symbols } 27 | } 28 | 29 | task default -depends Build 30 | 31 | task Clean -description "This task cleans up the build directory" { 32 | 33 | # Delete the build directory for a clean start 34 | Remove-Item $build_directory -Force -Recurse -ErrorAction SilentlyContinue 35 | } 36 | 37 | task Build -depends Clean { 38 | 39 | # Build version for .NET 4.0 40 | Exec { Invoke-psake -framework '4.0' .\build.ps1 } 41 | 42 | "Finished 4.0 Build" 43 | 44 | # Build version for .NET 3.5 45 | Exec { Invoke-psake -framework '3.5' .\build.ps1 } 46 | 47 | "Finished 3.5 Build" 48 | } -------------------------------------------------------------------------------- /Src/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Tamarack")] 9 | [assembly: AssemblyDescription("A micro framework for implementing the Chain of Responsibility pattern in .NET. An essential tool in the OO toolbox for transforming rigid procedural code into a composable Domain Specific Language.")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Michael Valenty")] 12 | [assembly: AssemblyProduct("Tamarack")] 13 | [assembly: AssemblyCopyright("Copyright © 2011")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("32322e7e-5353-4e00-9a03-3543bb38545b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0")] -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/tabexpansion/Readme.PsakeTab.txt: -------------------------------------------------------------------------------- 1 | _________________________________________________________ 2 | A powershell script for tab completion of psake module build commands 3 | - tab completion for file name: psake d -> psake .\default.ps1 4 | - tab completion for parameters (docs,task,parameters,properties): psake -t -> psake -task 5 | - tab completion for task: psake -t c -> psake -task Clean 6 | --------------------------------------------------------- 7 | 8 | _________________________________________________________ 9 | Profile example 10 | --------------------------------------------------------- 11 | Push-Location (Split-Path -Path $MyInvocation.MyCommand.Definition -Parent) 12 | . ./PsakeTabExpansion.ps1 13 | Pop-Location 14 | 15 | if(-not (Test-Path Function:\DefaultTabExpansion)) { 16 | Rename-Item Function:\TabExpansion DefaultTabExpansion 17 | } 18 | 19 | # Set up tab expansion and include psake expansion 20 | function TabExpansion($line, $lastWord) { 21 | $lastBlock = [regex]::Split($line, '[|;]')[-1] 22 | 23 | switch -regex ($lastBlock) { 24 | # Execute psake tab completion for all psake-related commands 25 | '(Invoke-psake|psake) (.*)' { PsakeTabExpansion $lastBlock } 26 | # Fall back on existing tab expansion 27 | default { DefaultTabExpansion $line $lastWord } 28 | } 29 | } 30 | --------------------------------------------------------- 31 | 32 | _________________________________________________________ 33 | Based on work by: 34 | 35 | - Keith Dahlby, http://solutionizing.net/ 36 | - Mark Embling, http://www.markembling.info/ 37 | - Jeremy Skinner, http://www.jeremyskinner.co.uk/ 38 | - Dusty Candland, http://www.candland.net/blog 39 | --------------------------------------------------------- 40 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/runFile.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 18 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/runFile.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 18 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Tamarack.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tamarack", "src\Tamarack.csproj", "{9E347777-C32A-4019-A336-BBC0344829BB}" 5 | EndProject 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tamarack.Test", "test\Tamarack.Test.csproj", "{E68A1D10-CC05-4D9C-9AFF-0384E3F10A70}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tamarack.Example", "example\Tamarack.Example.csproj", "{45D22056-BCB8-48E7-8937-5DAD90C1990F}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {9E347777-C32A-4019-A336-BBC0344829BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {9E347777-C32A-4019-A336-BBC0344829BB}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {9E347777-C32A-4019-A336-BBC0344829BB}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {9E347777-C32A-4019-A336-BBC0344829BB}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {E68A1D10-CC05-4D9C-9AFF-0384E3F10A70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {E68A1D10-CC05-4D9C-9AFF-0384E3F10A70}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {E68A1D10-CC05-4D9C-9AFF-0384E3F10A70}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {E68A1D10-CC05-4D9C-9AFF-0384E3F10A70}.Release|Any CPU.Build.0 = Release|Any CPU 24 | {45D22056-BCB8-48E7-8937-5DAD90C1990F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 25 | {45D22056-BCB8-48E7-8937-5DAD90C1990F}.Debug|Any CPU.Build.0 = Debug|Any CPU 26 | {45D22056-BCB8-48E7-8937-5DAD90C1990F}.Release|Any CPU.ActiveCfg = Release|Any CPU 27 | {45D22056-BCB8-48E7-8937-5DAD90C1990F}.Release|Any CPU.Build.0 = Release|Any CPU 28 | EndGlobalSection 29 | GlobalSection(SolutionProperties) = preSolution 30 | HideSolutionNode = FALSE 31 | EndGlobalSection 32 | EndGlobal 33 | -------------------------------------------------------------------------------- /Src/Pipeline/Extensions/AssemblyPipelineExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Reflection; 4 | 5 | namespace Tamarack.Pipeline.Extensions 6 | { 7 | public static class AssemblyPipelineExtensions 8 | { 9 | public static Pipeline AddAssembly(this Pipeline pipeline) 10 | { 11 | return AddAssembly(pipeline, Assembly.GetCallingAssembly(), t => true); 12 | } 13 | 14 | public static Pipeline AddAssembly(this Pipeline pipeline, Func predicate) 15 | { 16 | return AddAssembly(pipeline, Assembly.GetCallingAssembly(), predicate); 17 | } 18 | 19 | public static Pipeline AddAssembly(this Pipeline pipeline, Assembly assembly) 20 | { 21 | return AddAssembly(pipeline, assembly, t => true); 22 | } 23 | 24 | public static void AddAssemblyOf(this Pipeline pipeline) 25 | { 26 | AddAssembly(pipeline, typeof(TOf).Assembly, t => true); 27 | } 28 | 29 | public static Pipeline AddAssembly( 30 | this Pipeline pipeline, 31 | Assembly assembly, 32 | Func predicate) 33 | { 34 | var filterTypes = assembly 35 | .GetTypes() 36 | .Where(t => typeof(IFilter).IsAssignableFrom(t)); 37 | 38 | foreach (var filterType in filterTypes.Where(predicate)) 39 | { 40 | pipeline.Add(filterType); 41 | } 42 | 43 | return pipeline; 44 | } 45 | 46 | public static Pipeline AddNamespace(this Pipeline pipeline, string filterNamespace) 47 | { 48 | return AddAssembly(pipeline, Assembly.GetCallingAssembly(), t => t.Namespace == filterNamespace); 49 | } 50 | 51 | public static Pipeline AddNamespace( 52 | this Pipeline pipeline, 53 | Assembly assembly, 54 | string filterNamespace) 55 | { 56 | return AddAssembly(pipeline, assembly, t => t.Namespace == filterNamespace); 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /Test/Pipeline/PipelineFuncTests.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Practices.Unity; 2 | using NUnit.Framework; 3 | using Tamarack.Pipeline; 4 | 5 | namespace Tamarack.Test.Pipeline 6 | { 7 | [TestFixture] 8 | public class PipelineFuncTests 9 | { 10 | [Test] 11 | public void Filter_can_modify_input() 12 | { 13 | var pipeline = new Pipeline(); 14 | pipeline.Add(new AddToInput(3)); 15 | pipeline.Finally(x => x + "!"); 16 | 17 | var output = pipeline.Execute(2); 18 | 19 | Assert.That(output, Is.EqualTo("5!")); 20 | } 21 | 22 | [Test] 23 | public void Filter_can_modify_output() 24 | { 25 | var pipeline = new Pipeline(); 26 | pipeline.Add(new AppendToOutput("#")); 27 | pipeline.Finally(x => x + "!"); 28 | 29 | var output = pipeline.Execute(2); 30 | 31 | Assert.That(output, Is.EqualTo("2!#")); 32 | } 33 | 34 | [Test] 35 | public void Should_apply_each_filter_in_order_added() 36 | { 37 | var pipeline = new Pipeline(); 38 | pipeline.Add(new AddToInput(2)); 39 | pipeline.Add(new AppendToOutput("@")); 40 | pipeline.Finally(x => x + "!"); 41 | 42 | var output = pipeline.Execute(2); 43 | 44 | Assert.That(output, Is.EqualTo("4!@")); 45 | } 46 | 47 | [Test] 48 | public void Should_have_fluent_interface() 49 | { 50 | var output = new Pipeline() 51 | .Add(new AddToInput(3)) 52 | .Add(new AppendToOutput("#")) 53 | .Finally(x => x + "!") 54 | .Execute(2); 55 | 56 | Assert.That(output, Is.EqualTo("5!#")); 57 | } 58 | 59 | [Test] 60 | public void Should_build_filters_with_service_provider() 61 | { 62 | var container = new UnityContainer() 63 | .RegisterType(new InjectionConstructor("*")); 64 | 65 | var output = new Pipeline(new UnityServiceProvider(container)) 66 | .Add() 67 | .Finally(x => x + "!") 68 | .Execute(2); 69 | 70 | Assert.That(output, Is.EqualTo("2!*")); 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/examples/checkvariables.ps1: -------------------------------------------------------------------------------- 1 | Properties { 2 | $x = 1 3 | $y = 2 4 | } 5 | 6 | FormatTaskName "[{0}]" 7 | 8 | Task default -Depends Verify 9 | 10 | Task Verify -Description "This task verifies psake's variables" { 11 | 12 | $assertions = @( 13 | ((Test-Path 'variable:\psake'), "'psake' variable was not exported from module"), 14 | (($variable:psake.ContainsKey("build_success")), "psake variable does not contain 'build_success'"), 15 | (($variable:psake.ContainsKey("version")), "psake variable does not contain 'version'"), 16 | (($variable:psake.ContainsKey("build_script_file")), "psake variable does not contain 'build_script_file'"), 17 | (($variable:psake.ContainsKey("framework_version")), "psake variable does not contain 'framework_version'"), 18 | ((!$variable:psake.build_success), 'psake.build_success should be $false'), 19 | ((![string]::IsNullOrEmpty($variable:psake.version)), 'psake.version was null or empty'), 20 | (($variable:psake.build_script_file -ne $null), '$psake.build_script_file was null'), 21 | (($variable:psake.build_script_file.Name -eq "checkvariables.ps1"), ("psake variable: {0} was not equal to 'VerifyVariables.ps1'" -f $psake.build_script_file.Name)), 22 | ((![string]::IsNullOrEmpty($variable:psake.framework_version)), 'psake variable: $psake.framework_version was null or empty'), 23 | (($variable:psake.context.Peek().tasks.Count -ne 0), 'psake variable: $tasks had length zero'), 24 | (($variable:psake.context.Peek().properties.Count -ne 0), 'psake variable: $properties had length zero'), 25 | (($variable:psake.context.Peek().includes.Count -eq 0), 'psake variable: $includes should have had length zero'), 26 | (($variable:psake.context.Peek().formatTaskNameString -ne ""), 'psake variable: $formatTaskNameString was not set correctly'), 27 | (($variable:psake.context.Peek().currentTaskName -eq "Verify"), 'psake variable: $currentTaskName was not set correctly') 28 | ) 29 | 30 | foreach ($assertion in $assertions) 31 | { 32 | Assert ( $assertion[0] ) $assertion[1] 33 | } 34 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/psake-config.ps1: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------- 2 | #Specify defaults and do not auto-load modules 3 | #------------------------------------------------------------------- 4 | $psake.config = new-object psobject -property @{ 5 | defaultBuildFileName="default.ps1"; 6 | taskNameFormat="Executing {0}"; 7 | exitCode="1"; 8 | verboseError=$false; 9 | modules=(new-object psobject -property @{ autoload=$false }) 10 | } 11 | 12 | <# 13 | ------------------------------------------------------------------- 14 | Specify defaults and auto-load modules from .\modules folder 15 | ------------------------------------------------------------------- 16 | $psake.config = new-object psobject -property @{ 17 | defaultBuildFileName="default.ps1"; 18 | taskNameFormat="Executing {0}"; 19 | exitCode="1"; 20 | verboseError=$false; 21 | modules=(new-object psobject -property @{ autoload=$true}) 22 | } 23 | 24 | ------------------------------------------------------------------- 25 | Specify defaults and auto-load modules from .\my_modules folder 26 | ------------------------------------------------------------------- 27 | $psake.config = new-object psobject -property @{ 28 | defaultBuildFileName="default.ps1"; 29 | taskNameFormat="Executing {0}"; 30 | exitCode="1"; 31 | verboseError=$false; 32 | modules=(new-object psobject -property @{ autoload=$true; directory=".\my_modules" }) 33 | } 34 | 35 | ------------------------------------------------------------------- 36 | Specify defaults and explicitly load module(s) 37 | ------------------------------------------------------------------- 38 | $psake.config = new-object psobject -property @{ 39 | defaultBuildFileName="default.ps1"; 40 | taskNameFormat="Executing {0}"; 41 | exitCode="1"; 42 | verboseError=$false; 43 | modules=(new-object psobject -property @{ 44 | autoload=$false; 45 | module=(new-object psobject -property @{path="c:\module1dir\module1.ps1"}), 46 | (new-object psobject -property @{path="c:\module1dir\module2.ps1"}) 47 | }) 48 | } 49 | #> -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/specs/writing_psake_variables_should_pass.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | $x = 1 3 | } 4 | 5 | FormatTaskName "[{0}]" 6 | 7 | task default -depends Verify 8 | 9 | task Verify -description "This task verifies psake's variables" { 10 | 11 | #Verify the exported module variables 12 | cd variable: 13 | Assert (Test-Path "psake") "variable psake was not exported from module" 14 | 15 | Assert ($psake.ContainsKey("build_success")) "'psake' variable does not contain key 'build_success'" 16 | Assert ($psake.ContainsKey("version")) "'psake' variable does not contain key 'version'" 17 | Assert ($psake.ContainsKey("build_script_file")) "'psake' variable does not contain key 'build_script_file'" 18 | Assert ($psake.ContainsKey("framework_version")) "'psake' variable does not contain key 'framework_version'" 19 | Assert ($psake.ContainsKey("build_script_dir")) "'psake' variable does not contain key 'build_script_dir'" 20 | Assert ($psake.ContainsKey("config")) "'psake' variable does not contain key 'config'" 21 | 22 | Assert (!$psake.build_success) '$psake.build_success should be $false' 23 | Assert ($psake.version) '$psake.version was null or empty' 24 | Assert ($psake.build_script_file) '$psake.build_script_file was null' 25 | Assert ($psake.build_script_file.Name -eq "writing_psake_variables_should_pass.ps1") ("psake variable: {0} was not equal to 'writing_psake_variables_should_pass.ps1'" -f $psake.build_script_file.Name) 26 | Assert ($psake.build_script_dir) '$psake variable: $psake.build_script_dir was null or empty' 27 | Assert ($psake.framework_version) '$psake variable: $psake.framework_version was null or empty' 28 | 29 | Assert ($psake.context.Count -eq 1) '$psake.context should have had a length of one (1) during script execution' 30 | 31 | Assert ($psake.config) '$psake.config is $null' 32 | Assert ($psake.config.defaultBuildFileName -eq "default.ps1") '$psake.config.defaultBuildFileName not equal to "default.ps1"' 33 | Assert ($psake.config.taskNameFormat -eq "Executing {0}") '$psake.config.taskNameFormat not equal to "Executing {0}"' 34 | Assert ($psake.config.verboseError -eq $false) '$psake.config.verboseError not equal to $true' 35 | Assert ($psake.config.modules) '$psake.config.modules is $null' 36 | } -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/psake-buildTester.ps1: -------------------------------------------------------------------------------- 1 | function Main() 2 | { 3 | write-host "Running psake build tests" -ForeGroundColor GREEN 4 | remove-module psake -ea SilentlyContinue 5 | import-module .\psake.psm1 6 | $psake.run_by_psake_build_tester = $true 7 | $results = runBuilds 8 | remove-module psake 9 | 10 | "" 11 | $results | Sort 'Name' | % { if ($_.Result -eq "Passed") { write-host ($_.Name + " (Passed)") -ForeGroundColor 'GREEN'} else { write-host ($_.Name + " (Failed)") -ForeGroundColor 'RED'}} 12 | "" 13 | 14 | $failed = $results | ? { $_.Result -eq "Failed" } 15 | if ($failed) 16 | { 17 | write-host "One or more of the build files failed" -ForeGroundColor RED 18 | exit 1 19 | } 20 | else 21 | { 22 | write-host "All Builds Passed" -ForeGroundColor GREEN 23 | exit 0 24 | } 25 | } 26 | 27 | function runBuilds() 28 | { 29 | $buildFiles = ls specs\*.ps1 30 | $testResults = @() 31 | 32 | #Add a fake build file to the $buildFiles array so that we can verify 33 | #that Invoke-psake fails 34 | $non_existant_buildfile = "" | select Name, FullName 35 | $non_existant_buildfile.Name = "specifying_a_non_existant_buildfile_should_fail.ps1" 36 | $non_existant_buildfile.FullName = "c:\specifying_a_non_existant_buildfile_should_fail.ps1" 37 | $buildFiles += $non_existant_buildfile 38 | 39 | foreach($buildFile in $buildFiles) 40 | { 41 | $testResult = "" | select Name, Result 42 | $testResult.Name = $buildFile.Name 43 | 44 | invoke-psake $buildFile.FullName -Parameters @{'p1'='v1'; 'p2'='v2'} -Properties @{'x'='1'; 'y'='2'} | Out-Null 45 | $testResult.Result = (getResult $buildFile.Name $psake.build_success) 46 | $testResults += $testResult 47 | if ($testResult.Result -eq "Passed") 48 | { 49 | write-host "." -ForeGroundColor GREEN -NoNewLine 50 | } 51 | else 52 | { 53 | write-host "F" -ForeGroundColor RED -NoNewLine 54 | } 55 | } 56 | 57 | return $testResults 58 | } 59 | 60 | function getResult([string]$fileName, [bool]$buildSucceeded) 61 | { 62 | $shouldSucceed = $null 63 | if ($fileName.EndsWith("_should_pass.ps1")) 64 | { 65 | $shouldSucceed = $true 66 | } 67 | elseif ($fileName.EndsWith("_should_fail.ps1")) 68 | { 69 | $shouldSucceed = $false 70 | } 71 | else 72 | { 73 | throw "Invalid specification syntax. Specs should end with _should_pass or _should_fail. $fileName" 74 | } 75 | if ($buildSucceeded -eq $shouldSucceed) 76 | { 77 | "Passed" 78 | } 79 | else 80 | { 81 | "Failed" 82 | } 83 | } 84 | 85 | main -------------------------------------------------------------------------------- /packages/psake.4.0.1.0/tools/README.markdown: -------------------------------------------------------------------------------- 1 | Welcome to the psake project. 2 | ============================= 3 | 4 | psake is a build automation tool written in PowerShell. It avoids the angle-bracket tax associated with executable XML by leveraging the PowerShell syntax in your build scripts. 5 | psake has a syntax inspired by rake (aka make in Ruby) and bake (aka make in Boo), but is easier to script because it leverages your existent command-line knowledge. 6 | 7 | psake is pronounced sake – as in Japanese rice wine. It does NOT rhyme with make, bake, or rake. 8 | 9 | ## How to get started: 10 | 11 | **Step 1:** Download and extract the project 12 | 13 | You will need to "unblock" the zip file before extracting - PowerShell by default does not run files downloaded from the internet. 14 | Just right-click the zip and click on "properties" and click on the "unblock" button. 15 | 16 | **Step 2:** CD into the directory where you extracted the project (where the psake.psm1 file is) 17 | 18 | > Import-Module .\psake.psm1 19 | 20 | If you encounter the following error "Import-Module : ...psake.psm1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details. 21 | 22 | 1. Run PowerShell as administrator 23 | 2. Set-ExecutionPolicy RemoteSigned 24 | 25 | > Get-Help Invoke-psake -Full 26 | > - this will show you help and examples of how to use psake 27 | 28 | **Step 3:** Run some examples 29 | 30 | > CD .\examples 31 | > 32 | > Invoke-psake 33 | > - This will execute the "default" task in the "default.ps1" 34 | > 35 | > Invoke-psake .\default.ps1 Clean 36 | > - will execute the single task in the default.ps1 script 37 | 38 | ## How To Contribute, Collaborate, Communicate 39 | 40 | If you'd like to get involved with psake, we have discussion groups over at google: **[psake-dev](http://groups.google.com/group/psake-dev)** **[psake-users](http://groups.google.com/group/psake-users)** 41 | 42 | Anyone can fork the main repository and submit patches, as well. And lastly, the [wiki](http://wiki.github.com/JamesKovacs/psake/) and [issues list](http://github.com/JamesKovacs/psake/issues) are also open for additions, edits, and discussion. 43 | 44 | Also check out the **[psake-contrib](http://github.com/JamesKovacs/psake-contrib)** project for scripts,modules and functions to help you with a build 45 | 46 | ## Contributors 47 | 48 | Many thanks for contributions to psake are due (in alphabetical order): 49 | 50 | * candland 51 | * Staxmanade 52 | * lanwin 53 | * smbecker 54 | * stej -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Microsoft Public License (Ms-PL) 2 | 3 | This license governs use of the accompanying software. If you use the software, you 4 | accept this license. If you do not accept the license, do not use the software. 5 | 6 | 1. Definitions 7 | The terms "reproduce," "reproduction," "derivative works," and "distribution" have the 8 | same meaning here as under U.S. copyright law. 9 | A "contribution" is the original software, or any additions or changes to the software. 10 | A "contributor" is any person that distributes its contribution under this license. 11 | "Licensed patents" are a contributor's patent claims that read directly on its contribution. 12 | 13 | 2. Grant of Rights 14 | (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. 15 | (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. 16 | 17 | 3. Conditions and Limitations 18 | (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. 19 | (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. 20 | (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. 21 | (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. 22 | (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. -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit-console.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 24 | 25 | 26 | 29 | 31 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit-console.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 24 | 25 | 26 | 29 | 31 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit-agent.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 24 | 25 | 26 | 29 | 31 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit-console-x86.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 24 | 25 | 26 | 29 | 31 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit-agent.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 24 | 25 | 26 | 29 | 31 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit-console-x86.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 24 | 25 | 26 | 29 | 31 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit-agent-x86.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 24 | 25 | 26 | 29 | 31 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit-agent-x86.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 24 | 25 | 26 | 29 | 31 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /Src/Tamarack.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | AnyCPU 6 | 8.0.30703 7 | 2.0 8 | {9E347777-C32A-4019-A336-BBC0344829BB} 9 | Library 10 | Properties 11 | Tamarack 12 | Tamarack 13 | v4.0 14 | 512 15 | 16 | 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | pdbonly 27 | true 28 | bin\Release\ 29 | TRACE 30 | prompt 31 | 4 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 61 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/pnunit-agent.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 30 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 69 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/pnunit-launcher.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 30 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 69 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/pnunit-agent.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 30 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 69 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/pnunit-launcher.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 30 | 32 | 33 | 34 | 37 | 39 | 40 | 41 | 42 | 45 | 47 | 48 | 49 | 50 | 53 | 55 | 56 | 57 | 58 | 61 | 63 | 64 | 65 | 66 | 69 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 36 | 38 | 39 | 40 | 43 | 45 | 46 | 47 | 48 | 51 | 53 | 54 | 55 | 56 | 59 | 61 | 62 | 63 | 64 | 67 | 69 | 70 | 71 | 72 | 75 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 36 | 38 | 39 | 40 | 43 | 45 | 46 | 47 | 48 | 51 | 53 | 54 | 55 | 56 | 59 | 61 | 62 | 63 | 64 | 67 | 69 | 70 | 71 | 72 | 75 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/nunit-x86.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 36 | 38 | 39 | 40 | 43 | 45 | 46 | 47 | 48 | 51 | 53 | 54 | 55 | 56 | 59 | 61 | 62 | 63 | 64 | 67 | 69 | 70 | 71 | 72 | 75 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/nunit-x86.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 36 | 38 | 39 | 40 | 43 | 45 | 46 | 47 | 48 | 51 | 53 | 54 | 55 | 56 | 59 | 61 | 62 | 63 | 64 | 67 | 69 | 70 | 71 | 72 | 75 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/NUnitTests.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 25 | 26 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 54 | 55 | 60 | 61 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/NUnitTests.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 25 | 26 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 54 | 55 | 60 | 61 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /Example/Tamarack.Example.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | AnyCPU 6 | 8.0.30703 7 | 2.0 8 | {45D22056-BCB8-48E7-8937-5DAD90C1990F} 9 | Library 10 | Properties 11 | Tamarack.Example 12 | Tamarack.Example 13 | v4.0 14 | 512 15 | 16 | 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | pdbonly 27 | true 28 | bin\Release\ 29 | TRACE 30 | prompt 31 | 4 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | {9E347777-C32A-4019-A336-BBC0344829BB} 61 | Tamarack 62 | 63 | 64 | 65 | 66 | 73 | -------------------------------------------------------------------------------- /Test/Tamarack.Test.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | AnyCPU 6 | 8.0.30703 7 | 2.0 8 | {E68A1D10-CC05-4D9C-9AFF-0384E3F10A70} 9 | Library 10 | Properties 11 | Tamarack.Test 12 | Tamarack.Test 13 | v4.0 14 | 512 15 | 16 | 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | pdbonly 27 | true 28 | bin\Release\ 29 | TRACE 30 | prompt 31 | 4 32 | 33 | 34 | 35 | ..\packages\Unity.2.0\lib\20\Microsoft.Practices.Unity.dll 36 | True 37 | 38 | 39 | False 40 | ..\packages\NUnit.2.5.9.10348\lib\nunit.framework.dll 41 | True 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | {9E347777-C32A-4019-A336-BBC0344829BB} 66 | Tamarack 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 81 | -------------------------------------------------------------------------------- /README.markdown: -------------------------------------------------------------------------------- 1 | Tamarack is a micro framework for implementing the Chain of Responsibility pattern in .NET 2 | ================================================================================================= 3 | 4 | The Chain of Responsibility is a key building block of extensible software. 5 | 6 | >Avoid coupling the sender of a request to its receiver by giving more than one object a 7 | >chance to handle the request. Chain the receiving objects and pass the request along the 8 | >chain until an object handles it. -- Gang of Four 9 | 10 | Variations of this pattern are the basis for Servlet Filters, IIS Modules and Handlers and several open source projects including Sync4J, JAMES, Log4Net and Unity. It's an essential tool in the OO toolbox and key in transforming rigid procedural code into a composable Domain Specific Language. 11 | 12 | Show me examples! 13 | ----------- 14 | Consider a block of code to process a blog comment coming from a web-based rich text editor. There are 15 | probably several things you'll want to do before letting the text into your database. 16 | 17 | ```c# 18 | public class BlogEngine 19 | { 20 | ... 21 | 22 | public int Submit(Post post) 23 | { 24 | var pipeline = new Pipeline() 25 | .Add(new CanonicalizeHtml()) 26 | .Add(new StripMaliciousTags()) 27 | .Add(new RemoveJavascript()) 28 | .Add(new RewriteProfanity()) 29 | .Add(new GuardAgainstDoublePost()) 30 | .Finally(p => repository.Save(p)); 31 | 32 | var newId = pipeline.Execute(post); 33 | 34 | return newId; 35 | } 36 | } 37 | ``` 38 | 39 | How about user login? There are all kinds of things you might need to do there: 40 | 41 | ```c# 42 | public class LoginService 43 | { 44 | ... 45 | 46 | public bool Login(string username, string password) 47 | { 48 | var pipeline = new Pipeline(serviceProvider) 49 | .Add() 50 | .Add() 51 | .Add() 52 | .Add() 53 | .Finally(c => false); 54 | 55 | return pipeline.Execute(new LoginContext(username, password)); 56 | } 57 | } 58 | ``` 59 | 60 | Calculating a spam score in a random block of text: 61 | 62 | ```c# 63 | public class SpamScorer 64 | { 65 | ... 66 | 67 | public double CalculateSpamScore(string text) 68 | { 69 | var pipeline = new Pipeline(serviceProvider) 70 | .Add() 71 | .Add() 72 | .Add() 73 | .Finally(score => 0); 74 | 75 | return pipeline.Execute(text); 76 | } 77 | } 78 | ``` 79 | 80 | Prefer convention over configuration? Try this instead: 81 | 82 | ```c# 83 | public double CalculateSpamScore(string text) 84 | { 85 | var pipeline = new Pipeline(serviceProvider) 86 | .AddAssembly() 87 | .AddNamespace("Tamarack.Example.Pipeline.SpamScorer.Filters") 88 | .AddConfigurationSection("spamScoreFilters") 89 | .Finally(score => 0); 90 | 91 | return pipeline.Execute(text); 92 | } 93 | ``` 94 | 95 | How does it work? 96 | ----------- 97 | 98 | It's pretty simple, there is just one interface to implement and it looks like this: 99 | 100 | public interface IFilter 101 | { 102 | TOut Execute(T context, Func executeNext); 103 | } 104 | 105 | Basically, you get an input to operate on and you return a value. The executeNext delegate 106 | is the next filter in the chain using it in this fashion allows you several options: 107 | 108 | * Modify the input before the next filter gets it 109 | * Modify the output of the next filter before returning 110 | * Short circuit out of the chain by not calling the executeNext delegate 111 | 112 | I learn by example, so let's look at this interface in action. In the spam score calculator 113 | example, each filter looks for markers in the text and adds to the overall spam score by 114 | modifying the _result_ of the next filter before returning. 115 | 116 | ```c# 117 | public class PrescriptionDrugFilter : IFilter 118 | { 119 | public double Execute(string text, Func executeNext) 120 | { 121 | var score = executeNext(text); 122 | 123 | if (text.Contains("viagra")) 124 | score += .25; 125 | 126 | return score; 127 | } 128 | } 129 | ``` 130 | 131 | In this login example, we're look for the user in our local user store and if it exists 132 | we'll short-circuit the chain and authenticate the request. Otherwise we'll let the request 133 | continue to the next filter which looks for the user in an Ldap respository. 134 | 135 | ```c# 136 | public class AuthenticateAgainstLocalStore : IFilter 137 | { 138 | ... 139 | 140 | public bool Execute(LoginContext context, Func executeNext) 141 | { 142 | var user = repository.FindByUsername(context.Username); 143 | 144 | if (user != null) 145 | return user.IsValid(context.Password); // short circuit 146 | 147 | return executeNext(context); 148 | } 149 | } 150 | ``` 151 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/NUnitFitTests.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

NUnit Acceptance Tests

5 |

6 | Developers love self-referential programs! Hence, NUnit has always run all it's 7 | own tests, even those that are not really unit tests. 8 |

Now, beginning with NUnit 2.4, NUnit has top-level tests using Ward Cunningham's 9 | FIT framework. At this time, the tests are pretty rudimentary, but it's a start 10 | and it's a framework for doing more. 11 |

Running the Tests

12 |

Open a console or shell window and navigate to the NUnit bin directory, which 13 | contains this file. To run the test under Microsoft .Net, enter the command 14 |

    runFile NUnitFitTests.html TestResults.html .
15 | To run it under Mono, enter 16 |
    mono runFile.exe NUnitFitTests.html TestResults.html .
17 | Note the space and dot at the end of each command. The results of your test 18 | will be in TestResults.html in the same directory. 19 |

Platform and CLR Version

20 | 21 | 22 | 23 | 24 |
NUnit.Fixtures.PlatformInfo
25 |

Verify Unit Tests

26 |

27 | Load and run the NUnit unit tests, verifying that the results are as expected. 28 | When these tests are run on different platforms, different numbers of tests may 29 | be skipped, so the values for Skipped and Run tests are informational only. 30 |

31 | The number of tests in each assembly should be constant across all platforms - 32 | any discrepancy usually means that one of the test source files was not 33 | compiled on the platform. There should be no failures and no tests ignored. 34 |

Note: 35 | At the moment, the nunit.extensions.tests assembly is failing because the 36 | fixture doesn't initialize addins in the test domain. 37 |

38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 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 | 121 | 122 |
NUnit.Fixtures.AssemblyRunner
AssemblyTests()Run()Skipped()Ignored()Failures()
nunit.framework.tests.dll397  00
nunit.core.tests.dll355  00
nunit.util.tests.dll238  00
nunit.mocks.tests.dll43  00
nunit.extensions.tests.dll5  00
nunit-console.tests.dll40  00
nunit.uikit.tests.dll34  00
nunit-gui.tests.dll15  00
nunit.fixtures.tests.dll6  00
123 |

Code Snippet Tests

124 |

125 | These tests create a test assembly from a snippet of code and then load and run 126 | the tests that it contains, verifying that the structure of the loaded tests is 127 | as expected and that the number of tests run, skipped, ignored or failed is 128 | correct. 129 |

130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 181 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 210 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 235 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 259 | 264 | 265 | 266 | 267 | 268 | 269 |
NUnit.Fixtures.SnippetRunner
CodeTree()Run()Skipped()Ignored()Failures()
public class TestClass
144 | {
145 | }
146 |
EMPTY0000
using NUnit.Framework;
155 | 
156 | [TestFixture]
157 | public class TestClass
158 | {
159 | }
160 |
TestClass0000
using NUnit.Framework;
169 | 
170 | [TestFixture]
171 | public class TestClass
172 | {
173 |     [Test]
174 |     public void T1() { }
175 |     [Test]
176 |     public void T2() { }
177 |     [Test]
178 |     public void T3() { }
179 | }
180 |
TestClass
182 | >T1
183 | >T2
184 | >T3
185 |
3000
using NUnit.Framework;
193 | 
194 | [TestFixture]
195 | public class TestClass1
196 | {
197 |     [Test]
198 |     public void T1() { }
199 | }
200 | 
201 | [TestFixture]
202 | public class TestClass2
203 | {
204 |     [Test]
205 |     public void T2() { }
206 |     [Test]
207 |     public void T3() { }
208 | }
209 |
TestClass1
211 | >T1
212 | TestClass2
213 | >T2
214 | >T3
215 |
3000
using NUnit.Framework;
223 | 
224 | [TestFixture]
225 | public class TestClass
226 | {
227 |     [Test]
228 |     public void T1() { }
229 |     [Test, Ignore]
230 |     public void T2() { }
231 |     [Test]
232 |     public void T3() { }
233 | }
234 |
TestClass
236 | >T1
237 | >T2
238 | >T3
239 |
2010
using NUnit.Framework;
247 | 
248 | [TestFixture]
249 | public class TestClass
250 | {
251 |     [Test]
252 |     public void T1() { }
253 |     [Test, Explicit]
254 |     public void T2() { }
255 |     [Test]
256 |     public void T3() { }
257 | }
258 |
TestClass
260 | >T1
261 | >T2
262 | >T3
263 |
2100
270 |

Summary Information

271 | 272 | 273 | 274 | 275 |
fit.Summary
276 | 277 | 278 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/NUnitFitTests.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

NUnit Acceptance Tests

5 |

6 | Developers love self-referential programs! Hence, NUnit has always run all it's 7 | own tests, even those that are not really unit tests. 8 |

Now, beginning with NUnit 2.4, NUnit has top-level tests using Ward Cunningham's 9 | FIT framework. At this time, the tests are pretty rudimentary, but it's a start 10 | and it's a framework for doing more. 11 |

Running the Tests

12 |

Open a console or shell window and navigate to the NUnit bin directory, which 13 | contains this file. To run the test under Microsoft .Net, enter the command 14 |

    runFile NUnitFitTests.html TestResults.html .
15 | To run it under Mono, enter 16 |
    mono runFile.exe NUnitFitTests.html TestResults.html .
17 | Note the space and dot at the end of each command. The results of your test 18 | will be in TestResults.html in the same directory. 19 |

Platform and CLR Version

20 | 21 | 22 | 23 | 24 |
NUnit.Fixtures.PlatformInfo
25 |

Verify Unit Tests

26 |

27 | Load and run the NUnit unit tests, verifying that the results are as expected. 28 | When these tests are run on different platforms, different numbers of tests may 29 | be skipped, so the values for Skipped and Run tests are informational only. 30 |

31 | The number of tests in each assembly should be constant across all platforms - 32 | any discrepancy usually means that one of the test source files was not 33 | compiled on the platform. There should be no failures and no tests ignored. 34 |

Note: 35 | At the moment, the nunit.extensions.tests assembly is failing because the 36 | fixture doesn't initialize addins in the test domain. 37 |

38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 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 | 121 | 122 |
NUnit.Fixtures.AssemblyRunner
AssemblyTests()Run()Skipped()Ignored()Failures()
nunit.framework.tests.dll397  00
nunit.core.tests.dll355  00
nunit.util.tests.dll238  00
nunit.mocks.tests.dll43  00
nunit.extensions.tests.dll5  00
nunit-console.tests.dll40  00
nunit.uikit.tests.dll34  00
nunit-gui.tests.dll15  00
nunit.fixtures.tests.dll6  00
123 |

Code Snippet Tests

124 |

125 | These tests create a test assembly from a snippet of code and then load and run 126 | the tests that it contains, verifying that the structure of the loaded tests is 127 | as expected and that the number of tests run, skipped, ignored or failed is 128 | correct. 129 |

130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 181 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 210 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 235 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 259 | 264 | 265 | 266 | 267 | 268 | 269 |
NUnit.Fixtures.SnippetRunner
CodeTree()Run()Skipped()Ignored()Failures()
public class TestClass
144 | {
145 | }
146 |
EMPTY0000
using NUnit.Framework;
155 | 
156 | [TestFixture]
157 | public class TestClass
158 | {
159 | }
160 |
TestClass0000
using NUnit.Framework;
169 | 
170 | [TestFixture]
171 | public class TestClass
172 | {
173 |     [Test]
174 |     public void T1() { }
175 |     [Test]
176 |     public void T2() { }
177 |     [Test]
178 |     public void T3() { }
179 | }
180 |
TestClass
182 | >T1
183 | >T2
184 | >T3
185 |
3000
using NUnit.Framework;
193 | 
194 | [TestFixture]
195 | public class TestClass1
196 | {
197 |     [Test]
198 |     public void T1() { }
199 | }
200 | 
201 | [TestFixture]
202 | public class TestClass2
203 | {
204 |     [Test]
205 |     public void T2() { }
206 |     [Test]
207 |     public void T3() { }
208 | }
209 |
TestClass1
211 | >T1
212 | TestClass2
213 | >T2
214 | >T3
215 |
3000
using NUnit.Framework;
223 | 
224 | [TestFixture]
225 | public class TestClass
226 | {
227 |     [Test]
228 |     public void T1() { }
229 |     [Test, Ignore]
230 |     public void T2() { }
231 |     [Test]
232 |     public void T3() { }
233 | }
234 |
TestClass
236 | >T1
237 | >T2
238 | >T3
239 |
2010
using NUnit.Framework;
247 | 
248 | [TestFixture]
249 | public class TestClass
250 | {
251 |     [Test]
252 |     public void T1() { }
253 |     [Test, Explicit]
254 |     public void T2() { }
255 |     [Test]
256 |     public void T3() { }
257 | }
258 |
TestClass
260 | >T1
261 | >T2
262 | >T3
263 |
2100
270 |

Summary Information

271 | 272 | 273 | 274 | 275 |
fit.Summary
276 | 277 | 278 | -------------------------------------------------------------------------------- /packages/NUnit.2.5.9.10348/Tools/NUnitFitTests.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

NUnit Acceptance Tests

5 |

6 | Developers love self-referential programs! Hence, NUnit has always run all it's 7 | own tests, even those that are not really unit tests. 8 |

Now, beginning with NUnit 2.4, NUnit has top-level tests using Ward Cunningham's 9 | FIT framework. At this time, the tests are pretty rudimentary, but it's a start 10 | and it's a framework for doing more. 11 |

Running the Tests

12 |

Open a console or shell window and navigate to the NUnit bin directory, which 13 | contains this file. To run the test under Microsoft .Net, enter the command 14 |

    runFile NUnitFitTests.html TestResults.html .
15 | To run it under Mono, enter 16 |
    mono runFile.exe NUnitFitTests.html TestResults.html .
17 | Note the space and dot at the end of each command. The results of your test 18 | will be in TestResults.html in the same directory. 19 |

Platform and CLR Version

20 | 21 | 22 | 23 | 24 |
NUnit.Fixtures.PlatformInfo
25 |

Verify Unit Tests

26 |

27 | Load and run the NUnit unit tests, verifying that the results are as expected. 28 | When these tests are run on different platforms, different numbers of tests may 29 | be skipped, so the values for Skipped and Run tests are informational only. 30 |

31 | The number of tests in each assembly should be constant across all platforms - 32 | any discrepancy usually means that one of the test source files was not 33 | compiled on the platform. There should be no failures and no tests ignored. 34 |

Note: 35 | At the moment, the nunit.extensions.tests assembly is failing because the 36 | fixture doesn't initialize addins in the test domain. 37 |

38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 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 | 121 | 122 |
NUnit.Fixtures.AssemblyRunner
AssemblyTests()Run()Skipped()Ignored()Failures()
nunit.framework.tests.dll397  00
nunit.core.tests.dll355  00
nunit.util.tests.dll238  00
nunit.mocks.tests.dll43  00
nunit.extensions.tests.dll5  00
nunit-console.tests.dll40  00
nunit.uikit.tests.dll34  00
nunit-gui.tests.dll15  00
nunit.fixtures.tests.dll6  00
123 |

Code Snippet Tests

124 |

125 | These tests create a test assembly from a snippet of code and then load and run 126 | the tests that it contains, verifying that the structure of the loaded tests is 127 | as expected and that the number of tests run, skipped, ignored or failed is 128 | correct. 129 |

130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 181 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 210 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 235 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 259 | 264 | 265 | 266 | 267 | 268 | 269 |
NUnit.Fixtures.SnippetRunner
CodeTree()Run()Skipped()Ignored()Failures()
public class TestClass
144 | {
145 | }
146 |
EMPTY0000
using NUnit.Framework;
155 | 
156 | [TestFixture]
157 | public class TestClass
158 | {
159 | }
160 |
TestClass0000
using NUnit.Framework;
169 | 
170 | [TestFixture]
171 | public class TestClass
172 | {
173 |     [Test]
174 |     public void T1() { }
175 |     [Test]
176 |     public void T2() { }
177 |     [Test]
178 |     public void T3() { }
179 | }
180 |
TestClass
182 | >T1
183 | >T2
184 | >T3
185 |
3000
using NUnit.Framework;
193 | 
194 | [TestFixture]
195 | public class TestClass1
196 | {
197 |     [Test]
198 |     public void T1() { }
199 | }
200 | 
201 | [TestFixture]
202 | public class TestClass2
203 | {
204 |     [Test]
205 |     public void T2() { }
206 |     [Test]
207 |     public void T3() { }
208 | }
209 |
TestClass1
211 | >T1
212 | TestClass2
213 | >T2
214 | >T3
215 |
3000
using NUnit.Framework;
223 | 
224 | [TestFixture]
225 | public class TestClass
226 | {
227 |     [Test]
228 |     public void T1() { }
229 |     [Test, Ignore]
230 |     public void T2() { }
231 |     [Test]
232 |     public void T3() { }
233 | }
234 |
TestClass
236 | >T1
237 | >T2
238 | >T3
239 |
2010
using NUnit.Framework;
247 | 
248 | [TestFixture]
249 | public class TestClass
250 | {
251 |     [Test]
252 |     public void T1() { }
253 |     [Test, Explicit]
254 |     public void T2() { }
255 |     [Test]
256 |     public void T3() { }
257 | }
258 |
TestClass
260 | >T1
261 | >T2
262 | >T3
263 |
2100
270 |

Summary Information

271 | 272 | 273 | 274 | 275 |
fit.Summary
276 | 277 | 278 | -------------------------------------------------------------------------------- /Src/packages/NUnit.2.5.9.10348/Tools/NUnitFitTests.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

NUnit Acceptance Tests

5 |

6 | Developers love self-referential programs! Hence, NUnit has always run all it's 7 | own tests, even those that are not really unit tests. 8 |

Now, beginning with NUnit 2.4, NUnit has top-level tests using Ward Cunningham's 9 | FIT framework. At this time, the tests are pretty rudimentary, but it's a start 10 | and it's a framework for doing more. 11 |

Running the Tests

12 |

Open a console or shell window and navigate to the NUnit bin directory, which 13 | contains this file. To run the test under Microsoft .Net, enter the command 14 |

    runFile NUnitFitTests.html TestResults.html .
15 | To run it under Mono, enter 16 |
    mono runFile.exe NUnitFitTests.html TestResults.html .
17 | Note the space and dot at the end of each command. The results of your test 18 | will be in TestResults.html in the same directory. 19 |

Platform and CLR Version

20 | 21 | 22 | 23 | 24 |
NUnit.Fixtures.PlatformInfo
25 |

Verify Unit Tests

26 |

27 | Load and run the NUnit unit tests, verifying that the results are as expected. 28 | When these tests are run on different platforms, different numbers of tests may 29 | be skipped, so the values for Skipped and Run tests are informational only. 30 |

31 | The number of tests in each assembly should be constant across all platforms - 32 | any discrepancy usually means that one of the test source files was not 33 | compiled on the platform. There should be no failures and no tests ignored. 34 |

Note: 35 | At the moment, the nunit.extensions.tests assembly is failing because the 36 | fixture doesn't initialize addins in the test domain. 37 |

38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 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 | 121 | 122 |
NUnit.Fixtures.AssemblyRunner
AssemblyTests()Run()Skipped()Ignored()Failures()
nunit.framework.tests.dll397  00
nunit.core.tests.dll355  00
nunit.util.tests.dll238  00
nunit.mocks.tests.dll43  00
nunit.extensions.tests.dll5  00
nunit-console.tests.dll40  00
nunit.uikit.tests.dll34  00
nunit-gui.tests.dll15  00
nunit.fixtures.tests.dll6  00
123 |

Code Snippet Tests

124 |

125 | These tests create a test assembly from a snippet of code and then load and run 126 | the tests that it contains, verifying that the structure of the loaded tests is 127 | as expected and that the number of tests run, skipped, ignored or failed is 128 | correct. 129 |

130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 181 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 210 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 235 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 259 | 264 | 265 | 266 | 267 | 268 | 269 |
NUnit.Fixtures.SnippetRunner
CodeTree()Run()Skipped()Ignored()Failures()
public class TestClass
144 | {
145 | }
146 |
EMPTY0000
using NUnit.Framework;
155 | 
156 | [TestFixture]
157 | public class TestClass
158 | {
159 | }
160 |
TestClass0000
using NUnit.Framework;
169 | 
170 | [TestFixture]
171 | public class TestClass
172 | {
173 |     [Test]
174 |     public void T1() { }
175 |     [Test]
176 |     public void T2() { }
177 |     [Test]
178 |     public void T3() { }
179 | }
180 |
TestClass
182 | >T1
183 | >T2
184 | >T3
185 |
3000
using NUnit.Framework;
193 | 
194 | [TestFixture]
195 | public class TestClass1
196 | {
197 |     [Test]
198 |     public void T1() { }
199 | }
200 | 
201 | [TestFixture]
202 | public class TestClass2
203 | {
204 |     [Test]
205 |     public void T2() { }
206 |     [Test]
207 |     public void T3() { }
208 | }
209 |
TestClass1
211 | >T1
212 | TestClass2
213 | >T2
214 | >T3
215 |
3000
using NUnit.Framework;
223 | 
224 | [TestFixture]
225 | public class TestClass
226 | {
227 |     [Test]
228 |     public void T1() { }
229 |     [Test, Ignore]
230 |     public void T2() { }
231 |     [Test]
232 |     public void T3() { }
233 | }
234 |
TestClass
236 | >T1
237 | >T2
238 | >T3
239 |
2010
using NUnit.Framework;
247 | 
248 | [TestFixture]
249 | public class TestClass
250 | {
251 |     [Test]
252 |     public void T1() { }
253 |     [Test, Explicit]
254 |     public void T2() { }
255 |     [Test]
256 |     public void T3() { }
257 | }
258 |
TestClass
260 | >T1
261 | >T2
262 | >T3
263 |
2100
270 |

Summary Information

271 | 272 | 273 | 274 | 275 |
fit.Summary
276 | 277 | 278 | --------------------------------------------------------------------------------