From 7eca4ab2ecc807236838cdb959cbc99f89867afc Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Mon, 4 May 2020 21:19:08 +0200 Subject: [PATCH] [Static web assets] Use prebuilt packages in tests * Avoids running dotnet restore and dotnet pack during tests which caused test hangs\n\nCommit migrated from https://github.com/dotnet/aspnetcore-tooling/commit/300eeb08d2d200c0ac95e79d36c4294de00d44e4 --- .../MSBuildIntegrationTestBase.cs | 30 +--- .../IntegrationTests/MSBuildProcessManager.cs | 8 +- .../StaticWebAssetsIntegrationTest.cs | 140 ++---------------- .../test/Microsoft.NET.Sdk.Razor.Test.csproj | 15 +- .../AppWithPackageAndP2PReference.csproj | 2 +- ...AppWithPackageAndP2PReferenceAndRID.csproj | 2 +- ...PackageLibraryDirectDependency.1.0.0.nupkg | Bin 0 -> 5103 bytes ...ageLibraryTransitiveDependency.1.0.0.nupkg | Bin 0 -> 4978 bytes .../RestoreTestProjects.csproj | 10 +- src/Razor/test/testassets/nuget.config | 6 + 10 files changed, 28 insertions(+), 185 deletions(-) create mode 100644 src/Razor/test/testassets/PregeneratedPackages/PackageLibraryDirectDependency.1.0.0.nupkg create mode 100644 src/Razor/test/testassets/PregeneratedPackages/PackageLibraryTransitiveDependency.1.0.0.nupkg create mode 100644 src/Razor/test/testassets/nuget.config diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/MSBuildIntegrationTestBase.cs b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/MSBuildIntegrationTestBase.cs index 2a38d92bbe..d79ec34f56 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/MSBuildIntegrationTestBase.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/MSBuildIntegrationTestBase.cs @@ -15,9 +15,6 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests { public abstract class MSBuildIntegrationTestBase { - internal static readonly string LocalNugetPackagesCacheTempPath = - Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) + Path.DirectorySeparatorChar; - private static readonly AsyncLocal _project = new AsyncLocal(); private static readonly AsyncLocal _projectTfm = new AsyncLocal(); @@ -49,10 +46,6 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests set { _project.Value = value; } } - // Whether to use a local cache or not to prevent polluting the global cache - // with test packages. - public bool UseLocalPackageCache { get; set; } - protected string RazorIntermediateOutputPath => Path.Combine(IntermediateOutputPath, "Razor"); protected string RazorComponentIntermediateOutputPath => Path.Combine(IntermediateOutputPath, "RazorDeclaration"); @@ -75,14 +68,6 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests { var timeout = suppressTimeout ? (TimeSpan?)Timeout.InfiniteTimeSpan : null; - // Additional restore sources for packages used in testing - var additionalRestoreSources = string.Join( - ',', - typeof(PackageTestProjectsFixture).Assembly.GetCustomAttributes() - .Where(a => a.Key == "Testing.AdditionalRestoreSources") - .Select(a => a.Value) - .ToArray()); - var buildArgumentList = new List { // Disable node-reuse. We don't want msbuild processes to stick around @@ -97,20 +82,8 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests $"/p:MicrosoftNETCoreApp50PackageVersion={BuildVariables.MicrosoftNETCoreApp50PackageVersion}", $"/p:MicrosoftNetCompilersToolsetPackageVersion={BuildVariables.MicrosoftNetCompilersToolsetPackageVersion}", - - // Additional restore sources for projects that require built packages - $"/p:RuntimeAdditionalRestoreSources={additionalRestoreSources}", }; - if (UseLocalPackageCache) - { - if (!Directory.Exists(LocalNugetPackagesCacheTempPath)) - { - // The local cache folder needs to exist so that nuget - Directory.CreateDirectory(LocalNugetPackagesCacheTempPath); - } - } - if (!suppressBuildServer) { buildArgumentList.Add($@"/p:_RazorBuildServerPipeName=""{buildServerPipeName ?? BuildServer.PipeName}"""); @@ -132,8 +105,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests Project, buildArguments, timeout, - msBuildProcessKind, - UseLocalPackageCache ? LocalNugetPackagesCacheTempPath : null); + msBuildProcessKind); } internal void AddProjectFileContent(string content) diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/MSBuildProcessManager.cs b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/MSBuildProcessManager.cs index d5d9ee61de..2f2ddc2d46 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/MSBuildProcessManager.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/MSBuildProcessManager.cs @@ -19,8 +19,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests ProjectDirectory project, string arguments, TimeSpan? timeout = null, - MSBuildProcessKind msBuildProcessKind = MSBuildProcessKind.Dotnet, - string localPackageCache = null) + MSBuildProcessKind msBuildProcessKind = MSBuildProcessKind.Dotnet) { var processStartInfo = new ProcessStartInfo() { @@ -30,11 +29,6 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests RedirectStandardOutput = true, }; - if (localPackageCache != null) - { - processStartInfo.Environment.Add("NUGET_PACKAGES", localPackageCache); - } - if (msBuildProcessKind == MSBuildProcessKind.Desktop) { if (string.IsNullOrEmpty(BuildVariables.MSBuildPath)) diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/StaticWebAssetsIntegrationTest.cs b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/StaticWebAssetsIntegrationTest.cs index 5966051fdb..810f24b194 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/StaticWebAssetsIntegrationTest.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/StaticWebAssetsIntegrationTest.cs @@ -16,28 +16,22 @@ using Xunit.Abstractions; namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests { - public class StaticWebAssetsIntegrationTest : MSBuildIntegrationTestBase, IClassFixture, IClassFixture, IAsyncLifetime + public class StaticWebAssetsIntegrationTest : MSBuildIntegrationTestBase, IClassFixture { public StaticWebAssetsIntegrationTest( BuildServerTestFixture buildServer, - PackageTestProjectsFixture packageTestProjects, ITestOutputHelper output) : base(buildServer) { - UseLocalPackageCache = true; - PackageTestProjects = packageTestProjects; Output = output; } - public PackageTestProjectsFixture PackageTestProjects { get; private set; } - public ITestOutputHelper Output { get; private set; } [Fact] - [InitializeTestProject("AppWithPackageAndP2PReference",language: "C#", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] + [InitializeTestProject("AppWithPackageAndP2PReference", language: "C#", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] public async Task Build_GeneratesStaticWebAssetsManifest_Success_CreatesManifest() { - await RestoreWithRetry(); var result = await DotnetMSBuild("Build"); var expectedManifest = GetExpectedManifest(); @@ -65,7 +59,6 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests [InitializeTestProject("AppWithPackageAndP2PReference", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] public async Task Publish_CopiesStaticWebAssetsToDestinationFolder() { - await RestoreWithRetry(); var result = await DotnetMSBuild("Publish"); Assert.BuildPassed(result); @@ -115,7 +108,6 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests [InitializeTestProject("AppWithPackageAndP2PReference", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] public async Task Publish_WithBuildReferencesDisabled_CopiesStaticWebAssetsToDestinationFolder() { - await RestoreWithRetry(); var build = await DotnetMSBuild("Build"); Assert.BuildPassed(build); @@ -137,7 +129,6 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests [InitializeTestProject("AppWithPackageAndP2PReference", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] public async Task Publish_NoBuild_CopiesStaticWebAssetsToDestinationFolder() { - await RestoreWithRetry(); var build = await DotnetMSBuild("Build"); Assert.BuildPassed(build); @@ -159,7 +150,6 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests [InitializeTestProject("SimpleMvc")] public async Task Build_DoesNotEmbedManifestWhen_NoStaticResourcesAvailable() { - await RestoreWithRetry(); var result = await DotnetMSBuild("Build"); Assert.BuildPassed(result); @@ -173,10 +163,9 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } [Fact] - [InitializeTestProject("AppWithPackageAndP2PReference",language: "C#", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] + [InitializeTestProject("AppWithPackageAndP2PReference", language: "C#", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] public async Task Clean_Success_RemovesManifestAndCache() { - await RestoreWithRetry(); var result = await DotnetMSBuild("Build"); Assert.BuildPassed(result); @@ -195,11 +184,10 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } [Fact] - [InitializeTestProject("AppWithPackageAndP2PReference",language: "C#", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] + [InitializeTestProject("AppWithPackageAndP2PReference", language: "C#", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] public async Task Rebuild_Success_RecreatesManifestAndCache() { // Arrange - await RestoreWithRetry(); var result = await DotnetMSBuild("Build"); var expectedManifest = GetExpectedManifest(); @@ -243,10 +231,9 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } [Fact] - [InitializeTestProject("AppWithPackageAndP2PReference",language: "C#", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] + [InitializeTestProject("AppWithPackageAndP2PReference", language: "C#", additionalProjects: new[] { "ClassLibrary", "ClassLibrary2" })] public async Task GenerateStaticWebAssetsManifest_IncrementalBuild_ReusesManifest() { - await RestoreWithRetry(); var result = await DotnetMSBuild("GenerateStaticWebAssetsManifest"); Assert.BuildPassed(result); @@ -282,47 +269,6 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } } - public Task InitializeAsync() - { - try - { - return PackageTestProjects.PackAsync(Output); - } - catch (Exception ex) - { - // We observed pack would "complete" in the past but MSBuild would get stuck. - // The generated package looked right, but it caused flakyness on our build infrastructure. - // We will try and continue running (even if the process didn't complete) and see if we can - // complete the test successfully. - Output.WriteLine($"Pack failed or did not complete: '{ex}'."); - return Task.CompletedTask; - } - } - - private async Task RestoreWithRetry() - { - for (var i = 0; i < 3; i++) - { - try - { - var result = await DotnetMSBuild("Restore"); - if (result.ExitCode == 0) - { - break; - } - } - catch - { - // Keep retrying if it fails. - } - } - } - - public Task DisposeAsync() - { - return Task.CompletedTask; - } - private string GetExpectedManifest() { // We need to do this for Mac as apparently the temp folder in mac is prepended by /private by the os, even though the current user @@ -330,7 +276,14 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests // validate the behavior at runtime. var source = RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? $"/private{Project.SolutionPath}" : Project.SolutionPath; - var restorePath = LocalNugetPackagesCacheTempPath; + var nugetPackages = Environment.GetEnvironmentVariable("NUGET_PACKAGES"); + var restorePath = !string.IsNullOrEmpty(nugetPackages) ? + nugetPackages : + Path.Combine( + RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? Environment.GetEnvironmentVariable("USERPROFILE") : Environment.GetEnvironmentVariable("HOME"), + ".nuget", + "packages"); + var projects = new[] { Path.Combine(restorePath, "packagelibrarytransitivedependency", "1.0.0", "build", "..", "staticwebassets") + Path.DirectorySeparatorChar, @@ -347,71 +300,4 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests "; } } - - public class PackageTestProjectsFixture - { - private const int MaxPackRetries = 3; - private const int MaxPackTimeoutInMinutes = 5; - - private bool _packed; - - internal async Task PackAsync(ITestOutputHelper output) - { - if (_packed) - { - return; - } - - var projectsToPack = GetProjectsToPack(); - - foreach (var project in projectsToPack) - { - output.WriteLine(project); - } - - foreach (var project in projectsToPack) - { - var psi = new ProcessStartInfo - { - FileName = DotNetMuxer.MuxerPathOrDefault(), -#if DEBUG - Arguments = "msbuild /t:Restore;Pack /p:Configuration=Debug", -#else - Arguments = "msbuild /t:Restore;Pack /p:Configuration=Release", -#endif - WorkingDirectory = project, - RedirectStandardOutput = true, - RedirectStandardError = true - }; - - for (int i = 0; i < MaxPackRetries; i++) - { - try - { - var result = await MSBuildProcessManager.RunProcessCoreAsync( - psi, - TimeSpan.FromMinutes(MaxPackTimeoutInMinutes)); - - output.WriteLine(result.Output); - Assert.Equal(0, result.ExitCode); - break; - } - catch - { - await Task.Delay(1000); - } - } - } - - _packed = true; - } - - public static string[] GetProjectsToPack() - { - return typeof(PackageTestProjectsFixture).Assembly.GetCustomAttributes() - .Where(a => a.Key == "Testing.ProjectToPack") - .Select(a => a.Value) - .ToArray(); - } - } } diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/test/Microsoft.NET.Sdk.Razor.Test.csproj b/src/Razor/Microsoft.NET.Sdk.Razor/test/Microsoft.NET.Sdk.Razor.Test.csproj index 0bba7a6407..84daa6f3fb 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/test/Microsoft.NET.Sdk.Razor.Test.csproj +++ b/src/Razor/Microsoft.NET.Sdk.Razor/test/Microsoft.NET.Sdk.Razor.Test.csproj @@ -28,19 +28,9 @@ - - <_Parameter1>Testing.ProjectToPack - <_Parameter2>$(MSBuildThisFileDirectory)..\testapps\PackageLibraryDirectDependency - - - - <_Parameter1>Testing.ProjectToPack - <_Parameter2>$(MSBuildThisFileDirectory)..\testapps\PackageLibraryTransitiveDependency - - <_Parameter1>Testing.AdditionalRestoreSources - <_Parameter2>$(MSBuildThisFileDirectory)..\testapps\TestPackageRestoreSource + <_Parameter2>$(MSBuildThisFileDirectory)..\testapps\PregeneratedPackages @@ -126,6 +116,9 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests + + + netcoreapp1.1 diff --git a/src/Razor/test/testassets/AppWithPackageAndP2PReference/AppWithPackageAndP2PReference.csproj b/src/Razor/test/testassets/AppWithPackageAndP2PReference/AppWithPackageAndP2PReference.csproj index f92a85eee6..a082defa12 100644 --- a/src/Razor/test/testassets/AppWithPackageAndP2PReference/AppWithPackageAndP2PReference.csproj +++ b/src/Razor/test/testassets/AppWithPackageAndP2PReference/AppWithPackageAndP2PReference.csproj @@ -6,7 +6,7 @@ $(DefaultNetCoreTargetFramework) - $(MSBuildThisFileDirectory)..\TestPackageRestoreSource\ + $(MSBuildThisFileDirectory)..\PregeneratedPackages\ $(RestoreAdditionalProjectSources);$(RuntimeAdditionalRestoreSources) diff --git a/src/Razor/test/testassets/AppWithPackageAndP2PReferenceAndRID/AppWithPackageAndP2PReferenceAndRID.csproj b/src/Razor/test/testassets/AppWithPackageAndP2PReferenceAndRID/AppWithPackageAndP2PReferenceAndRID.csproj index c6d44d95f5..9a11149cd1 100644 --- a/src/Razor/test/testassets/AppWithPackageAndP2PReferenceAndRID/AppWithPackageAndP2PReferenceAndRID.csproj +++ b/src/Razor/test/testassets/AppWithPackageAndP2PReferenceAndRID/AppWithPackageAndP2PReferenceAndRID.csproj @@ -7,7 +7,7 @@ $(DefaultNetCoreTargetFramework) win-x64 - $(MSBuildThisFileDirectory)..\TestPackageRestoreSource\ + $(MSBuildThisFileDirectory)..\PregeneratedPackages\ $(RestoreAdditionalProjectSources);$(RuntimeAdditionalRestoreSources) diff --git a/src/Razor/test/testassets/PregeneratedPackages/PackageLibraryDirectDependency.1.0.0.nupkg b/src/Razor/test/testassets/PregeneratedPackages/PackageLibraryDirectDependency.1.0.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..3d51146a4a5b0c65192a74eaa47200572d9e52d0 GIT binary patch literal 5103 zcmcIo2UJtrwxz2SL5!dRDqIjmNTC-2>Agq^5Sk$g5DXzCp$VcOO^Q-Qib@j!L8U|i zsTXNN0D&k)ih}em3QEa~-f=%ZuKzpUAO9y~XD8?6%(cc`d#}0HHZx>o0?^UX?WcRI zm1}lBPee?Vo{o;4fsT%icGU@w!Vo~f@1IHW!|n_auCOJxD-m%4^0s8Ghu4uIE3vig zNKo9}j>lP(5yA#nHd)FulQaSpJ2E^wQ&S~X$@lmnS_>G>_7IB@o{SzJw`sx8IcFR? zmX=)j-nA#WelXe8D{XBKUo>AejnVGUiZ8*P@K{^}9!Ot5)0W< z16zR%SlzhpF2ls@aGw=7$_&;aNClG8sa&2i z<>a!vtO1cHf)lJM-NxIkP8&#aipKI6cx86zHf5l0RqDFFc&acXFK$8;8j%Ze{JI0x zW!L4{coA*|hN}2zh~;ayX}>Lic|S<7nJN<#3zT8q5*fF#TyU?tXHr<`{`J#DhF3H8 zo)VSD7?sLMXZCM=>U&an(KJ4XX?I0ve44=#m*B1_BeXLfj`!C><538r77B;LB2id` zKM?Cpz@ZQ^3C1RkV6L!ry>|_($3Flp4+x4{Wjz&-)COIgM?1@w#4eO`$bVp$h^yeT zt}i#~6+LAEzH#FBam_i+x1l6-(xTO|e2nYjGsV`FWD2l!udWy|`VzT=uM z-e*3+ImBV{)h*RSw1;8+FgQ~S+-J@mw_o>#KQ28tiHHhB#ezuQS7*KL`FqbYQ}0CC z@Ru(4F(Jhj#r7dO8~pMVCJ0c)%!!tD1yH@$*;r~Rb<;&==7PbOscgX8JW{FHm7SfC z#VTrM?$VNvj`4wEfh;?l;iD6&lJ%o7XrsZ9c6j1u`T*$}SkC2WY03DyH%wSNoO7W| z!ouWoW#|r5U|gAT&zov@Cget8e6qr^vrtl3a6{x;XKOQTN;PALtSS-!&xQoXUHwO_ zD1o_V@6R7Le8Nl%5;q;4ByGZ=ok3U>Q5FaW{U&Tk3}(UF0RylCs5WBT%`>~NMM8ob zLh@THNDt^`G+x-{_S~*|0cf&PQV#G{1}jUCq=o@c8)zZc+Fptt=DxBLvC+eIGEOgh zIrq=#X5F0Eq8v8_Yq=0Fmqt>z(Y^&ojlkh$HKW^#Q};IS5?m)oZl3T<6w(4{SNg-#@6%sPvh05o+0tyux|?y>#&0Y|Q79&QieFfYMF zX@OREqUtU?JjyK!AFYAcuTwH)T7_S8TUx6t5EvB;ZoqPYBH=rW;kA=x=#!+O6U|2+ zeZt}(1zxxK0QkctY@0U+e2$J3c)2L*)LY?h*WQ*N;OKmyD70!o|D3r`XWV8@v*^KA zq75Gsy!|qhyOYQM<{H|oSbk)v%s8ezp4muacw6W-`)qsm-7l4BUKO|(H)qa%Qh-z1 zNGy{eQLWZf;l^c_?MK;aZiqR>{LsQR${p^$1!Ay? z_yWM1X+-$Itu#N~;c~YASXav&<2C-LDMn*|tTBMqPtvcC z6;s4w{bVkO*Je$xRBo;xsq*01R-V1pos(lyiz#Ulb65$4_L!rFlvpEH_R z0x_nK=cSJ?pM$=#O^%s)etZN4!-RNs5$9b#K6SwP>91$?70^>}qZHE>o!2wXPtrw$wD-!@O7~Jd~mj44wrPQ65w;or4 zYou08Okd48t$wt9|3`^RK;Qd_GRAw#&0C?31Cuf1HvJV6s*AR5Ds$IgFb#Xx%x`U# znJk(?CuJ{5k6zO>8q98@x};4`5|Tz#mX~h_vHI)Oa{5QvS6lf%!}&KtYpzoFB`P-( z)LVmR2Zl5Xr*u#4J7nKes^i_8mmnGm`P$7^`HWt5GH?Fb)qlgWeY^@0XjvN0AI_HFps*W{sJeED=L!$nN@$1$f>-q=DbTbXUHQ46V)Q47+yQSDE)N5 zg}1tj@r={*@N@L(+(GPDPCgm~Mtid>u}e4;nRf6Aj1O5A(({k4sSd{2D}q3;uQ?{? zoEQwbr5x>f(qwM-^5d9-5cXNThhWarBcJ#?eCr+Fon_IPCg#v&WEtV)5 z5dx9b)-zez4*!mCFzTVEUw*S2b>($h0d z-gn>ZSJ6T7b$2=#CsgDqX(G{gTd|>fXjP3zcEhP{wvM8OZ7+_i`&p%FnLnZnw6Q_U z_#bFW4W`Y`-e?RGWQ<1OJqeyJM4&nWXM!SXdg4()3nH9|Mp&bq)d>U?kpRTuJ#mEO zc(Os`c|h2@#;72GO`rEJ?@`7#g-k`EQ+eMtBBRLRzH6@dOHXDSSiNQ#@2=Ts(R2Rc1)a}V-P5A=P z++8qd_Dc=7rEH=A*@cggsTyAvE|oq*43xo0B=_>qRcT~M?Q}Y-x1CoWGK|8`=})B1 zRB^yELnKc54>tsr=q@Fd$H`f|YNozON)R04>r7RDH4hwF{gQ64R497+7W;#)Z*CO* zJHg5xTk`{M+;S-@Whz^rcG^XcW+AoO4iM)4sA-^pL*o`>EEUv3ObYs?P-) zdv>%T{$DKqMmm4+7f=^aXMFxb5Y!!iLjaT#5)$i*RS&vwgTb-`+9oeuDORVTR;<-k zQc({gy;Q6dvjSBJmk3KMo|A1WsZb#0+C0e=tIM>}S3l_%8mro&uqV8J-Hi|nnnRAX zq42k3#@-kr+7ga;MG?_h*WW4pZ{5^41)VOCkrov>eF~ze3{jzoN*9Qg6~;C+T&<4>E3QG%@h^df-r9mqHbUD9Ygmg+4Bq9r{G~eYmkH&4_PcA=AZ!{_LT;vm_x%$1h z<);n8kNx3`a)$rdA0PyQ0HS%10@A)1wn_9Fwx2O3pS_R|)oYUgw(1v^o40nfw{;j& zj9;~xc0$eanfDlouh2AI;75+Dw6Dn&H=mrjlM{eP+mAaTN=hKDN?cZwskt^F%|Ug*jWF>}RP@tLD+? zGy<;xFh{yk#r~Du5paNZaUxqTpT!u!qPCOSt;-_1Vi zDXY;WSfVJWY4C;#$D0Z#$V&p}ni|(c$dMyf(M;8mvk3e5NUkJ`v0)x5+FpXLR(!|H zN=eda|J6%w!!vbq-{bJlKF2FrqTh>_J@aUse9r;6zxo^y0fqNLBTxj82Z{(s!ijJY zf|f-kzi%fLo`|O1kVQx#T~N+4GDw7+3w&(nj!Zh;aWt*!}MAB5j{OfSrMkNMTNN~rd#PG3iu8?30J zF}B;_JhQCLs?f&*Jr)rCn;q*@;@3YlrZ-T$1(r&umD7#PSH9t>xg(jk5eOCiM;A>w zLT{B$Wm)niks4tMw+_Tw+EoTS^ceM>H#bahemhWc3}&eDJmw>ed?Z9T;^QjY3;DB2 z{UG*`Z01lufuO>!rufg-+?QF6HQ!rM>jypz9nZP>S~KGSRO%8VReZ8lfbmPOWFzjY zFmJ@AzGvOO2T33Tgg?hj-;@*1p%GKN*xvGmC(`M8UeA{8x8kW68anf+IzGjh&ftlgIKe)FA-hIl9wqSlE4}UepKSTbiQ`?2yqOHIGsBilj z`t2`DfnDe?`~UO8U@!V!iQGj$$ND$=Zy5QZM0;`fD%>tEirT#$e2hB}8NisVrF&N)g%jC2J*w zku4-CQX)#omhb8Pj`!8;=s*6x_xQe<8IxYZ>O3DUSb=dAr*b}HQRC+7mp(xni)MfKa`h4LDf_Vak*n$&l1eEPQ*S z?%=ZVn&P(iC+)w=_}AOGDVu85`8~chjD(HaYkwd4WY_)Z#G5#&bD?bVpG9-Do^yHB z2IYu_#`7-thnF9UH#x_olad#K^3qp7n;(~#T1g-OV4+ucqUfqbfeSJ}_4x^6;vL8s@_7?7#+`zv;=OU& zI1&vpQQ4wakmm$vYHc!DaJmwv0KO_>vCM%S1%H7ddvSQ8feF+xAGmD)>%b4y^ z`kIT37NG)mPHxPfq9{yPib}yxlHbc; z3;~UsKB&kOTH)|nOSxD{p?m8^lf9Xxb;lvM;Pu`_W@$3d{^_vSS}FHv5rc8Z^(ak} zc{T!Su_>96y5F9=MzKded0Ub2p6)=T=^o^@kS$f=xmDJO;&UzTFLH^}FYIS8fxNKv>={vWhtccREI-4-o zA>8g*h_H=Cc2Uy|ux01&BQK zH`WA8B+i-ZU*Xo_4t(7Gy|}3*Ji|pd6Vt5IRarKBW_OGNqP3?3as)fV}!Iiv3eWY+u6b3^J>%*2ux-|&kiuVLxV zA+-tKFr(*ZTRmT%=%nZ;9O@#M_cvTIBePlCm1g^EVI3WqdJnkX$-k54ZZh{Oduik_ zuhfjDj^tCTYrD$%OK^GhB9n3wgSxD9sFC;YM^UEV2No^wVL{$2Ivn$b2l3bMXh+}O zjL{zUN5`kSD9xOyH5?x^9HQ6QFLJzZ@9Kc*^qBpdTu1;0^+SID?0I%GOxt~G+Ei??mEo*n--A|jT;cN(o|NlpZ4lqj88`|QOnF9o$Nzfp(c9KK=IX4uQ13D3bn^v81}oU>hJTA-O$Ep zPPnpq$OO=V-NJb9jlcsrDX zZV3u~3!dO+H_GJhNs87H^H|ir_+qkiS5D~sBI;Ekwjk4V@m%LSrkVx0A^aynFG(9C z1v)DK@}Y{jLKvQ>Q}ct8PfoQ5YiHVM3Ke+^m%kV9E&$7$gmd2FBK5Ib>d%;ln%*P~ zn|@)>LCxzXr8miV4hW&ocUFdkzhY@sbK+i2zQGrsiw&FjW@fLy$h}f+{Q9azFI%O4 zN|f+I+^u)<%5Vv*=Uq)a1Ir0G?n6VINBWBHhxg576RGQtQ?D1qt|RK~ z2aqib%eCEC560))V{=0NUpmu1n$#6C*)><=SciP1JRf<%2O24;DgiduH$BHV70!V;%6h$}G5pdzGZo$VeCab*qB#yDs!$3*?{ zev2)KZ0F9{wW;=CSlOM=Bo7UObh;j{aHC`?B0~dFzqtrE3tZ^EztV6+Ic}8PX5)Dz zY2o2RHQm|}POQz)DRzp=drDLg1Qf&&KD}B~w|ES{@F~M~_=JMF zu%>vK0LJP27xe_D!)F=Z#4hkC<=A{0^Nn7f8J*w~;;Wk66l^c3#JoQF^33Ur2yo1E zuzShF+-r0`;YE;I!S$u0C!;l~ja&l`T|I~6Ja#eWGqSuWS-AJQ_ybM6CNJm`{|%j@ zU^C%OMg|(ih;1r>$Zma5g@IN|vn68i@y{cN0$UT3Tu=0U7(h2o+kvH%wkd3uUG>kZC?q#YOSuwU-av+WRS&!IZ#is zWZP;E%(pPDHc%J5?Ulwq5!VArN&DJxMj7)WafWa67TMp#>?@LJFA`oOchTSdXfIjU zoWI_TJUwg%HBj?eP{0S=H%fbIfaeVI(lN$%*Y_dFNHP}i7xVKUwYd@Z>$($)m3(WAvS;kuD>5;;5VAS+87l0t?_uHFX5}KZWI(6a#3pc zy8j)U3ma?Ask^fR!rwfx%oH&yB}-Tv6t=W2wO~x&A<{Tua9 z7zLUU$dQMjNg*LI&h94zjUwqxo|(17VKv}JmE#54Jtfsm(27T@jbKw~wRnj*OjS*( zy`);DA{$+l32w|p>zx#K360Tsrm}-vZwAF3{eu)R)cz!=??t5IO)z9<92M{G{5!V) z|5DX6fJ)w1gh@$AiX2r%9918Xg53v~$Oi92{`IGT>efVEx`?yLmM;sgOhe6f}MuIr7<7eke&c283Oh9eqgrJ@^Gi(+^KdZ=Set<4aC=t zm>t&)RNCy}^Sbp~39^Jf&lAiQqq~+F>rYJ9x}j6iC5V`+wow&PH!V_m!}yl74jvw% znySvrq3Y#r3Lmr&c^RST?H!xtSDCi7X|w)a@9C-5NCYC17ENK_-+k-j+2jQFnrF7u zBX`6&5yx-)6H}#_R9PhNPrkrZbR{qEVQSPqI(q4LS-m~h)wXBiPEpw{Fyq4QmvhEj zttJ<&2xDqEU)D#Q{KZdf`nh`4Y2(`0+00B5cv*an2TnicQ$M(SYUZv??ebwbo5uHw zbY98Oai#K4Ur!F&0sr^!1@R9>R303S_5{*jDWJ%Y^Go`7M*^kb$liEI90lrzqhhca zDhBEZq(QkKM*v5r;(-frRVA!E7Utk2ujHiYaMVdvS|ItXC(xIAqLE*EvtkKSRmDE3k^H&@J=Cm}0KC;jFFCQqIzLSF`edOqb!sT!3)vC2ygl-vs`(Gv%Q&-nSV#xg6f-GgR~`ilhirJh;5@fFdt(skv{fD`EEj2A-UXt%S zY~x?+yNiw+^nbVUz->RheroCsk$-=1XS2HflrgYjej~O2yLJ5;_E#;~Hf%qz2mf(H z_H&rYUwHd=m^aM-xzq1N-)VQ-=yI%oqW^|Me>loc?4544jotAl_CNHloso9B%yy&z zpnLwK8u|yG^K+D6`N4J+753kEho4b@mCCnK`vBBmB=(&EJ2T%lz|@}qK^`zoIk$(3p67k#Q*>R literal 0 HcmV?d00001 diff --git a/src/Razor/test/testassets/RestoreTestProjects/RestoreTestProjects.csproj b/src/Razor/test/testassets/RestoreTestProjects/RestoreTestProjects.csproj index ab772a0f92..2f8960787b 100644 --- a/src/Razor/test/testassets/RestoreTestProjects/RestoreTestProjects.csproj +++ b/src/Razor/test/testassets/RestoreTestProjects/RestoreTestProjects.csproj @@ -22,15 +22,7 @@ - - - - + diff --git a/src/Razor/test/testassets/nuget.config b/src/Razor/test/testassets/nuget.config new file mode 100644 index 0000000000..901ce91b14 --- /dev/null +++ b/src/Razor/test/testassets/nuget.config @@ -0,0 +1,6 @@ + + + + + +