From 1123b015f98c64ed41920fb61d19e99cfa8e9d89 Mon Sep 17 00:00:00 2001 From: Philipp Feigl Date: Tue, 24 Apr 2018 21:41:26 +0200 Subject: [PATCH 01/10] Strong passwords (anything except [a-zA-Z0-9_]) are now being obfuscated correctly for signtool calls --- src/Update/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Update/Program.cs b/src/Update/Program.cs index 24c56407..b48c64a9 100644 --- a/src/Update/Program.cs +++ b/src/Update/Program.cs @@ -641,7 +641,7 @@ namespace Squirrel.Update String.Format("sign {0} \"{1}\"", signingOpts, exePath), CancellationToken.None); if (processResult.Item1 != 0) { - var optsWithPasswordHidden = new Regex(@"/p\s+\w+").Replace(signingOpts, "/p ********"); + var optsWithPasswordHidden = new Regex(@"/p\s+\S+").Replace(signingOpts, "/p ********"); var msg = String.Format("Failed to sign, command invoked was: '{0} sign {1} {2}'", exe, optsWithPasswordHidden, exePath); From fdaff4572f025c869b4a1f3e3c5020d120075ff2 Mon Sep 17 00:00:00 2001 From: Vegard Andreas Larsen Date: Fri, 25 Jan 2019 15:32:39 +0100 Subject: [PATCH 02/10] Add more information about machine-wide installs This information was found in issue #555. The information was kind of hard to find, so I summarized it here. --- docs/using/machine-wide-installs.md | 58 +++++++++++++++++------------ 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/docs/using/machine-wide-installs.md b/docs/using/machine-wide-installs.md index a5fb21f1..e1e43f8d 100644 --- a/docs/using/machine-wide-installs.md +++ b/docs/using/machine-wide-installs.md @@ -1,24 +1,36 @@ -| [docs](..) / [using](.) / machine-wide-installs.md -|:---| - - +| [docs](..) / [using](.) / machine-wide-installs.md +|:---| + + # Machine-wide Installs - -Squirrel's Releasify command generates an MSI file suitable for installation via Group Policy. This MSI isn't a general-purpose installer, this means that once you run the MSI, users from now on will get the app installed, on next Login. - -So, most normal users should continue to run the Setup.exe's generated by Releasify, but if you want to have an IT Admin Friendly version, you can hand off the MSI - -Most users of Squirrel won't have to do anything new to enable this behavior, though certain NuGet package IDs / names might cause problems with MSI. - -**Source:** See [issue #466](https://github.com/Squirrel/Squirrel.Windows/issues/466) for more details. - -### Disabling MSI Generation -Generating MSIs can be disabled via the --no-msi flag as shown below: - -~~~powershell -PM> Squirrel --releasify MyApp.1.0.0.nupkg --no-msi -~~~ - ---- -| Return: [Table of Contents](../readme.md) | -|----| + +Squirrel's Releasify command generates an MSI file suitable for installation via Group Policy. This MSI isn't a general-purpose installer, this means that once you run the MSI, users from now on will get the app installed, on next Login. + +So, most normal users should continue to run the Setup.exe's generated by Releasify, but if you want to have an IT Admin Friendly version, you can hand off the MSI + +## Common pitfalls + +### Missing data in `.nuspec` + +Most users of Squirrel won't have to do anything new to enable this behavior, though certain NuGet package IDs / names might cause problems with MSI. + +**Source:** See [issue #466](https://github.com/Squirrel/Squirrel.Windows/issues/466) for more details. + +### Nothing happens on login + +In cases where the end user has previously installed your application, the installer that runs on login will not re-install your application on every login. This can easily be the case if you as a developer is testing out both the EXE and the MSI. + +Squirrel leaves behind an almost-empty `%LocalAppData%\MyApp` folder after an uninstall. Deleting this folder (the entire folder, not just the contents) will allow the installer that runs on login to install successfully. + +**Source:**: See [issue #555](https://github.com/Squirrel/Squirrel.Windows/issues/555#issuecomment-253265130) for details. + +## Disabling MSI Generation +Generating MSIs can be disabled via the --no-msi flag as shown below: + +~~~powershell +PM> Squirrel --releasify MyApp.1.0.0.nupkg --no-msi +~~~ + +--- +| Return: [Table of Contents](../readme.md) | +|----| From 0bad6df14d9fdbb1c23686d77003fcf53bcfcc44 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 30 May 2022 17:56:58 -0700 Subject: [PATCH 03/10] Simplify DllHijack mitigation and ensure urlmon is delay loaded First update the project to reduce the number of linked libraries and ensure the most likely non-OS loaded DLLS are delay loaded. Then simplify the DLL hijack mitigation to always dynamically link to SetDefaultDllDirectories in case Squirrel is used on and old Win7 that is missing the necessary KB. --- src/Setup/Setup.vcxproj | 8 ++++---- src/Setup/winmain.cpp | 16 ++++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/Setup/Setup.vcxproj b/src/Setup/Setup.vcxproj index 2cd5cfff..4a283df8 100644 --- a/src/Setup/Setup.vcxproj +++ b/src/Setup/Setup.vcxproj @@ -64,8 +64,8 @@ Windows true - kernel32.lib;user32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;urlmon.lib - user32.dll;advapi32.dll;shell32.dll;ole32.dll;oleaut32.dll;urlmon.dll;%(DelayLoadDLLs) + urlmon.lib + comctl32.dll;shell32.dll;shlwapi.dll;urlmon.dll;%(DelayLoadDLLs) compat.manifest @@ -91,8 +91,8 @@ true true AsInvoker - kernel32.lib;user32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;urlmon.lib - user32.dll;advapi32.dll;shell32.dll;ole32.dll;oleaut32.dll;urlmon.dll;%(DelayLoadDLLs) + urlmon.lib + comctl32.dll;shell32.dll;shlwapi.dll;urlmon.dll;%(DelayLoadDLLs) compat.manifest diff --git a/src/Setup/winmain.cpp b/src/Setup/winmain.cpp index 592ce3cb..de8a730e 100644 --- a/src/Setup/winmain.cpp +++ b/src/Setup/winmain.cpp @@ -23,22 +23,26 @@ void PreloadLibs() std::wstring version = (std::wstring(sys32Folder) + L"\\version.dll"); std::wstring logoncli = (std::wstring(sys32Folder) + L"\\logoncli.dll"); std::wstring sspicli = (std::wstring(sys32Folder) + L"\\sspicli.dll"); + std::wstring urlmon = (std::wstring(sys32Folder) + L"\\urlmon.dll"); LoadLibrary(version.c_str()); LoadLibrary(logoncli.c_str()); LoadLibrary(sspicli.c_str()); + LoadLibrary(urlmon.c_str()); } void MitigateDllHijacking() { // Set the default DLL lookup directory to System32 for ourselves and kernel32.dll - SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32); - HMODULE hKernel32 = LoadLibrary(L"kernel32.dll"); - ATLASSERT(hKernel32 != NULL); - - SetDefaultDllDirectoriesFunction pfn = (SetDefaultDllDirectoriesFunction)GetProcAddress(hKernel32, "SetDefaultDllDirectories"); - if (pfn) { (*pfn)(LOAD_LIBRARY_SEARCH_SYSTEM32); } + if (hKernel32) + { + SetDefaultDllDirectoriesFunction pfn = (SetDefaultDllDirectoriesFunction)GetProcAddress(hKernel32, "SetDefaultDllDirectories"); + if (pfn) + { + (*pfn)(LOAD_LIBRARY_SEARCH_SYSTEM32); + } + } PreloadLibs(); } From 6cf7bf03a0f61f7eff556bf0ddc19053f81ee8d1 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 30 May 2022 17:57:44 -0700 Subject: [PATCH 04/10] Minor code cleanup --- src/Setup/winmain.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Setup/winmain.cpp b/src/Setup/winmain.cpp index de8a730e..1c1d9088 100644 --- a/src/Setup/winmain.cpp +++ b/src/Setup/winmain.cpp @@ -15,7 +15,7 @@ typedef BOOL(WINAPI *SetDefaultDllDirectoriesFunction)(DWORD DirectoryFlags); // Some libraries are still loaded from the current directories. // If we pre-load them with an absolute path then we are good. -void PreloadLibs() +static void PreloadLibs() { wchar_t sys32Folder[MAX_PATH]; GetSystemDirectory(sys32Folder, MAX_PATH); @@ -31,7 +31,7 @@ void PreloadLibs() LoadLibrary(urlmon.c_str()); } -void MitigateDllHijacking() +static void MitigateDllHijacking() { // Set the default DLL lookup directory to System32 for ourselves and kernel32.dll HMODULE hKernel32 = LoadLibrary(L"kernel32.dll"); @@ -52,7 +52,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { - MitigateDllHijacking(); + MitigateDllHijacking(); int exitCode = -1; CString cmdLine(lpCmdLine); From 01ea197d1fc541f6ed99ab6c6613f4e27890d00c Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 30 May 2022 17:57:49 -0700 Subject: [PATCH 05/10] Ensure debug/release build outputs do not conflict in the obj folder --- src/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 60124e53..17ade302 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -6,7 +6,7 @@ $(MSBuildProjectName) $([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\build\)) - $(BaseOutputPath)obj\$(ProjectName)\ + $(BaseOutputPath)obj\$(Configuration)\$(ProjectName)\ $(BaseOutputPath)$(Configuration)\ GitHub From dd8fe8ef9f2f8105c4d337f117039715a09ee646 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 30 May 2022 18:27:34 -0700 Subject: [PATCH 06/10] Update NuGet submodule to point into Squirrel org --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index a57c629f..836589c9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "vendor/nuget"] path = vendor/nuget - url = https://github.com/paulcbetts/NuGet + url = https://github.com/Squirrel/NuGet branch = fix-prerelease-comparison From 5ac0d8a871fb16b916ac57c200f508c208af68aa Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 30 May 2022 18:02:13 -0700 Subject: [PATCH 07/10] Move official build to GitHub Actions The "build_official.cmd" now creates all of the build artifacts and the "devbuild.cmd" is a quick way for developers to get a build from the command-line. With these two batch files in place, move the official build pipeline from Azure DevOps to GitHub Actions. --- .github/workflows/build.yml | 38 +++++++++++++++ azure-pipelines.yml | 57 ---------------------- devbuild.cmd | 26 ++++++++++ package-electron-winstaller.ps1 | 48 ------------------ src/build_official.cmd | 86 +++++++++++++++++++++++++++++++++ 5 files changed, 150 insertions(+), 105 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 azure-pipelines.yml create mode 100644 devbuild.cmd delete mode 100644 package-electron-winstaller.ps1 create mode 100644 src/build_official.cmd diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..d295489b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,38 @@ +name: Build Squirrel + +on: + push: + branches: + - master + - develop + pull_request: + branches: + - master + - develop + +env: + DOTNET_NOLOGO: true + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true + DOTNET_CLI_TELEMETRY_OPTOUT: true + NUGET_XMLDOC_MODE: skip + +jobs: + build: + name: Build + runs-on: windows-2019 + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + submodules: recursive + + - name: Build Squirrel + shell: cmd + run: ./src/build_official.cmd + + - name: Save build + uses: actions/upload-artifact@v2 + with: + name: artifacts + path: build/artifacts/ diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index 2ed3c3e2..00000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,57 +0,0 @@ -pool: Hosted Windows 2019 with VS2019 - -trigger: -- master -- develop - -variables: - solution: 'Squirrel.sln' - buildPlatform: 'Any CPU' - buildConfiguration: 'Release' - -steps: -- checkout: self - submodules: true - -- task: NuGetToolInstaller@1 - inputs: - versionSpec: 4.9.4 - -- task: NuGetCommand@2 - displayName: Restore - inputs: - restoreSolution: '$(solution)' - -- task: VSBuild@1 - displayName: Build - inputs: - solution: '$(solution)' - platform: '$(buildPlatform)' - configuration: '$(buildConfiguration)' - -- task: VSTest@2 - displayName: Test - inputs: - testAssemblyVer2: | - **\$(buildConfiguration)\*test*.dll - !**\obj\** - platform: '$(buildPlatform)' - configuration: '$(buildConfiguration)' - -- task: NuGetCommand@2 - displayName: Pack - inputs: - command: pack - packagesToPack: src\Squirrel.nuspec - -- task: PublishBuildArtifacts@1 - displayName: Publish Artifacts - inputs: - pathtoPublish: '$(build.artifactStagingDirectory)' - -- task: PublishSymbols@2 - displayName: Publish Symbols - inputs: - searchPattern: 'build\$(buildConfiguration)\**\*.pdb' - publishSymbols: false - continueOnError: true diff --git a/devbuild.cmd b/devbuild.cmd new file mode 100644 index 00000000..5cda9040 --- /dev/null +++ b/devbuild.cmd @@ -0,0 +1,26 @@ +@echo off + +setlocal +pushd %~dp0 + +:parse_args +if /i "%1"=="release" set _C=/p:Configuration=Release +if /i "%1"=="init" set _INIT=1 +if /i "%1"=="initialize" set _INIT=1 +if /i "%1"=="inc" set _INCREMENTAL=1 +if /i "%1"=="incremental" set _INCREMENTAL=1 +if /i "%1"=="clean" set _INCREMENTAL= & set _CLEAN=1 +if not "%1"=="" shift & goto parse_args + +if not "%_INCREMENTAL"=="1" rd /s /q build packages 2> nul +if not "%_CLEAN%"=="" goto end + +if "%_INIT%"=="1" git submodule update --init --recursive + +nuget restore + +msbuild -Restore %_C% -m -nr:false -v:m + +:end +popd +endlocal diff --git a/package-electron-winstaller.ps1 b/package-electron-winstaller.ps1 deleted file mode 100644 index 73eabd7b..00000000 --- a/package-electron-winstaller.ps1 +++ /dev/null @@ -1,48 +0,0 @@ -<# -Package script for electron-winstaller - -The NPM package electron-winstaller allows developers to -build Windows installers for Electron apps using Squirrel -(https://github.com/electron/windows-installer) - -This script copies the required files into a single folder -which can then be copied to the electron-winstaller/vendor folder -(either manually or in an automated way). -#> - -# Stop the script if an error occurs -$ErrorActionPreference = "Stop" -$In = ".\build\Release\" -$Out = ".\build\electron-winstaller\" -$Folders = @("./build", "./packages", "./test/bin", "./test/obj") - -# Ensure a clean state by removing build/package folders -foreach ($Folder in $Folders) { - if (Test-Path $Folder) { - Remove-Item -path $Folder -Recurse -Force - } -} - -# Build Squirrel -git submodule update --init --recursive -.\.NuGet\NuGet.exe restore -msbuild /p:Configuration=Release - -# Create the electron-winstaller folder -New-Item -Path $Out -ItemType "directory" | Out-Null - -# Copy over all files we need -Copy-Item "$In\net45\Update.exe" -Destination "$Out\Squirrel.exe" -Copy-Item "$In\net45\update.com" -Destination "$Out\Squirrel.com" -Copy-Item "$In\net45\Update.pdb" -Destination "$Out\Squirrel.pdb" -Copy-Item "$In\Win32\Setup.exe" -Destination $Out -Copy-Item "$In\Win32\Setup.pdb" -Destination $Out -Copy-Item "$In\net45\Update-Mono.exe" -Destination "$Out\Squirrel-Mono.exe" -Copy-Item "$In\net45\Update-Mono.pdb" -Destination "$Out\Squirrel-Mono.pdb" -Copy-Item "$In\Win32\StubExecutable.exe" -Destination $Out -Copy-Item "$In\net45\SyncReleases.exe" -Destination $Out -Copy-Item "$In\net45\SyncReleases.pdb" -Destination $Out -Copy-Item "$In\Win32\WriteZipToSetup.exe" -Destination $Out -Copy-Item "$In\Win32\WriteZipToSetup.pdb" -Destination $Out - -Write-Output "Successfully copied files for electron-winstaller to build/electron-winstaller." diff --git a/src/build_official.cmd b/src/build_official.cmd new file mode 100644 index 00000000..72b1ff19 --- /dev/null +++ b/src/build_official.cmd @@ -0,0 +1,86 @@ +@echo off + +setlocal +pushd %~dp0 + +:parse_args +@if not "%1"=="" shift & goto parse_args + +:: Init + +@if "%VCToolsVersion%"=="" call :StartDeveloperCommandPrompt || exit /b + + +:: Clean + +rd /s /q ..\build ..\packages ..\test\obj ..\test\bin 2> nul + + +:: Build + +nuget restore ..\Squirrel.sln || exit /b + +msbuild -Restore ..\Squirrel.sln -p:Configuration=Release -v:m -m -nr:false -bl:..\build\logs\build.binlog || exit /b + + +:: Pack .nupkg + +nuget pack Squirrel.nuspec -OutputDirectory ..\build\artifacts || exit /b + + +:: Layout electron-winstaller +:: +:: The NPM package electron-winstaller allows developers to +:: build Windows installers for Electron apps using Squirrel +:: (https://github.com/electron/windows-installer) +:: +:: The following copies the required files into a single folder +:: which can then be copied to the electron-winstaller/vendor folder +:: (either manually or in an automated way). + +md ..\build\artifacts\electron-winstaller\vendor + +copy ..\build\Release\net45\Update.exe ..\build\artifacts\electron-winstaller\vendor\Squirrel.exe || exit /b +copy ..\build\Release\net45\update.com ..\build\artifacts\electron-winstaller\vendor\Squirrel.com || exit /b +copy ..\build\Release\net45\Update.pdb ..\build\artifacts\electron-winstaller\vendor\Squirrel.pdb || exit /b +copy ..\build\Release\Win32\Setup.exe ..\build\artifacts\electron-winstaller\vendor || exit /b +copy ..\build\Release\Win32\Setup.pdb ..\build\artifacts\electron-winstaller\vendor || exit /b +copy ..\build\Release\net45\Update-Mono.exe ..\build\artifacts\electron-winstaller\vendor\Squirrel-Mono.exe || exit /b +copy ..\build\Release\net45\Update-Mono.pdb ..\build\artifacts\electron-winstaller\vendor\Squirrel-Mono.pdb || exit /b +copy ..\build\Release\Win32\StubExecutable.exe ..\build\artifacts\electron-winstaller\vendor || exit /b +copy ..\build\Release\net45\SyncReleases.exe ..\build\artifacts\electron-winstaller\vendor || exit /b +copy ..\build\Release\net45\SyncReleases.pdb ..\build\artifacts\electron-winstaller\vendor || exit /b +copy ..\build\Release\Win32\WriteZipToSetup.exe ..\build\artifacts\electron-winstaller\vendor || exit /b +copy ..\build\Release\Win32\WriteZipToSetup.pdb ..\build\artifacts\electron-winstaller\vendor || exit /b + + +goto LExit + +:StartDeveloperCommandPrompt +if not "%SquirrelSkipVsDevCmd%"=="" ( + echo Skipping initializing developer command prompt + exit /b +) + +echo Initializing developer command prompt + +if not exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" ( + "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" + exit /b 2 +) + +for /f "usebackq delims=" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [16.0^,18.0^) -property installationPath`) do ( + if exist "%%i\Common7\Tools\vsdevcmd.bat" ( + call "%%i\Common7\Tools\vsdevcmd.bat" -no_logo + exit /b + ) + echo developer command prompt not found in %%i +) + +echo No versions of developer command prompt found +exit /b 2 + +:LExit + +popd +endlocal From afbd3499442a1cfd81703b0052781246660abdb4 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 2 Jun 2022 00:34:57 -0700 Subject: [PATCH 08/10] Move Squirrel.Tests to its own folder This aligns the test folder with the src folder and opens up the future possibility of an integration test assembly. --- Squirrel.sln | 2 +- src/build_official.cmd | 2 +- test/Directory.Build.props | 8 ++++++++ .../ApplyReleasesProgressTests.cs | 4 ++-- test/{ => Squirrel.Tests}/ApplyReleasesTests.cs | 0 test/{ => Squirrel.Tests}/CheckForUpdateTests.cs | 0 test/{ => Squirrel.Tests}/ContentTypeTests.cs | 0 test/{ => Squirrel.Tests}/DeltaPackageTests.cs | 0 test/{ => Squirrel.Tests}/DownloadReleasesTests.cs | 0 .../{ => Squirrel.Tests}/Properties/AssemblyInfo.cs | 0 test/{ => Squirrel.Tests}/ReleaseEntryTests.cs | 0 test/{ => Squirrel.Tests}/ReleasePackageTests.cs | 0 test/{ => Squirrel.Tests}/Squirrel.Tests.csproj | 9 +++++++-- .../SquirrelAwareExecutableDetectorTests.cs | 8 ++++---- .../TestHelpers/AssertExtensions.cs | 0 .../TestHelpers/ExposedClass.cs | 0 .../TestHelpers/ExposedObject.cs | 0 .../TestHelpers/ExposedObjectHelper.cs | 0 .../TestHelpers/IntegrationTestHelper.cs | 11 +++-------- .../TestHelpers/StaticHttpServer.cs | 0 test/{ => Squirrel.Tests}/UpdateManagerTests.cs | 0 test/{ => Squirrel.Tests}/UtilityTests.cs | 0 .../fixtures/Caliburn.Micro.1.4.1.nupkg | Bin .../fixtures/Caliburn.Micro.1.5.2.nupkg | Bin .../fixtures/CaliburnMicroDemo.1.0.0.nupkg | Bin .../fixtures/NotSquirrelAwareApp.exe | Bin .../fixtures/ProjectDependsOnJsonDotNet.1.0.nupkg | Bin .../ProjectWithContent.1.0.0.0-beta-full.nupkg | Bin .../fixtures/ProjectWithContent.1.0.0.0-beta.nupkg | Bin .../fixtures/RELEASES-OnePointOh | 0 .../fixtures/RELEASES-OnePointOne | 0 test/{ => Squirrel.Tests}/fixtures/Setup.exe | Bin .../fixtures/SpecialCharacters-0.1.0-full.nupkg | Bin .../fixtures/Squirrel.Core.1.0.0.0-full.nupkg | Bin .../fixtures/Squirrel.Core.1.0.0.0.nupkg | Bin .../fixtures/Squirrel.Core.1.1.0.0-delta.nupkg | Bin .../fixtures/Squirrel.Core.1.1.0.0-full.nupkg | Bin .../fixtures/Squirrel.Core.1.1.0.0.nupkg | Bin .../fixtures/Squirrel.Core.1.1.0.0.nuspec | 0 .../fixtures/Squirrel.Core.1.2.0.0-full.nupkg | Bin .../fixtures/Squirrel.Core.1.3.0.0-full.nupkg | Bin .../Squirrel.Core.NoDependencies.1.0.0.0.nupkg | Bin .../fixtures/Squirrel.Tests.0.1.0-pre.nupkg | Bin .../fixtures/Squirrel.Tests.0.2.0-pre.nupkg | Bin .../fixtures/SquirrelAwareApp.exe | Bin .../fixtures/SquirrelAwareTweakedNetCoreApp.exe | Bin .../fixtures/SquirrelInstalledApp.nuspec | 0 .../fixtures/ThisShouldBeANet45Project.1.0.nupkg | Bin test/{ => Squirrel.Tests}/fixtures/atom.exe | Bin .../fixtures/content-types/basic-merged.xml | 0 .../fixtures/content-types/basic.xml | 0 .../fixtures/content-types/complex-merged.xml | 0 .../fixtures/content-types/complex.xml | 0 .../ASL - Apache Software Foundation License.txt | 0 .../packages/Castle.Core.3.2.0/BreakingChanges.txt | 0 .../Castle.Core.3.2.0/Castle.Core.3.2.0.nupkg | Bin .../fixtures/packages/Castle.Core.3.2.0/Changes.txt | 0 .../fixtures/packages/Castle.Core.3.2.0/License.txt | 0 .../Castle.Core.3.2.0/lib/net35/Castle.Core.dll | Bin .../Castle.Core.3.2.0/lib/net35/Castle.Core.xml | 0 .../lib/net40-client/Castle.Core.dll | Bin .../lib/net40-client/Castle.Core.xml | 0 .../Castle.Core.3.2.0/lib/net45/Castle.Core.dll | Bin .../Castle.Core.3.2.0/lib/net45/Castle.Core.xml | 0 .../Castle.Core.3.2.0/lib/sl4/Castle.Core.dll | Bin .../Castle.Core.3.2.0/lib/sl4/Castle.Core.xml | 0 .../Castle.Core.3.2.0/lib/sl5/Castle.Core.dll | Bin .../Castle.Core.3.2.0/lib/sl5/Castle.Core.xml | 0 .../fixtures/packages/Castle.Core.3.2.0/readme.txt | 0 .../Microsoft.Web.Xdt.2.1.1.nupkg | Bin .../lib/net40/Microsoft.Web.XmlTransform.dll | Bin .../Newtonsoft.Json.6.0.3.nupkg | Bin .../lib/net20/Newtonsoft.Json.dll | Bin .../lib/net20/Newtonsoft.Json.xml | 0 .../lib/net35/Newtonsoft.Json.dll | Bin .../lib/net35/Newtonsoft.Json.xml | 0 .../lib/net40/Newtonsoft.Json.dll | Bin .../lib/net40/Newtonsoft.Json.xml | 0 .../lib/net45/Newtonsoft.Json.dll | Bin .../lib/net45/Newtonsoft.Json.xml | 0 .../lib/netcore45/Newtonsoft.Json.dll | Bin .../lib/netcore45/Newtonsoft.Json.xml | 0 .../portable-net40+sl4+wp7+win8/Newtonsoft.Json.dll | Bin .../portable-net40+sl4+wp7+win8/Newtonsoft.Json.xml | 0 .../Newtonsoft.Json.dll | Bin .../Newtonsoft.Json.xml | 0 .../Newtonsoft.Json.6.0.3/tools/install.ps1 | 0 .../NuGet.Core.2.8.2/NuGet.Core.2.8.2.nupkg | Bin .../lib/net40-Client/NuGet.Core.dll | Bin .../fixtures/packages/Splat.1.4.0/Splat.1.4.0.nupkg | Bin .../packages/Splat.1.4.0/lib/MonoMac/Splat.dll | Bin .../packages/Splat.1.4.0/lib/MonoMac/Splat.dll.mdb | Bin .../packages/Splat.1.4.0/lib/Net45/Splat.dll | Bin .../packages/Splat.1.4.0/lib/Net45/Splat.pdb | Bin .../packages/Splat.1.4.0/lib/NetCore45/Splat.dll | Bin .../packages/Splat.1.4.0/lib/NetCore45/Splat.pdb | Bin .../packages/Splat.1.4.0/lib/NetCore45/Splat.pri | Bin .../Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.dll | Bin .../Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.pri | Bin .../lib/Portable-net45+win+wpa81+wp80/Splat.dll | Bin .../packages/Splat.1.4.0/lib/monoandroid/Splat.dll | Bin .../Splat.1.4.0/lib/monoandroid/Splat.dll.mdb | Bin .../packages/Splat.1.4.0/lib/monotouch/Splat.dll | Bin .../Splat.1.4.0/lib/monotouch/Splat.dll.mdb | Bin .../fixtures/packages/Splat.1.4.0/lib/wp8/Splat.dll | Bin .../fixtures/packages/Splat.1.4.0/lib/wp8/Splat.pdb | Bin .../packages/refit.1.3.0/lib/MonoAndroid/Refit.dll | Bin .../refit.1.3.0/lib/MonoAndroid/Refit.dll.mdb | Bin .../packages/refit.1.3.0/lib/MonoMac/Refit.dll | Bin .../packages/refit.1.3.0/lib/MonoMac/Refit.dll.mdb | Bin .../refit.1.3.0/lib/Net45/Refit-Portable.dll | Bin .../refit.1.3.0/lib/Net45/Refit-Portable.pdb | Bin .../packages/refit.1.3.0/lib/Net45/Refit.dll | Bin .../packages/refit.1.3.0/lib/Net45/Refit.pdb | Bin .../Portable-Net45+WinRT45+WP8/Refit-Portable.dll | Bin .../Refit-Portable.dll.config | 0 .../Portable-Net45+WinRT45+WP8/Refit-Portable.pdb | Bin .../fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll | Bin .../packages/refit.1.3.0/lib/SL5/Refit.dll.config | 0 .../fixtures/packages/refit.1.3.0/lib/SL5/Refit.pdb | Bin .../packages/refit.1.3.0/lib/WP8/Refit-Portable.dll | Bin .../packages/refit.1.3.0/lib/WP8/Refit-Portable.pdb | Bin .../fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll | Bin .../packages/refit.1.3.0/lib/WP8/Refit.dll.config | 0 .../fixtures/packages/refit.1.3.0/lib/WP8/Refit.pdb | Bin .../fixtures/packages/refit.1.3.0/refit.1.3.0.nupkg | Bin .../fixtures/packages/repositories.config | 0 .../xunit.2.0.0-beta-build2700.nupkg | Bin .../lib/net35/xunit.abstractions.dll | Bin .../lib/net35/xunit.abstractions.xml | 0 .../xunit.abstractions.dll | Bin .../xunit.abstractions.xml | 0 .../xunit.abstractions.2.0.0-beta-build2700.nupkg | Bin .../xunit.assert.dll | Bin .../xunit.assert.xml | 0 .../xunit.assert.2.0.0-beta-build2700.nupkg | Bin .../build/MonoAndroid/xunit.core.props | 0 .../build/MonoTouch/xunit.core.props | 0 .../portable-net45+win+wpa81+wp80/xunit.core.props | 0 .../xunit.core.dll | Bin .../xunit.core.dll.tdnet | 0 .../xunit.core.xml | 0 .../xunit.execution.dll | Bin .../xunit.runner.tdnet.dll | Bin .../xunit.runner.utility.dll | Bin .../xunit.core.2.0.0-beta-build2700.nupkg | Bin .../lib/monoandroid/xunit.runner.utility.dll | Bin .../lib/monoandroid/xunit.runner.utility.xml | 0 .../lib/monotouch/xunit.runner.utility.dll | Bin .../lib/monotouch/xunit.runner.utility.xml | 0 .../lib/net35/xunit.runner.utility.dll | Bin .../lib/net35/xunit.runner.utility.xml | 0 .../xunit.runner.utility.2.0.0-beta-build2700.nupkg | Bin .../fixtures/slack-1.1.8-full.nupkg | Bin .../fixtures/slack-1.2.0-delta.nupkg | Bin 155 files changed, 26 insertions(+), 18 deletions(-) create mode 100644 test/Directory.Build.props rename test/{ => Squirrel.Tests}/ApplyReleasesProgressTests.cs (86%) rename test/{ => Squirrel.Tests}/ApplyReleasesTests.cs (100%) rename test/{ => Squirrel.Tests}/CheckForUpdateTests.cs (100%) rename test/{ => Squirrel.Tests}/ContentTypeTests.cs (100%) rename test/{ => Squirrel.Tests}/DeltaPackageTests.cs (100%) rename test/{ => Squirrel.Tests}/DownloadReleasesTests.cs (100%) rename test/{ => Squirrel.Tests}/Properties/AssemblyInfo.cs (100%) rename test/{ => Squirrel.Tests}/ReleaseEntryTests.cs (100%) rename test/{ => Squirrel.Tests}/ReleasePackageTests.cs (100%) rename test/{ => Squirrel.Tests}/Squirrel.Tests.csproj (66%) rename test/{ => Squirrel.Tests}/SquirrelAwareExecutableDetectorTests.cs (97%) rename test/{ => Squirrel.Tests}/TestHelpers/AssertExtensions.cs (100%) rename test/{ => Squirrel.Tests}/TestHelpers/ExposedClass.cs (100%) rename test/{ => Squirrel.Tests}/TestHelpers/ExposedObject.cs (100%) rename test/{ => Squirrel.Tests}/TestHelpers/ExposedObjectHelper.cs (100%) rename test/{ => Squirrel.Tests}/TestHelpers/IntegrationTestHelper.cs (91%) rename test/{ => Squirrel.Tests}/TestHelpers/StaticHttpServer.cs (100%) rename test/{ => Squirrel.Tests}/UpdateManagerTests.cs (100%) rename test/{ => Squirrel.Tests}/UtilityTests.cs (100%) rename test/{ => Squirrel.Tests}/fixtures/Caliburn.Micro.1.4.1.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Caliburn.Micro.1.5.2.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/CaliburnMicroDemo.1.0.0.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/NotSquirrelAwareApp.exe (100%) rename test/{ => Squirrel.Tests}/fixtures/ProjectDependsOnJsonDotNet.1.0.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/ProjectWithContent.1.0.0.0-beta-full.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/ProjectWithContent.1.0.0.0-beta.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/RELEASES-OnePointOh (100%) rename test/{ => Squirrel.Tests}/fixtures/RELEASES-OnePointOne (100%) rename test/{ => Squirrel.Tests}/fixtures/Setup.exe (100%) rename test/{ => Squirrel.Tests}/fixtures/SpecialCharacters-0.1.0-full.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Core.1.0.0.0-full.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Core.1.0.0.0.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Core.1.1.0.0-delta.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Core.1.1.0.0-full.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Core.1.1.0.0.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Core.1.1.0.0.nuspec (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Core.1.2.0.0-full.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Core.1.3.0.0-full.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Core.NoDependencies.1.0.0.0.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Tests.0.1.0-pre.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/Squirrel.Tests.0.2.0-pre.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/SquirrelAwareApp.exe (100%) rename test/{ => Squirrel.Tests}/fixtures/SquirrelAwareTweakedNetCoreApp.exe (100%) rename test/{ => Squirrel.Tests}/fixtures/SquirrelInstalledApp.nuspec (100%) rename test/{ => Squirrel.Tests}/fixtures/ThisShouldBeANet45Project.1.0.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/atom.exe (100%) rename test/{ => Squirrel.Tests}/fixtures/content-types/basic-merged.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/content-types/basic.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/content-types/complex-merged.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/content-types/complex.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/ASL - Apache Software Foundation License.txt (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/BreakingChanges.txt (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/Castle.Core.3.2.0.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/Changes.txt (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/License.txt (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/lib/net35/Castle.Core.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/lib/net35/Castle.Core.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/lib/net40-client/Castle.Core.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/lib/net40-client/Castle.Core.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/lib/net45/Castle.Core.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/lib/net45/Castle.Core.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/lib/sl4/Castle.Core.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/lib/sl4/Castle.Core.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/lib/sl5/Castle.Core.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/lib/sl5/Castle.Core.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Castle.Core.3.2.0/readme.txt (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Microsoft.Web.Xdt.2.1.1/Microsoft.Web.Xdt.2.1.1.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Microsoft.Web.Xdt.2.1.1/lib/net40/Microsoft.Web.XmlTransform.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/Newtonsoft.Json.6.0.3.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net20/Newtonsoft.Json.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net20/Newtonsoft.Json.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net35/Newtonsoft.Json.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net35/Newtonsoft.Json.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net40/Newtonsoft.Json.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net40/Newtonsoft.Json.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net45/Newtonsoft.Json.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net45/Newtonsoft.Json.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/netcore45/Newtonsoft.Json.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/netcore45/Newtonsoft.Json.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Newtonsoft.Json.6.0.3/tools/install.ps1 (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/NuGet.Core.2.8.2/NuGet.Core.2.8.2.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/NuGet.Core.2.8.2/lib/net40-Client/NuGet.Core.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/Splat.1.4.0.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/MonoMac/Splat.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/MonoMac/Splat.dll.mdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/Net45/Splat.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/Net45/Splat.pdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.pdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.pri (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.pri (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/Portable-net45+win+wpa81+wp80/Splat.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/monoandroid/Splat.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/monoandroid/Splat.dll.mdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/monotouch/Splat.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/monotouch/Splat.dll.mdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/wp8/Splat.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/Splat.1.4.0/lib/wp8/Splat.pdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/MonoAndroid/Refit.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/MonoAndroid/Refit.dll.mdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/MonoMac/Refit.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/MonoMac/Refit.dll.mdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/Net45/Refit-Portable.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/Net45/Refit-Portable.pdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/Net45/Refit.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/Net45/Refit.pdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.dll.config (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.pdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll.config (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/SL5/Refit.pdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/WP8/Refit-Portable.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/WP8/Refit-Portable.pdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll.config (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/lib/WP8/Refit.pdb (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/refit.1.3.0/refit.1.3.0.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/repositories.config (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.2.0.0-beta-build2700/xunit.2.0.0-beta-build2700.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/net35/xunit.abstractions.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/net35/xunit.abstractions.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.abstractions.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.abstractions.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/xunit.abstractions.2.0.0-beta-build2700.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.assert.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monoandroid+monotouch10/xunit.assert.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.assert.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monoandroid+monotouch10/xunit.assert.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.assert.2.0.0-beta-build2700/xunit.assert.2.0.0-beta-build2700.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/MonoAndroid/xunit.core.props (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/MonoTouch/xunit.core.props (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/portable-net45+win+wpa81+wp80/xunit.core.props (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.dll.tdnet (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.execution.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.tdnet.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.utility.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.core.2.0.0-beta-build2700/xunit.core.2.0.0-beta-build2700.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monoandroid/xunit.runner.utility.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monoandroid/xunit.runner.utility.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monotouch/xunit.runner.utility.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monotouch/xunit.runner.utility.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/net35/xunit.runner.utility.dll (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/net35/xunit.runner.utility.xml (100%) rename test/{ => Squirrel.Tests}/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/xunit.runner.utility.2.0.0-beta-build2700.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/slack-1.1.8-full.nupkg (100%) rename test/{ => Squirrel.Tests}/fixtures/slack-1.2.0-delta.nupkg (100%) diff --git a/Squirrel.sln b/Squirrel.sln index 68726b05..43b504c8 100644 --- a/Squirrel.sln +++ b/Squirrel.sln @@ -5,7 +5,7 @@ VisualStudioVersion = 16.0.28803.352 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squirrel", "src\Squirrel\Squirrel.csproj", "{1436E22A-FE3C-4D68-9A85-9E74DF2E6A92}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squirrel.Tests", "test\Squirrel.Tests.csproj", "{98AEB048-E27D-42F4-9440-505B7F78BAFD}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squirrel.Tests", "test\Squirrel.Tests\Squirrel.Tests.csproj", "{98AEB048-E27D-42F4-9440-505B7F78BAFD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Setup", "src\Setup\Setup.vcxproj", "{C1D40624-A484-438A-B846-052F321C89D1}" EndProject diff --git a/src/build_official.cmd b/src/build_official.cmd index 72b1ff19..cd1624fe 100644 --- a/src/build_official.cmd +++ b/src/build_official.cmd @@ -13,7 +13,7 @@ pushd %~dp0 :: Clean -rd /s /q ..\build ..\packages ..\test\obj ..\test\bin 2> nul +rd /s /q ..\build ..\packages 2> nul :: Build diff --git a/test/Directory.Build.props b/test/Directory.Build.props new file mode 100644 index 00000000..aeaa0426 --- /dev/null +++ b/test/Directory.Build.props @@ -0,0 +1,8 @@ + + + + + + $(BaseOutputPath)$(Configuration)\test\ + + diff --git a/test/ApplyReleasesProgressTests.cs b/test/Squirrel.Tests/ApplyReleasesProgressTests.cs similarity index 86% rename from test/ApplyReleasesProgressTests.cs rename to test/Squirrel.Tests/ApplyReleasesProgressTests.cs index 8749bfcd..5b8f92a2 100644 --- a/test/ApplyReleasesProgressTests.cs +++ b/test/Squirrel.Tests/ApplyReleasesProgressTests.cs @@ -10,8 +10,8 @@ namespace Squirrel.Tests public class ApplyReleasesProgressTests { - [Fact] - public async void CalculatesPercentageCorrectly() + [Fact(Skip = "Test does not pass consistently due to dependency on Task.Delay()")] + public async Task CalculatesPercentageCorrectly() { // Just 1 complex situation should be enough to cover this diff --git a/test/ApplyReleasesTests.cs b/test/Squirrel.Tests/ApplyReleasesTests.cs similarity index 100% rename from test/ApplyReleasesTests.cs rename to test/Squirrel.Tests/ApplyReleasesTests.cs diff --git a/test/CheckForUpdateTests.cs b/test/Squirrel.Tests/CheckForUpdateTests.cs similarity index 100% rename from test/CheckForUpdateTests.cs rename to test/Squirrel.Tests/CheckForUpdateTests.cs diff --git a/test/ContentTypeTests.cs b/test/Squirrel.Tests/ContentTypeTests.cs similarity index 100% rename from test/ContentTypeTests.cs rename to test/Squirrel.Tests/ContentTypeTests.cs diff --git a/test/DeltaPackageTests.cs b/test/Squirrel.Tests/DeltaPackageTests.cs similarity index 100% rename from test/DeltaPackageTests.cs rename to test/Squirrel.Tests/DeltaPackageTests.cs diff --git a/test/DownloadReleasesTests.cs b/test/Squirrel.Tests/DownloadReleasesTests.cs similarity index 100% rename from test/DownloadReleasesTests.cs rename to test/Squirrel.Tests/DownloadReleasesTests.cs diff --git a/test/Properties/AssemblyInfo.cs b/test/Squirrel.Tests/Properties/AssemblyInfo.cs similarity index 100% rename from test/Properties/AssemblyInfo.cs rename to test/Squirrel.Tests/Properties/AssemblyInfo.cs diff --git a/test/ReleaseEntryTests.cs b/test/Squirrel.Tests/ReleaseEntryTests.cs similarity index 100% rename from test/ReleaseEntryTests.cs rename to test/Squirrel.Tests/ReleaseEntryTests.cs diff --git a/test/ReleasePackageTests.cs b/test/Squirrel.Tests/ReleasePackageTests.cs similarity index 100% rename from test/ReleasePackageTests.cs rename to test/Squirrel.Tests/ReleasePackageTests.cs diff --git a/test/Squirrel.Tests.csproj b/test/Squirrel.Tests/Squirrel.Tests.csproj similarity index 66% rename from test/Squirrel.Tests.csproj rename to test/Squirrel.Tests/Squirrel.Tests.csproj index ae32d0c8..cc2abb63 100644 --- a/test/Squirrel.Tests.csproj +++ b/test/Squirrel.Tests/Squirrel.Tests.csproj @@ -9,8 +9,13 @@ - - + + + + + + + diff --git a/test/SquirrelAwareExecutableDetectorTests.cs b/test/Squirrel.Tests/SquirrelAwareExecutableDetectorTests.cs similarity index 97% rename from test/SquirrelAwareExecutableDetectorTests.cs rename to test/Squirrel.Tests/SquirrelAwareExecutableDetectorTests.cs index 6b53c0c5..dab09d30 100644 --- a/test/SquirrelAwareExecutableDetectorTests.cs +++ b/test/Squirrel.Tests/SquirrelAwareExecutableDetectorTests.cs @@ -15,11 +15,11 @@ namespace Squirrel.Tests public class SquirrelAwareExecutableDetectorTests { #if DEBUG - private const string NativeBuildRootRelativePath = @"..\build\Debug\Win32\"; - private const string ManagedBuildRootRelativePath = @"..\build\Debug\net45\"; + private const string NativeBuildRootRelativePath = @"..\..\Win32\"; + private const string ManagedBuildRootRelativePath = @"..\..\net45\"; #else - private const string NativeBuildRootRelativePath = @"..\build\Release\Win32\"; - private const string ManagedBuildRootRelativePath = @"..\build\Release\net45\"; + private const string NativeBuildRootRelativePath = @"..\..\Win32\"; + private const string ManagedBuildRootRelativePath = @"..\..\net45\"; #endif [Fact] diff --git a/test/TestHelpers/AssertExtensions.cs b/test/Squirrel.Tests/TestHelpers/AssertExtensions.cs similarity index 100% rename from test/TestHelpers/AssertExtensions.cs rename to test/Squirrel.Tests/TestHelpers/AssertExtensions.cs diff --git a/test/TestHelpers/ExposedClass.cs b/test/Squirrel.Tests/TestHelpers/ExposedClass.cs similarity index 100% rename from test/TestHelpers/ExposedClass.cs rename to test/Squirrel.Tests/TestHelpers/ExposedClass.cs diff --git a/test/TestHelpers/ExposedObject.cs b/test/Squirrel.Tests/TestHelpers/ExposedObject.cs similarity index 100% rename from test/TestHelpers/ExposedObject.cs rename to test/Squirrel.Tests/TestHelpers/ExposedObject.cs diff --git a/test/TestHelpers/ExposedObjectHelper.cs b/test/Squirrel.Tests/TestHelpers/ExposedObjectHelper.cs similarity index 100% rename from test/TestHelpers/ExposedObjectHelper.cs rename to test/Squirrel.Tests/TestHelpers/ExposedObjectHelper.cs diff --git a/test/TestHelpers/IntegrationTestHelper.cs b/test/Squirrel.Tests/TestHelpers/IntegrationTestHelper.cs similarity index 91% rename from test/TestHelpers/IntegrationTestHelper.cs rename to test/Squirrel.Tests/TestHelpers/IntegrationTestHelper.cs index f849b0dc..33193a38 100644 --- a/test/TestHelpers/IntegrationTestHelper.cs +++ b/test/Squirrel.Tests/TestHelpers/IntegrationTestHelper.cs @@ -11,6 +11,7 @@ using System.Text; using SharpCompress.Archives.Zip; using SharpCompress.Readers; using SharpCompress.Common; +using System.Reflection; namespace Squirrel.Tests.TestHelpers { @@ -24,13 +25,7 @@ namespace Squirrel.Tests.TestHelpers public static string GetIntegrationTestRootDirectory() { - // XXX: This is an evil hack, but it's okay for a unit test - // We can't use Assembly.Location because unit test runners love - // to move stuff to temp directories - var st = new StackFrame(true); - var di = new DirectoryInfo(Path.Combine(Path.GetDirectoryName(st.GetFileName()), "..")); - - return di.FullName; + return Path.GetDirectoryName(new Uri(Assembly.GetCallingAssembly().CodeBase).LocalPath); } public static bool SkipTestOnXPAndVista() @@ -76,7 +71,7 @@ namespace Squirrel.Tests.TestHelpers { var targetDir = default(string); - var nuget = IntegrationTestHelper.GetPath("..", ".nuget", "nuget.exe"); + var nuget = IntegrationTestHelper.GetPath("nuget.exe"); nuspecFile = nuspecFile ?? "SquirrelInstalledApp.nuspec"; using (var clearTemp = Utility.WithTempDirectory(out targetDir)) { diff --git a/test/TestHelpers/StaticHttpServer.cs b/test/Squirrel.Tests/TestHelpers/StaticHttpServer.cs similarity index 100% rename from test/TestHelpers/StaticHttpServer.cs rename to test/Squirrel.Tests/TestHelpers/StaticHttpServer.cs diff --git a/test/UpdateManagerTests.cs b/test/Squirrel.Tests/UpdateManagerTests.cs similarity index 100% rename from test/UpdateManagerTests.cs rename to test/Squirrel.Tests/UpdateManagerTests.cs diff --git a/test/UtilityTests.cs b/test/Squirrel.Tests/UtilityTests.cs similarity index 100% rename from test/UtilityTests.cs rename to test/Squirrel.Tests/UtilityTests.cs diff --git a/test/fixtures/Caliburn.Micro.1.4.1.nupkg b/test/Squirrel.Tests/fixtures/Caliburn.Micro.1.4.1.nupkg similarity index 100% rename from test/fixtures/Caliburn.Micro.1.4.1.nupkg rename to test/Squirrel.Tests/fixtures/Caliburn.Micro.1.4.1.nupkg diff --git a/test/fixtures/Caliburn.Micro.1.5.2.nupkg b/test/Squirrel.Tests/fixtures/Caliburn.Micro.1.5.2.nupkg similarity index 100% rename from test/fixtures/Caliburn.Micro.1.5.2.nupkg rename to test/Squirrel.Tests/fixtures/Caliburn.Micro.1.5.2.nupkg diff --git a/test/fixtures/CaliburnMicroDemo.1.0.0.nupkg b/test/Squirrel.Tests/fixtures/CaliburnMicroDemo.1.0.0.nupkg similarity index 100% rename from test/fixtures/CaliburnMicroDemo.1.0.0.nupkg rename to test/Squirrel.Tests/fixtures/CaliburnMicroDemo.1.0.0.nupkg diff --git a/test/fixtures/NotSquirrelAwareApp.exe b/test/Squirrel.Tests/fixtures/NotSquirrelAwareApp.exe similarity index 100% rename from test/fixtures/NotSquirrelAwareApp.exe rename to test/Squirrel.Tests/fixtures/NotSquirrelAwareApp.exe diff --git a/test/fixtures/ProjectDependsOnJsonDotNet.1.0.nupkg b/test/Squirrel.Tests/fixtures/ProjectDependsOnJsonDotNet.1.0.nupkg similarity index 100% rename from test/fixtures/ProjectDependsOnJsonDotNet.1.0.nupkg rename to test/Squirrel.Tests/fixtures/ProjectDependsOnJsonDotNet.1.0.nupkg diff --git a/test/fixtures/ProjectWithContent.1.0.0.0-beta-full.nupkg b/test/Squirrel.Tests/fixtures/ProjectWithContent.1.0.0.0-beta-full.nupkg similarity index 100% rename from test/fixtures/ProjectWithContent.1.0.0.0-beta-full.nupkg rename to test/Squirrel.Tests/fixtures/ProjectWithContent.1.0.0.0-beta-full.nupkg diff --git a/test/fixtures/ProjectWithContent.1.0.0.0-beta.nupkg b/test/Squirrel.Tests/fixtures/ProjectWithContent.1.0.0.0-beta.nupkg similarity index 100% rename from test/fixtures/ProjectWithContent.1.0.0.0-beta.nupkg rename to test/Squirrel.Tests/fixtures/ProjectWithContent.1.0.0.0-beta.nupkg diff --git a/test/fixtures/RELEASES-OnePointOh b/test/Squirrel.Tests/fixtures/RELEASES-OnePointOh similarity index 100% rename from test/fixtures/RELEASES-OnePointOh rename to test/Squirrel.Tests/fixtures/RELEASES-OnePointOh diff --git a/test/fixtures/RELEASES-OnePointOne b/test/Squirrel.Tests/fixtures/RELEASES-OnePointOne similarity index 100% rename from test/fixtures/RELEASES-OnePointOne rename to test/Squirrel.Tests/fixtures/RELEASES-OnePointOne diff --git a/test/fixtures/Setup.exe b/test/Squirrel.Tests/fixtures/Setup.exe similarity index 100% rename from test/fixtures/Setup.exe rename to test/Squirrel.Tests/fixtures/Setup.exe diff --git a/test/fixtures/SpecialCharacters-0.1.0-full.nupkg b/test/Squirrel.Tests/fixtures/SpecialCharacters-0.1.0-full.nupkg similarity index 100% rename from test/fixtures/SpecialCharacters-0.1.0-full.nupkg rename to test/Squirrel.Tests/fixtures/SpecialCharacters-0.1.0-full.nupkg diff --git a/test/fixtures/Squirrel.Core.1.0.0.0-full.nupkg b/test/Squirrel.Tests/fixtures/Squirrel.Core.1.0.0.0-full.nupkg similarity index 100% rename from test/fixtures/Squirrel.Core.1.0.0.0-full.nupkg rename to test/Squirrel.Tests/fixtures/Squirrel.Core.1.0.0.0-full.nupkg diff --git a/test/fixtures/Squirrel.Core.1.0.0.0.nupkg b/test/Squirrel.Tests/fixtures/Squirrel.Core.1.0.0.0.nupkg similarity index 100% rename from test/fixtures/Squirrel.Core.1.0.0.0.nupkg rename to test/Squirrel.Tests/fixtures/Squirrel.Core.1.0.0.0.nupkg diff --git a/test/fixtures/Squirrel.Core.1.1.0.0-delta.nupkg b/test/Squirrel.Tests/fixtures/Squirrel.Core.1.1.0.0-delta.nupkg similarity index 100% rename from test/fixtures/Squirrel.Core.1.1.0.0-delta.nupkg rename to test/Squirrel.Tests/fixtures/Squirrel.Core.1.1.0.0-delta.nupkg diff --git a/test/fixtures/Squirrel.Core.1.1.0.0-full.nupkg b/test/Squirrel.Tests/fixtures/Squirrel.Core.1.1.0.0-full.nupkg similarity index 100% rename from test/fixtures/Squirrel.Core.1.1.0.0-full.nupkg rename to test/Squirrel.Tests/fixtures/Squirrel.Core.1.1.0.0-full.nupkg diff --git a/test/fixtures/Squirrel.Core.1.1.0.0.nupkg b/test/Squirrel.Tests/fixtures/Squirrel.Core.1.1.0.0.nupkg similarity index 100% rename from test/fixtures/Squirrel.Core.1.1.0.0.nupkg rename to test/Squirrel.Tests/fixtures/Squirrel.Core.1.1.0.0.nupkg diff --git a/test/fixtures/Squirrel.Core.1.1.0.0.nuspec b/test/Squirrel.Tests/fixtures/Squirrel.Core.1.1.0.0.nuspec similarity index 100% rename from test/fixtures/Squirrel.Core.1.1.0.0.nuspec rename to test/Squirrel.Tests/fixtures/Squirrel.Core.1.1.0.0.nuspec diff --git a/test/fixtures/Squirrel.Core.1.2.0.0-full.nupkg b/test/Squirrel.Tests/fixtures/Squirrel.Core.1.2.0.0-full.nupkg similarity index 100% rename from test/fixtures/Squirrel.Core.1.2.0.0-full.nupkg rename to test/Squirrel.Tests/fixtures/Squirrel.Core.1.2.0.0-full.nupkg diff --git a/test/fixtures/Squirrel.Core.1.3.0.0-full.nupkg b/test/Squirrel.Tests/fixtures/Squirrel.Core.1.3.0.0-full.nupkg similarity index 100% rename from test/fixtures/Squirrel.Core.1.3.0.0-full.nupkg rename to test/Squirrel.Tests/fixtures/Squirrel.Core.1.3.0.0-full.nupkg diff --git a/test/fixtures/Squirrel.Core.NoDependencies.1.0.0.0.nupkg b/test/Squirrel.Tests/fixtures/Squirrel.Core.NoDependencies.1.0.0.0.nupkg similarity index 100% rename from test/fixtures/Squirrel.Core.NoDependencies.1.0.0.0.nupkg rename to test/Squirrel.Tests/fixtures/Squirrel.Core.NoDependencies.1.0.0.0.nupkg diff --git a/test/fixtures/Squirrel.Tests.0.1.0-pre.nupkg b/test/Squirrel.Tests/fixtures/Squirrel.Tests.0.1.0-pre.nupkg similarity index 100% rename from test/fixtures/Squirrel.Tests.0.1.0-pre.nupkg rename to test/Squirrel.Tests/fixtures/Squirrel.Tests.0.1.0-pre.nupkg diff --git a/test/fixtures/Squirrel.Tests.0.2.0-pre.nupkg b/test/Squirrel.Tests/fixtures/Squirrel.Tests.0.2.0-pre.nupkg similarity index 100% rename from test/fixtures/Squirrel.Tests.0.2.0-pre.nupkg rename to test/Squirrel.Tests/fixtures/Squirrel.Tests.0.2.0-pre.nupkg diff --git a/test/fixtures/SquirrelAwareApp.exe b/test/Squirrel.Tests/fixtures/SquirrelAwareApp.exe similarity index 100% rename from test/fixtures/SquirrelAwareApp.exe rename to test/Squirrel.Tests/fixtures/SquirrelAwareApp.exe diff --git a/test/fixtures/SquirrelAwareTweakedNetCoreApp.exe b/test/Squirrel.Tests/fixtures/SquirrelAwareTweakedNetCoreApp.exe similarity index 100% rename from test/fixtures/SquirrelAwareTweakedNetCoreApp.exe rename to test/Squirrel.Tests/fixtures/SquirrelAwareTweakedNetCoreApp.exe diff --git a/test/fixtures/SquirrelInstalledApp.nuspec b/test/Squirrel.Tests/fixtures/SquirrelInstalledApp.nuspec similarity index 100% rename from test/fixtures/SquirrelInstalledApp.nuspec rename to test/Squirrel.Tests/fixtures/SquirrelInstalledApp.nuspec diff --git a/test/fixtures/ThisShouldBeANet45Project.1.0.nupkg b/test/Squirrel.Tests/fixtures/ThisShouldBeANet45Project.1.0.nupkg similarity index 100% rename from test/fixtures/ThisShouldBeANet45Project.1.0.nupkg rename to test/Squirrel.Tests/fixtures/ThisShouldBeANet45Project.1.0.nupkg diff --git a/test/fixtures/atom.exe b/test/Squirrel.Tests/fixtures/atom.exe similarity index 100% rename from test/fixtures/atom.exe rename to test/Squirrel.Tests/fixtures/atom.exe diff --git a/test/fixtures/content-types/basic-merged.xml b/test/Squirrel.Tests/fixtures/content-types/basic-merged.xml similarity index 100% rename from test/fixtures/content-types/basic-merged.xml rename to test/Squirrel.Tests/fixtures/content-types/basic-merged.xml diff --git a/test/fixtures/content-types/basic.xml b/test/Squirrel.Tests/fixtures/content-types/basic.xml similarity index 100% rename from test/fixtures/content-types/basic.xml rename to test/Squirrel.Tests/fixtures/content-types/basic.xml diff --git a/test/fixtures/content-types/complex-merged.xml b/test/Squirrel.Tests/fixtures/content-types/complex-merged.xml similarity index 100% rename from test/fixtures/content-types/complex-merged.xml rename to test/Squirrel.Tests/fixtures/content-types/complex-merged.xml diff --git a/test/fixtures/content-types/complex.xml b/test/Squirrel.Tests/fixtures/content-types/complex.xml similarity index 100% rename from test/fixtures/content-types/complex.xml rename to test/Squirrel.Tests/fixtures/content-types/complex.xml diff --git a/test/fixtures/packages/Castle.Core.3.2.0/ASL - Apache Software Foundation License.txt b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/ASL - Apache Software Foundation License.txt similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/ASL - Apache Software Foundation License.txt rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/ASL - Apache Software Foundation License.txt diff --git a/test/fixtures/packages/Castle.Core.3.2.0/BreakingChanges.txt b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/BreakingChanges.txt similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/BreakingChanges.txt rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/BreakingChanges.txt diff --git a/test/fixtures/packages/Castle.Core.3.2.0/Castle.Core.3.2.0.nupkg b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/Castle.Core.3.2.0.nupkg similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/Castle.Core.3.2.0.nupkg rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/Castle.Core.3.2.0.nupkg diff --git a/test/fixtures/packages/Castle.Core.3.2.0/Changes.txt b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/Changes.txt similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/Changes.txt rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/Changes.txt diff --git a/test/fixtures/packages/Castle.Core.3.2.0/License.txt b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/License.txt similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/License.txt rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/License.txt diff --git a/test/fixtures/packages/Castle.Core.3.2.0/lib/net35/Castle.Core.dll b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net35/Castle.Core.dll similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/lib/net35/Castle.Core.dll rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net35/Castle.Core.dll diff --git a/test/fixtures/packages/Castle.Core.3.2.0/lib/net35/Castle.Core.xml b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net35/Castle.Core.xml similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/lib/net35/Castle.Core.xml rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net35/Castle.Core.xml diff --git a/test/fixtures/packages/Castle.Core.3.2.0/lib/net40-client/Castle.Core.dll b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net40-client/Castle.Core.dll similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/lib/net40-client/Castle.Core.dll rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net40-client/Castle.Core.dll diff --git a/test/fixtures/packages/Castle.Core.3.2.0/lib/net40-client/Castle.Core.xml b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net40-client/Castle.Core.xml similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/lib/net40-client/Castle.Core.xml rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net40-client/Castle.Core.xml diff --git a/test/fixtures/packages/Castle.Core.3.2.0/lib/net45/Castle.Core.dll b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net45/Castle.Core.dll similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/lib/net45/Castle.Core.dll rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net45/Castle.Core.dll diff --git a/test/fixtures/packages/Castle.Core.3.2.0/lib/net45/Castle.Core.xml b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net45/Castle.Core.xml similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/lib/net45/Castle.Core.xml rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/net45/Castle.Core.xml diff --git a/test/fixtures/packages/Castle.Core.3.2.0/lib/sl4/Castle.Core.dll b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/sl4/Castle.Core.dll similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/lib/sl4/Castle.Core.dll rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/sl4/Castle.Core.dll diff --git a/test/fixtures/packages/Castle.Core.3.2.0/lib/sl4/Castle.Core.xml b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/sl4/Castle.Core.xml similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/lib/sl4/Castle.Core.xml rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/sl4/Castle.Core.xml diff --git a/test/fixtures/packages/Castle.Core.3.2.0/lib/sl5/Castle.Core.dll b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/sl5/Castle.Core.dll similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/lib/sl5/Castle.Core.dll rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/sl5/Castle.Core.dll diff --git a/test/fixtures/packages/Castle.Core.3.2.0/lib/sl5/Castle.Core.xml b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/sl5/Castle.Core.xml similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/lib/sl5/Castle.Core.xml rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/lib/sl5/Castle.Core.xml diff --git a/test/fixtures/packages/Castle.Core.3.2.0/readme.txt b/test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/readme.txt similarity index 100% rename from test/fixtures/packages/Castle.Core.3.2.0/readme.txt rename to test/Squirrel.Tests/fixtures/packages/Castle.Core.3.2.0/readme.txt diff --git a/test/fixtures/packages/Microsoft.Web.Xdt.2.1.1/Microsoft.Web.Xdt.2.1.1.nupkg b/test/Squirrel.Tests/fixtures/packages/Microsoft.Web.Xdt.2.1.1/Microsoft.Web.Xdt.2.1.1.nupkg similarity index 100% rename from test/fixtures/packages/Microsoft.Web.Xdt.2.1.1/Microsoft.Web.Xdt.2.1.1.nupkg rename to test/Squirrel.Tests/fixtures/packages/Microsoft.Web.Xdt.2.1.1/Microsoft.Web.Xdt.2.1.1.nupkg diff --git a/test/fixtures/packages/Microsoft.Web.Xdt.2.1.1/lib/net40/Microsoft.Web.XmlTransform.dll b/test/Squirrel.Tests/fixtures/packages/Microsoft.Web.Xdt.2.1.1/lib/net40/Microsoft.Web.XmlTransform.dll similarity index 100% rename from test/fixtures/packages/Microsoft.Web.Xdt.2.1.1/lib/net40/Microsoft.Web.XmlTransform.dll rename to test/Squirrel.Tests/fixtures/packages/Microsoft.Web.Xdt.2.1.1/lib/net40/Microsoft.Web.XmlTransform.dll diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/Newtonsoft.Json.6.0.3.nupkg b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/Newtonsoft.Json.6.0.3.nupkg similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/Newtonsoft.Json.6.0.3.nupkg rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/Newtonsoft.Json.6.0.3.nupkg diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net20/Newtonsoft.Json.dll b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net20/Newtonsoft.Json.dll similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net20/Newtonsoft.Json.dll rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net20/Newtonsoft.Json.dll diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net20/Newtonsoft.Json.xml b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net20/Newtonsoft.Json.xml similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net20/Newtonsoft.Json.xml rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net20/Newtonsoft.Json.xml diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net35/Newtonsoft.Json.dll b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net35/Newtonsoft.Json.dll similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net35/Newtonsoft.Json.dll rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net35/Newtonsoft.Json.dll diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net35/Newtonsoft.Json.xml b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net35/Newtonsoft.Json.xml similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net35/Newtonsoft.Json.xml rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net35/Newtonsoft.Json.xml diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net40/Newtonsoft.Json.dll b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net40/Newtonsoft.Json.dll similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net40/Newtonsoft.Json.dll rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net40/Newtonsoft.Json.dll diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net40/Newtonsoft.Json.xml b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net40/Newtonsoft.Json.xml similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net40/Newtonsoft.Json.xml rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net40/Newtonsoft.Json.xml diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net45/Newtonsoft.Json.dll b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net45/Newtonsoft.Json.dll similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net45/Newtonsoft.Json.dll rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net45/Newtonsoft.Json.dll diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net45/Newtonsoft.Json.xml b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net45/Newtonsoft.Json.xml similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net45/Newtonsoft.Json.xml rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/net45/Newtonsoft.Json.xml diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/netcore45/Newtonsoft.Json.dll b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/netcore45/Newtonsoft.Json.dll similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/netcore45/Newtonsoft.Json.dll rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/netcore45/Newtonsoft.Json.dll diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/netcore45/Newtonsoft.Json.xml b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/netcore45/Newtonsoft.Json.xml similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/netcore45/Newtonsoft.Json.xml rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/netcore45/Newtonsoft.Json.xml diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.dll b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.dll similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.dll rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.dll diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.xml b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.xml similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.xml rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.xml diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml diff --git a/test/fixtures/packages/Newtonsoft.Json.6.0.3/tools/install.ps1 b/test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/tools/install.ps1 similarity index 100% rename from test/fixtures/packages/Newtonsoft.Json.6.0.3/tools/install.ps1 rename to test/Squirrel.Tests/fixtures/packages/Newtonsoft.Json.6.0.3/tools/install.ps1 diff --git a/test/fixtures/packages/NuGet.Core.2.8.2/NuGet.Core.2.8.2.nupkg b/test/Squirrel.Tests/fixtures/packages/NuGet.Core.2.8.2/NuGet.Core.2.8.2.nupkg similarity index 100% rename from test/fixtures/packages/NuGet.Core.2.8.2/NuGet.Core.2.8.2.nupkg rename to test/Squirrel.Tests/fixtures/packages/NuGet.Core.2.8.2/NuGet.Core.2.8.2.nupkg diff --git a/test/fixtures/packages/NuGet.Core.2.8.2/lib/net40-Client/NuGet.Core.dll b/test/Squirrel.Tests/fixtures/packages/NuGet.Core.2.8.2/lib/net40-Client/NuGet.Core.dll similarity index 100% rename from test/fixtures/packages/NuGet.Core.2.8.2/lib/net40-Client/NuGet.Core.dll rename to test/Squirrel.Tests/fixtures/packages/NuGet.Core.2.8.2/lib/net40-Client/NuGet.Core.dll diff --git a/test/fixtures/packages/Splat.1.4.0/Splat.1.4.0.nupkg b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/Splat.1.4.0.nupkg similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/Splat.1.4.0.nupkg rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/Splat.1.4.0.nupkg diff --git a/test/fixtures/packages/Splat.1.4.0/lib/MonoMac/Splat.dll b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/MonoMac/Splat.dll similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/MonoMac/Splat.dll rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/MonoMac/Splat.dll diff --git a/test/fixtures/packages/Splat.1.4.0/lib/MonoMac/Splat.dll.mdb b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/MonoMac/Splat.dll.mdb similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/MonoMac/Splat.dll.mdb rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/MonoMac/Splat.dll.mdb diff --git a/test/fixtures/packages/Splat.1.4.0/lib/Net45/Splat.dll b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/Net45/Splat.dll similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/Net45/Splat.dll rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/Net45/Splat.dll diff --git a/test/fixtures/packages/Splat.1.4.0/lib/Net45/Splat.pdb b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/Net45/Splat.pdb similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/Net45/Splat.pdb rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/Net45/Splat.pdb diff --git a/test/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.dll b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.dll similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.dll rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.dll diff --git a/test/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.pdb b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.pdb similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.pdb rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.pdb diff --git a/test/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.pri b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.pri similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.pri rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/NetCore45/Splat.pri diff --git a/test/fixtures/packages/Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.dll b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.dll similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.dll rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.dll diff --git a/test/fixtures/packages/Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.pri b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.pri similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.pri rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/Portable-Win81+Wpa81/Splat.pri diff --git a/test/fixtures/packages/Splat.1.4.0/lib/Portable-net45+win+wpa81+wp80/Splat.dll b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/Portable-net45+win+wpa81+wp80/Splat.dll similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/Portable-net45+win+wpa81+wp80/Splat.dll rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/Portable-net45+win+wpa81+wp80/Splat.dll diff --git a/test/fixtures/packages/Splat.1.4.0/lib/monoandroid/Splat.dll b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/monoandroid/Splat.dll similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/monoandroid/Splat.dll rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/monoandroid/Splat.dll diff --git a/test/fixtures/packages/Splat.1.4.0/lib/monoandroid/Splat.dll.mdb b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/monoandroid/Splat.dll.mdb similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/monoandroid/Splat.dll.mdb rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/monoandroid/Splat.dll.mdb diff --git a/test/fixtures/packages/Splat.1.4.0/lib/monotouch/Splat.dll b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/monotouch/Splat.dll similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/monotouch/Splat.dll rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/monotouch/Splat.dll diff --git a/test/fixtures/packages/Splat.1.4.0/lib/monotouch/Splat.dll.mdb b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/monotouch/Splat.dll.mdb similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/monotouch/Splat.dll.mdb rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/monotouch/Splat.dll.mdb diff --git a/test/fixtures/packages/Splat.1.4.0/lib/wp8/Splat.dll b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/wp8/Splat.dll similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/wp8/Splat.dll rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/wp8/Splat.dll diff --git a/test/fixtures/packages/Splat.1.4.0/lib/wp8/Splat.pdb b/test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/wp8/Splat.pdb similarity index 100% rename from test/fixtures/packages/Splat.1.4.0/lib/wp8/Splat.pdb rename to test/Squirrel.Tests/fixtures/packages/Splat.1.4.0/lib/wp8/Splat.pdb diff --git a/test/fixtures/packages/refit.1.3.0/lib/MonoAndroid/Refit.dll b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/MonoAndroid/Refit.dll similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/MonoAndroid/Refit.dll rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/MonoAndroid/Refit.dll diff --git a/test/fixtures/packages/refit.1.3.0/lib/MonoAndroid/Refit.dll.mdb b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/MonoAndroid/Refit.dll.mdb similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/MonoAndroid/Refit.dll.mdb rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/MonoAndroid/Refit.dll.mdb diff --git a/test/fixtures/packages/refit.1.3.0/lib/MonoMac/Refit.dll b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/MonoMac/Refit.dll similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/MonoMac/Refit.dll rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/MonoMac/Refit.dll diff --git a/test/fixtures/packages/refit.1.3.0/lib/MonoMac/Refit.dll.mdb b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/MonoMac/Refit.dll.mdb similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/MonoMac/Refit.dll.mdb rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/MonoMac/Refit.dll.mdb diff --git a/test/fixtures/packages/refit.1.3.0/lib/Net45/Refit-Portable.dll b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Net45/Refit-Portable.dll similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/Net45/Refit-Portable.dll rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Net45/Refit-Portable.dll diff --git a/test/fixtures/packages/refit.1.3.0/lib/Net45/Refit-Portable.pdb b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Net45/Refit-Portable.pdb similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/Net45/Refit-Portable.pdb rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Net45/Refit-Portable.pdb diff --git a/test/fixtures/packages/refit.1.3.0/lib/Net45/Refit.dll b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Net45/Refit.dll similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/Net45/Refit.dll rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Net45/Refit.dll diff --git a/test/fixtures/packages/refit.1.3.0/lib/Net45/Refit.pdb b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Net45/Refit.pdb similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/Net45/Refit.pdb rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Net45/Refit.pdb diff --git a/test/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.dll b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.dll similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.dll rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.dll diff --git a/test/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.dll.config b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.dll.config similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.dll.config rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.dll.config diff --git a/test/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.pdb b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.pdb similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.pdb rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/Portable-Net45+WinRT45+WP8/Refit-Portable.pdb diff --git a/test/fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll diff --git a/test/fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll.config b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll.config similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll.config rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/SL5/Refit.dll.config diff --git a/test/fixtures/packages/refit.1.3.0/lib/SL5/Refit.pdb b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/SL5/Refit.pdb similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/SL5/Refit.pdb rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/SL5/Refit.pdb diff --git a/test/fixtures/packages/refit.1.3.0/lib/WP8/Refit-Portable.dll b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/WP8/Refit-Portable.dll similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/WP8/Refit-Portable.dll rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/WP8/Refit-Portable.dll diff --git a/test/fixtures/packages/refit.1.3.0/lib/WP8/Refit-Portable.pdb b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/WP8/Refit-Portable.pdb similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/WP8/Refit-Portable.pdb rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/WP8/Refit-Portable.pdb diff --git a/test/fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll diff --git a/test/fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll.config b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll.config similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll.config rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/WP8/Refit.dll.config diff --git a/test/fixtures/packages/refit.1.3.0/lib/WP8/Refit.pdb b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/WP8/Refit.pdb similarity index 100% rename from test/fixtures/packages/refit.1.3.0/lib/WP8/Refit.pdb rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/lib/WP8/Refit.pdb diff --git a/test/fixtures/packages/refit.1.3.0/refit.1.3.0.nupkg b/test/Squirrel.Tests/fixtures/packages/refit.1.3.0/refit.1.3.0.nupkg similarity index 100% rename from test/fixtures/packages/refit.1.3.0/refit.1.3.0.nupkg rename to test/Squirrel.Tests/fixtures/packages/refit.1.3.0/refit.1.3.0.nupkg diff --git a/test/fixtures/packages/repositories.config b/test/Squirrel.Tests/fixtures/packages/repositories.config similarity index 100% rename from test/fixtures/packages/repositories.config rename to test/Squirrel.Tests/fixtures/packages/repositories.config diff --git a/test/fixtures/packages/xunit.2.0.0-beta-build2700/xunit.2.0.0-beta-build2700.nupkg b/test/Squirrel.Tests/fixtures/packages/xunit.2.0.0-beta-build2700/xunit.2.0.0-beta-build2700.nupkg similarity index 100% rename from test/fixtures/packages/xunit.2.0.0-beta-build2700/xunit.2.0.0-beta-build2700.nupkg rename to test/Squirrel.Tests/fixtures/packages/xunit.2.0.0-beta-build2700/xunit.2.0.0-beta-build2700.nupkg diff --git a/test/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/net35/xunit.abstractions.dll b/test/Squirrel.Tests/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/net35/xunit.abstractions.dll similarity index 100% rename from test/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/net35/xunit.abstractions.dll rename to test/Squirrel.Tests/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/net35/xunit.abstractions.dll diff --git a/test/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/net35/xunit.abstractions.xml b/test/Squirrel.Tests/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/net35/xunit.abstractions.xml similarity index 100% rename from test/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/net35/xunit.abstractions.xml rename to test/Squirrel.Tests/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/net35/xunit.abstractions.xml diff --git a/test/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.abstractions.dll b/test/Squirrel.Tests/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.abstractions.dll similarity index 100% rename from test/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.abstractions.dll rename to test/Squirrel.Tests/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.abstractions.dll diff --git a/test/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.abstractions.xml b/test/Squirrel.Tests/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.abstractions.xml similarity index 100% rename from test/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.abstractions.xml rename to test/Squirrel.Tests/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.abstractions.xml diff --git a/test/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/xunit.abstractions.2.0.0-beta-build2700.nupkg b/test/Squirrel.Tests/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/xunit.abstractions.2.0.0-beta-build2700.nupkg similarity index 100% rename from test/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/xunit.abstractions.2.0.0-beta-build2700.nupkg rename to test/Squirrel.Tests/fixtures/packages/xunit.abstractions.2.0.0-beta-build2700/xunit.abstractions.2.0.0-beta-build2700.nupkg diff --git a/test/fixtures/packages/xunit.assert.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monoandroid+monotouch10/xunit.assert.dll b/test/Squirrel.Tests/fixtures/packages/xunit.assert.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monoandroid+monotouch10/xunit.assert.dll similarity index 100% rename from test/fixtures/packages/xunit.assert.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monoandroid+monotouch10/xunit.assert.dll rename to test/Squirrel.Tests/fixtures/packages/xunit.assert.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monoandroid+monotouch10/xunit.assert.dll diff --git a/test/fixtures/packages/xunit.assert.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monoandroid+monotouch10/xunit.assert.xml b/test/Squirrel.Tests/fixtures/packages/xunit.assert.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monoandroid+monotouch10/xunit.assert.xml similarity index 100% rename from test/fixtures/packages/xunit.assert.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monoandroid+monotouch10/xunit.assert.xml rename to test/Squirrel.Tests/fixtures/packages/xunit.assert.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monoandroid+monotouch10/xunit.assert.xml diff --git a/test/fixtures/packages/xunit.assert.2.0.0-beta-build2700/xunit.assert.2.0.0-beta-build2700.nupkg b/test/Squirrel.Tests/fixtures/packages/xunit.assert.2.0.0-beta-build2700/xunit.assert.2.0.0-beta-build2700.nupkg similarity index 100% rename from test/fixtures/packages/xunit.assert.2.0.0-beta-build2700/xunit.assert.2.0.0-beta-build2700.nupkg rename to test/Squirrel.Tests/fixtures/packages/xunit.assert.2.0.0-beta-build2700/xunit.assert.2.0.0-beta-build2700.nupkg diff --git a/test/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/MonoAndroid/xunit.core.props b/test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/MonoAndroid/xunit.core.props similarity index 100% rename from test/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/MonoAndroid/xunit.core.props rename to test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/MonoAndroid/xunit.core.props diff --git a/test/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/MonoTouch/xunit.core.props b/test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/MonoTouch/xunit.core.props similarity index 100% rename from test/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/MonoTouch/xunit.core.props rename to test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/MonoTouch/xunit.core.props diff --git a/test/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/portable-net45+win+wpa81+wp80/xunit.core.props b/test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/portable-net45+win+wpa81+wp80/xunit.core.props similarity index 100% rename from test/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/portable-net45+win+wpa81+wp80/xunit.core.props rename to test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/build/portable-net45+win+wpa81+wp80/xunit.core.props diff --git a/test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.dll b/test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.dll similarity index 100% rename from test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.dll rename to test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.dll diff --git a/test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.dll.tdnet b/test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.dll.tdnet similarity index 100% rename from test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.dll.tdnet rename to test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.dll.tdnet diff --git a/test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.xml b/test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.xml similarity index 100% rename from test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.xml rename to test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.core.xml diff --git a/test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.execution.dll b/test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.execution.dll similarity index 100% rename from test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.execution.dll rename to test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.execution.dll diff --git a/test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.tdnet.dll b/test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.tdnet.dll similarity index 100% rename from test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.tdnet.dll rename to test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.tdnet.dll diff --git a/test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.utility.dll b/test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.utility.dll similarity index 100% rename from test/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.utility.dll rename to test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.utility.dll diff --git a/test/fixtures/packages/xunit.core.2.0.0-beta-build2700/xunit.core.2.0.0-beta-build2700.nupkg b/test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/xunit.core.2.0.0-beta-build2700.nupkg similarity index 100% rename from test/fixtures/packages/xunit.core.2.0.0-beta-build2700/xunit.core.2.0.0-beta-build2700.nupkg rename to test/Squirrel.Tests/fixtures/packages/xunit.core.2.0.0-beta-build2700/xunit.core.2.0.0-beta-build2700.nupkg diff --git a/test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monoandroid/xunit.runner.utility.dll b/test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monoandroid/xunit.runner.utility.dll similarity index 100% rename from test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monoandroid/xunit.runner.utility.dll rename to test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monoandroid/xunit.runner.utility.dll diff --git a/test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monoandroid/xunit.runner.utility.xml b/test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monoandroid/xunit.runner.utility.xml similarity index 100% rename from test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monoandroid/xunit.runner.utility.xml rename to test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monoandroid/xunit.runner.utility.xml diff --git a/test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monotouch/xunit.runner.utility.dll b/test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monotouch/xunit.runner.utility.dll similarity index 100% rename from test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monotouch/xunit.runner.utility.dll rename to test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monotouch/xunit.runner.utility.dll diff --git a/test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monotouch/xunit.runner.utility.xml b/test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monotouch/xunit.runner.utility.xml similarity index 100% rename from test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monotouch/xunit.runner.utility.xml rename to test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/monotouch/xunit.runner.utility.xml diff --git a/test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/net35/xunit.runner.utility.dll b/test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/net35/xunit.runner.utility.dll similarity index 100% rename from test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/net35/xunit.runner.utility.dll rename to test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/net35/xunit.runner.utility.dll diff --git a/test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/net35/xunit.runner.utility.xml b/test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/net35/xunit.runner.utility.xml similarity index 100% rename from test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/net35/xunit.runner.utility.xml rename to test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/lib/net35/xunit.runner.utility.xml diff --git a/test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/xunit.runner.utility.2.0.0-beta-build2700.nupkg b/test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/xunit.runner.utility.2.0.0-beta-build2700.nupkg similarity index 100% rename from test/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/xunit.runner.utility.2.0.0-beta-build2700.nupkg rename to test/Squirrel.Tests/fixtures/packages/xunit.runner.utility.2.0.0-beta-build2700/xunit.runner.utility.2.0.0-beta-build2700.nupkg diff --git a/test/fixtures/slack-1.1.8-full.nupkg b/test/Squirrel.Tests/fixtures/slack-1.1.8-full.nupkg similarity index 100% rename from test/fixtures/slack-1.1.8-full.nupkg rename to test/Squirrel.Tests/fixtures/slack-1.1.8-full.nupkg diff --git a/test/fixtures/slack-1.2.0-delta.nupkg b/test/Squirrel.Tests/fixtures/slack-1.2.0-delta.nupkg similarity index 100% rename from test/fixtures/slack-1.2.0-delta.nupkg rename to test/Squirrel.Tests/fixtures/slack-1.2.0-delta.nupkg From 002617de5105215976e841c6216359c12c0aad20 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 2 Jun 2022 01:34:03 -0700 Subject: [PATCH 09/10] Integrate unit tests into CI build Also support "debug" switch for running tests against dev/debug build. --- .github/workflows/build.yml | 4 +++ src/build_official.cmd | 4 +-- test/test_official.cmd | 54 +++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 test/test_official.cmd diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d295489b..94033e80 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,6 +31,10 @@ jobs: shell: cmd run: ./src/build_official.cmd + - name: Test Squirrel + shell: cmd + run: ./test/test_official.cmd + - name: Save build uses: actions/upload-artifact@v2 with: diff --git a/src/build_official.cmd b/src/build_official.cmd index cd1624fe..22211a41 100644 --- a/src/build_official.cmd +++ b/src/build_official.cmd @@ -4,11 +4,11 @@ setlocal pushd %~dp0 :parse_args -@if not "%1"=="" shift & goto parse_args +if not "%1"=="" shift & goto parse_args :: Init -@if "%VCToolsVersion%"=="" call :StartDeveloperCommandPrompt || exit /b +if "%VCToolsVersion%"=="" call :StartDeveloperCommandPrompt || exit /b :: Clean diff --git a/test/test_official.cmd b/test/test_official.cmd new file mode 100644 index 00000000..9126c07c --- /dev/null +++ b/test/test_official.cmd @@ -0,0 +1,54 @@ +@echo off + +setlocal +pushd %~dp0 + +set _C=Release +set _S=src\build_official.cmd + +:parse_args +if /i "%1"=="debug" (set _C=Debug) & (set _S=devbuild.cmd) +if not "%1"=="" shift & goto parse_args + +:: Init + +if "%VCToolsVersion%"=="" call :StartDeveloperCommandPrompt || exit /b + + +:: Test + +if not exist ..\build\%_C%\test\net45\Squirrel.Tests.dll (echo Run %_S% before running test\test_official.cmd) & (exit -1) + +VSTest.Console.exe ..\build\%_C%\test\net45\*.Tests.dll || exit /b + + +goto LExit + +:StartDeveloperCommandPrompt +if not "%SquirrelSkipVsDevCmd%"=="" ( + echo Skipping initializing developer command prompt + exit /b +) + +echo Initializing developer command prompt + +if not exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" ( + "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" + exit /b 2 +) + +for /f "usebackq delims=" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [16.0^,18.0^) -property installationPath`) do ( + if exist "%%i\Common7\Tools\vsdevcmd.bat" ( + call "%%i\Common7\Tools\vsdevcmd.bat" -no_logo + exit /b + ) + echo developer command prompt not found in %%i +) + +echo No versions of developer command prompt found +exit /b 2 + +:LExit + +popd +endlocal From e298270bed7902015f2b3615d6bdab162cfcdfa8 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Wed, 15 Jun 2022 14:59:33 -0700 Subject: [PATCH 10/10] Update build instructions Fixes #1814 --- README.md | 3 +-- docs/contributing/building-squirrel.md | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9f570700..4088d067 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,7 @@ For the impatient: ```sh git clone --recursive https://github.com/squirrel/squirrel.windows cd squirrel.windows -.\.NuGet\NuGet.exe restore -msbuild /p:Configuration=Release +devbuild.cmd ``` See [Contributing](docs/contributing/contributing.md) for additional information on building and contributing to Squirrel. diff --git a/docs/contributing/building-squirrel.md b/docs/contributing/building-squirrel.md index 16cecc69..66b0f9c5 100644 --- a/docs/contributing/building-squirrel.md +++ b/docs/contributing/building-squirrel.md @@ -11,11 +11,10 @@ For the Impatient: git clone https://github.com/squirrel/squirrel.windows cd squirrel.windows git submodule update --init --recursive ## THIS IS THE PART YOU PROBABLY FORGOT -.\.NuGet\NuGet.exe restore -msbuild /p:Configuration=Release +devbuild.cmd ``` -**Tip:** You can compile the Squirrel.Windows solution with Visual Studio version 2013 and above (including community edition). +**Tip:** You can compile the Squirrel.Windows solution with Visual Studio version 2019 and above (including community edition). **Tip:** For Visual Studio versions that use the Visual Studio Installer (2017/2019 and above), you will need to have at least both Desktop .NET development and Desktop C++ development workloads checked in the Visual Studio Installer. You will also need to make sure that the individual package for the VC++ version used by Squirrel is checked.