public void SharedFx_With_Higher_Version_Wins_Against_Additional_Deps() { var fixture = GlobalLightupClientFixture .Copy(); var fixtureLib = sharedTestState.LightupLibFixture_Published .Copy(); CopyLightupLib(fixture, fixtureLib); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; // Set desired version = 7777.0.0 string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "LightupClient.runtimeconfig.json"); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true); // Add versions in the exe folder SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _fxBaseDir, "9999.0.0"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _uberFxBaseDir, "9999.0.0", "7777.0.0"); // Copy NetCoreApp's copy of the assembly to the app location string netcoreAssembly = Path.Combine(_fxBaseDir, "9999.0.0", "System.Collections.Immutable.dll"); string appAssembly = Path.Combine(fixture.TestProject.OutputDirectory, "System.Collections.Immutable.dll"); File.Copy(netcoreAssembly, appAssembly); // Create a deps.json file in the folder "additionalDeps\shared\Microsoft.NETCore.App\9999.0.0" string additionalDepsRootPath = Path.Combine(_fxBaseDir, "additionalDeps"); JObject versionInfo = new JObject(); versionInfo.Add(new JProperty("assemblyVersion", "0.0.0.1")); versionInfo.Add(new JProperty("fileVersion", "0.0.0.2")); string additionalDepsPath = CreateAdditionalDeps(additionalDepsRootPath, versionInfo); // Version: NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // Existing:NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // Expected: 9999.0.0 // 7777.0.0 // Expected: the uber framework's version of System.Collections.Immutable is used instead of the additional-deps string uberAssembly = Path.Combine(_uberFxBaseDir, "7777.0.0", "System.Collections.Immutable.dll"); dotnet.Exec("exec", "--additional-deps", additionalDepsPath, appDll) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute() .Should().Pass() .And.HaveStdErrContaining($"Using specified additional deps.json: '{additionalDepsPath}'") .And.HaveStdErrContaining($"Adding tpa entry: {uberAssembly}") .And.HaveStdErrContaining($"Adding tpa entry: {appAssembly}") .And.HaveStdErrContaining($"Replacing deps entry [{appAssembly}") .And.HaveStdErrContaining($"with [{uberAssembly}, AssemblyVersion:{SystemCollectionsImmutableAssemblyVersion}, FileVersion:{SystemCollectionsImmutableFileVersion}]") // Verify final selection in TRUSTED_PLATFORM_ASSEMBLIES .And.HaveStdErrContaining($"{uberAssembly}{Path.PathSeparator}") .And.NotHaveStdErrContaining($"{appAssembly}{Path.PathSeparator}"); }
public void Multiple_SharedFxLookup_Uber_Wins_Over_NetCoreApp_On_PatchRollForward() { var fixture = SharedFxLookupPortableAppFixture .Copy(); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true); // Add versions in the exe folders SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.0.1"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.0.0", "7777.0.0"); // The System.Collections.Immutable.dll is located in the UberFramework and NetCoreApp // Version: NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // 'Roll forward on no candidate fx' enabled through config // Exe: NetCoreApp 9999.0.1 // UberFramework 7777.0.0 // Expected: 9999.0.1 // 7777.0.0 dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute() .Should().Pass() .And.HaveStdErrContaining(Path.Combine("7777.0.0", "System.Collections.Immutable.dll")) .And.NotHaveStdErrContaining(Path.Combine("9999.1.0", "System.Collections.Immutable.dll")); }
public void SharedFx_With_Higher_Version_Wins_Against_App_On_NoRollForward() { var fixture = PreviouslyBuiltAndRestoredPortableTestProjectFixture .Copy(); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; // Set desired version = 7777.0.0 string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true); // Add versions in the exe folder SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.0.0"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.0.0", null, "7777.0.0"); // Copy NetCoreApp's copy of the assembly to the app location string netcoreAssembly = Path.Combine(_exeSharedFxBaseDir, "9999.0.0", "System.Collections.Immutable.dll"); string appAssembly = Path.Combine(fixture.TestProject.OutputDirectory, "System.Collections.Immutable.dll"); File.Copy(netcoreAssembly, appAssembly); // Modify the app's deps.json to add System.Collections.Immmutable string appDepsJson = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.deps.json"); // Use lower numbers for the app JObject versionInfo = new JObject(); versionInfo.Add(new JProperty("assemblyVersion", "0.0.0.1")); versionInfo.Add(new JProperty("fileVersion", "0.0.0.2")); SharedFramework.AddReferenceToDepsJson(appDepsJson, "SharedFxLookupPortableApp/1.0.0", "System.Collections.Immutable", "1.0.0", versionInfo); // Version: NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // Exe: NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // Expected: 9999.0.0 // 7777.0.0 // Expected: the framework's version of System.Collections.Immutable is used string uberAssembly = Path.Combine(_exeSharedUberFxBaseDir, "7777.0.0", "System.Collections.Immutable.dll"); dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute() .Should() .Pass() .And .HaveStdErrContaining($"Adding tpa entry: {uberAssembly}, AssemblyVersion: {SystemCollectionsImmutableAssemblyVersion}, FileVersion: {SystemCollectionsImmutableFileVersion}") .And // Verify final selection in TRUSTED_PLATFORM_ASSEMBLIES .HaveStdErrContaining($"{uberAssembly}{Path.PathSeparator}") .And .NotHaveStdErrContaining($"{netcoreAssembly}{Path.PathSeparator}") .And .NotHaveStdErrContaining($"{appAssembly}{Path.PathSeparator}"); }
public void Multiple_SharedFxLookup_Do_Not_Propagate() { var fixture = PreviouslyBuiltAndRestoredPortableTestProjectFixture .Copy(); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true); // Add versions in the exe folders SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.1.0"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.0.0", "7777.0.0"); // Version: NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // 'Roll forward on no candidate fx' disabled through env var // Exe: NetCoreApp 9999.1.0 // UberFramework 7777.0.0 // Expected: no compatible version dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .EnvironmentVariable("DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX", "0") .CaptureStdOut() .CaptureStdErr() .Execute(fExpectedToFail: true) .Should() .Fail() .And .HaveStdErrContaining("It was not possible to find any compatible framework version"); // Enable rollForwardOnNoCandidateFx on app's config, which will not be used as the default for Uber's config SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", rollFwdOnNoCandidateFx: 1, useUberFramework: true); // Version: NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // 'Roll forward on no candidate fx' enabled through config // Exe: NetCoreApp 9999.1.0 // UberFramework 7777.0.0 // Expected: no compatible version dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .EnvironmentVariable("DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX", "0") .CaptureStdOut() .CaptureStdErr() .Execute(fExpectedToFail: true) .Should() .Fail() .And .HaveStdErrContaining("It was not possible to find any compatible framework version"); }
public void Multiple_Fx_References_Can_Roll_Forward_With_Retry() { var fixture = PreviouslyBuiltAndRestoredPortableTestProjectFixture .Copy(); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); var additionalfxs = new JArray(); additionalfxs.Add(GetAdditionalFramework("Microsoft.UberFramework", "7777.0.0", null, null)); // Specify Uber as additional fx so we find NetCoreApp 9999.1.1 and then need to do a re-try for 9999.5.5 SharedFramework.SetRuntimeConfigJson(runtimeConfig, "9999.1.1", null, null, frameworks: additionalfxs); // Add versions in the exe folders SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.1.1", "9999.5.5"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.5.5", "7777.0.0"); // Version: NetCoreApp 9999.1.1 (in framework section) // UberFramework 7777.0.0 (in frameworks section) // NetCoreApp 9999.5.5 (in uber's config) // Exe: NetCoreApp 9999.1.1 // NetCoreApp 9999.5.5 // UberFramework 7777.0.0 // Expected: 9999.5.5 // 7777.0.0 dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute() .Should() .Pass() .And .HaveStdErrContaining(Path.Combine(_exeSelectedMessage, "9999.5.5")) .And .HaveStdOutContaining("Framework Version:9999.5.5") .And .HaveStdErrContaining(Path.Combine(_exeFoundUberFxMessage, "7777.0.0")) .And .HaveStdErrContaining("Restarting all framework resolution because the previously resolved framework 'Microsoft.NETCore.App', version '9999.1.1' must be re-resolved with the new version '9999.5.5'"); }
public void Multiple_Fx_References_Can_Roll_Forward_Without_Retry() { var fixture = PreviouslyBuiltAndRestoredPortableTestProjectFixture .Copy(); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); var additionalfxs = new JArray(); additionalfxs.Add(GetAdditionalFramework("Microsoft.NETCore.App", "9999.1.1", applyPatches: false, rollForwardOnNoCandidateFx: 1)); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true, frameworks: additionalfxs); // Add versions in the exe folders SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.1.0", "9999.5.5"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.5.5", "7777.0.0"); // Version: NetCoreApp 9999.5.5 (in framework section) // NetCoreApp 9999.1.0 (in frameworks section) // UberFramework 7777.0.0 // Exe: NetCoreApp 9999.1.0 rollForwardOnNoCandidateFx:1 applyPatches:false // NetCoreApp 9999.5.5 // UberFramework 7777.0.0 // Expected: 9999.5.5 // 7777.0.0 dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute() .Should() .Pass() .And .HaveStdErrContaining(Path.Combine(_exeSelectedMessage, "9999.5.5")) .And .HaveStdOutContaining("Framework Version:9999.5.5") .And .HaveStdErrContaining(Path.Combine(_exeFoundUberFxMessage, "7777.0.0")) .And .NotHaveStdErrContaining("Restarting all framework resolution"); }
public void Multiple_Fx_References_Cant_Roll_Forward_Because_Disabled_Through_CommandLine() { var fixture = SharedFxLookupPortableAppFixture .Copy(); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); var additionalfxs = new JArray { GetAdditionalFramework("Microsoft.NETCore.App", "9999.1.1", applyPatches: false, rollForwardOnNoCandidateFx: 1) }; SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true, frameworks: additionalfxs); // Add versions in the exe folders SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.1.0", "9999.5.5"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.5.5", "7777.0.0"); // Version: NetCoreApp 9999.5.5 (in framework section) // NetCoreApp 9999.1.0 (in frameworks section) // UberFramework 7777.0.0 // Exe: NetCoreApp 9999.1.0 rollForwardOnNoCandidateFx:1 applyPatches:false // NetCoreApp 9999.5.5 // UberFramework 7777.0.0 // --roll-forward-on-no-candidate-fx=0 should override config settings // Expected: 9999.5.5 // 7777.0.0 dotnet.Exec( "exec", "--roll-forward-on-no-candidate-fx", "0", appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute(fExpectedToFail: true) .Should().Fail() .And.HaveStdErrContaining("cannot roll-forward to the previously referenced version '9999.5.5"); }
public void Multiple_SharedFxLookup_NetCoreApp_MinorRollForward_Wins_Over_UberFx() { var fixture = PreviouslyBuiltAndRestoredPortableTestProjectFixture .Copy(); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true); // Modify the Uber values SharedFramework.CreateUberFrameworkArtifacts(_builtSharedFxDir, _builtSharedUberFxDir, "0.0.0.1", "0.0.0.2"); // Add versions in the exe folders SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.1.0"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.0.0", "7777.0.0"); string uberFile = Path.Combine(_exeSharedUberFxBaseDir, "7777.0.0", "System.Collections.Immutable.dll"); string netCoreAppFile = Path.Combine(_exeSharedFxBaseDir, "9999.1.0", "System.Collections.Immutable.dll"); // The System.Collections.Immutable.dll is located in the UberFramework and NetCoreApp // Version: NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // 'Roll forward on no candidate fx' enabled through config // Exe: NetCoreApp 9999.1.0 // UberFramework 7777.0.0 // Expected: 9999.1.0 // 7777.0.0 dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute() .Should() .Pass() .And .HaveStdErrContaining($"Replacing deps entry [{uberFile}, AssemblyVersion:0.0.0.1, FileVersion:0.0.0.2] with [{netCoreAppFile}"); }
private TestProjectFixture ConfigureAppAndFrameworks(string appAssemblyVersion, string uberFxAssemblyVersion, string uberFxProductVersion, out string appAssembly, out string uberAssembly, out string netcoreAssembly) { const string fileVersion = "0.0.0.9"; var fixture = SharedFxLookupPortableAppFixture .Copy(); if (!string.IsNullOrEmpty(uberFxAssemblyVersion)) { // Modify Uber Fx's deps.json SharedFramework.CreateUberFrameworkArtifacts(_builtSharedFxDir, _builtSharedUberFxDir, uberFxAssemblyVersion, fileVersion); } // Set desired version = 7777.0.0 string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true); // Add versions in the exe folder SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.0.0"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.0.0", uberFxProductVersion); // Copy NetCoreApp's copy of the assembly to the app location netcoreAssembly = Path.Combine(_exeSharedFxBaseDir, "9999.0.0", "System.Collections.Immutable.dll"); appAssembly = Path.Combine(fixture.TestProject.OutputDirectory, "System.Collections.Immutable.dll"); File.Copy(netcoreAssembly, appAssembly); // Modify the app's deps.json to add System.Collections.Immmutable string appDepsJson = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.deps.json"); JObject versionInfo = new JObject(); versionInfo.Add(new JProperty("assemblyVersion", appAssemblyVersion)); versionInfo.Add(new JProperty("fileVersion", fileVersion)); SharedFramework.AddReferenceToDepsJson(appDepsJson, "SharedFxLookupPortableApp/1.0.0", "System.Collections.Immutable", "1.0.0", versionInfo); uberAssembly = Path.Combine(_exeSharedUberFxBaseDir, uberFxProductVersion, "System.Collections.Immutable.dll"); return(fixture); }
public void Multiple_Fx_References_Cant_Roll_Forward_Because_Incompatible_Config() { var fixture = PreviouslyBuiltAndRestoredPortableTestProjectFixture .Copy(); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); var additionalfxs = new JArray(); additionalfxs.Add(GetAdditionalFramework("Microsoft.NETCore.App", "9999.1.0", applyPatches: false, rollForwardOnNoCandidateFx: 0)); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true, frameworks: additionalfxs); // Add versions in the exe folders SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.1.0", "9999.5.5"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.5.5", "7777.0.0"); // Verify that both 9999.1.0 and 9999.5.5 can't be selected with roll-forward disabled // Version: NetCoreApp 9999.5.5 (in framework section) // NetCoreApp 9999.1.0 (in frameworks section) // UberFramework 7777.0.0 // Exe: NetCoreApp 9999.1.0 rollForwardOnNoCandidateFx:0 applyPatches:false // NetCoreApp 9999.5.5 // UberFramework 7777.0.0 // Expected: no compatible version dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute(fExpectedToFail: true) .Should() .Fail() .And .HaveStdErrContaining("cannot roll-forward to the previously referenced version '9999.5.5"); }
public void Multiple_SharedFxLookup_Propagated_Additional_Framework_RuntimeConfig_Values() { var fixture = PreviouslyBuiltAndRestoredPortableTestProjectFixture .Copy(); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); var additionalfxs = new JArray(); additionalfxs.Add(GetAdditionalFramework("Microsoft.NETCore.App", "9999.1.0", applyPatches: false, rollForwardOnNoCandidateFx: 0)); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true, additionalFrameworks: additionalfxs); // Add versions in the exe folders SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.1.0"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.5.5", "UberValue", "7777.0.0"); // Version: NetCoreApp 9999.5.5 (in framework section) // NetCoreApp 9999.1.0 (in app's additionalFrameworks section) // UberFramework 7777.0.0 // Exe: NetCoreApp 9999.1.0 // UberFramework 7777.0.0 // Expected: 9999.1.0 // 7777.0.0 dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute() .Should() .Pass() .And .HaveStdErrContaining(Path.Combine(_exeSelectedMessage, "9999.1.0")) .And .HaveStdErrContaining(Path.Combine(_exeFoundUberFxMessage, "7777.0.0")); // Change the additionalFrameworks to allow roll forward, overriding Uber's global section and ignoring Uber's framework section additionalfxs.Clear(); additionalfxs.Add(GetAdditionalFramework("Microsoft.NETCore.App", "9999.0.0", applyPatches: false, rollForwardOnNoCandidateFx: 1)); additionalfxs.Add(GetAdditionalFramework("UberFx", "7777.0.0", applyPatches: false, rollForwardOnNoCandidateFx: 0)); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", rollFwdOnNoCandidateFx: 0, useUberFramework: true, additionalFrameworks: additionalfxs); // Version: NetCoreApp 9999.5.5 (in framework section) // NetCoreApp 9999.0.0 (in app's additionalFrameworks section) // UberFramework 7777.0.0 // UberFramework 7777.0.0 (in app's additionalFrameworks section) // 'Roll forward on no candidate fx' disabled through env var // 'Roll forward on no candidate fx' disabled through Uber's global runtimeconfig // 'Roll forward on no candidate fx' enabled for NETCore.App enabled through additionalFrameworks section // Exe: NetCoreApp 9999.1.0 // UberFramework 7777.0.0 // Expected: 9999.1.0 // 7777.0.0 dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .EnvironmentVariable("DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX", "0") .CaptureStdOut() .CaptureStdErr() .Execute() .Should() .Pass() .And .HaveStdErrContaining(Path.Combine(_exeSelectedMessage, "9999.1.0")) .And .HaveStdErrContaining(Path.Combine(_exeFoundUberFxMessage, "7777.0.0")); // Same as previous except use of '--roll-forward-on-no-candidate-fx' // Expected: Fail since '--roll-forward-on-no-candidate-fx' should apply to all layers dotnet.Exec( "exec", "--roll-forward-on-no-candidate-fx", "0", appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .EnvironmentVariable("DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX", "1") .CaptureStdOut() .CaptureStdErr() .Execute(fExpectedToFail: true) .Should() .Fail() .And .HaveStdErrContaining("It was not possible to find any compatible framework version"); }
public void Multiple_SharedFxLookup_Independent_Roll_Forward() { var fixture = PreviouslyBuiltAndRestoredPortableTestProjectFixture .Copy(); var dotnet = fixture.BuiltDotnet; var appDll = fixture.TestProject.AppDll; string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json"); SharedFramework.SetRuntimeConfigJson(runtimeConfig, "7777.0.0", null, useUberFramework: true); // Add versions in the exe folders SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.0.0"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.0.0", null, "7777.0.0"); // Version: NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // Exe: NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // Expected: 9999.0.0 // 7777.0.0 dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute() .Should() .Pass() .And .HaveStdErrContaining(Path.Combine(_exeSelectedMessage, "9999.0.0")) .And .HaveStdErrContaining(Path.Combine(_exeFoundUberFxMessage, "7777.0.0")); // Add a newer version to verify roll-forward SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.0.1"); SharedFramework.AddAvailableSharedUberFxVersions(_builtSharedUberFxDir, _exeSharedUberFxBaseDir, "9999.0.0", null, "7777.0.1"); // Version: NetCoreApp 9999.0.0 // UberFramework 7777.0.0 // Exe: NetCoreApp 9999.0.0, 9999.0.1 // UberFramework 7777.0.0, 7777.0.1 // Expected: 9999.0.1 // 7777.0.1 dotnet.Exec(appDll) .WorkingDirectory(_currentWorkingDir) .EnvironmentVariable("COREHOST_TRACE", "1") .CaptureStdOut() .CaptureStdErr() .Execute() .Should() .Pass() .And .HaveStdErrContaining(Path.Combine(_exeSelectedMessage, "9999.0.1")) .And .HaveStdErrContaining(Path.Combine(_exeFoundUberFxMessage, "7777.0.1")); // Verify we have the expected runtime versions dotnet.Exec("--list-runtimes") .WorkingDirectory(_currentWorkingDir) .WithUserProfile(_userDir) .CaptureStdOut() .Execute() .Should() .Pass() .And .HaveStdOutContaining("Microsoft.NETCore.App 9999.0.0") .And .HaveStdOutContaining("Microsoft.NETCore.App 9999.0.1") .And .HaveStdOutContaining("Microsoft.UberFramework 7777.0.0") .And .HaveStdOutContaining("Microsoft.UberFramework 7777.0.1"); }