diff --git a/.appveyor.yml b/.appveyor.yml
index f67ca4c0d5..bb08c43646 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -16,7 +16,7 @@ install:
- git submodule update --init --recursive
- net start w3svc
build_script:
- - ps: .\run.ps1 default-build /p:SkipIISBackwardsCompatibilityTests=true
+ - ps: .\run.ps1 default-build /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISForwardsCompatibilityTests=true
clone_depth: 1
environment:
global:
diff --git a/.vsts-pipelines/builds/ci-internal-21.yml b/.vsts-pipelines/builds/ci-internal-21.yml
index 1506ee3149..afb252eae8 100644
--- a/.vsts-pipelines/builds/ci-internal-21.yml
+++ b/.vsts-pipelines/builds/ci-internal-21.yml
@@ -13,7 +13,7 @@ phases:
parameters:
agentOs: Windows
codeSign: false
- buildArgs: /p:BuildServerIIS21=true /p:SkipIISExpressTests=true /p:SkipIISBackwardsCompatibilityTests=true
+ buildArgs: /p:BuildServerIIS21=true /p:SkipIISExpressTests=true /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISForwardsCompatibilityTests=true
beforeBuild:
- powershell: "& ./tools/UpdateIISExpressCertificate.ps1; & ./tools/update_schema.ps1; & ./tools/SetupTestEnvironment.ps1 SetupDumps"
displayName: Prepare repo
diff --git a/.vsts-pipelines/templates/build-steps.yml b/.vsts-pipelines/templates/build-steps.yml
index a1cd198773..4db5633ddc 100644
--- a/.vsts-pipelines/templates/build-steps.yml
+++ b/.vsts-pipelines/templates/build-steps.yml
@@ -3,7 +3,7 @@ phases:
parameters:
agentOs: Windows
phaseName: IIS_Express_Tests
- buildArgs: /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=true
+ buildArgs: /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=true /p:SkipIISForwardsCompatibilityTests=true
beforeBuild:
- powershell: "& ./tools/UpdateIISExpressCertificate.ps1; & ./tools/update_schema.ps1; & ./tools/SetupTestEnvironment.ps1 Setup"
displayName: Prepare repo
@@ -23,7 +23,7 @@ phases:
parameters:
agentOs: Windows
phaseName: IIS_Tests
- buildArgs: /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISExpressTests=true
+ buildArgs: /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=true
beforeBuild:
- powershell: "& ./tools/UpdateIISExpressCertificate.ps1; & ./tools/update_schema.ps1; & ./tools/SetupTestEnvironment.ps1 Setup"
displayName: Prepare repo
@@ -43,7 +43,27 @@ phases:
parameters:
agentOs: Windows
phaseName: IIS_BackCompat_Tests
- buildArgs: /p:SkipIISTests=true /p:SkipIISExpressTests=true
+ buildArgs: /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=true
+ beforeBuild:
+ - powershell: "& ./tools/UpdateIISExpressCertificate.ps1; & ./tools/update_schema.ps1; & ./tools/SetupTestEnvironment.ps1 Setup"
+ displayName: Prepare repo
+ afterBuild:
+ - powershell: "& ./tools/SetupTestEnvironment.ps1 Shutdown"
+ displayName: Stop AppVerifier
+ condition: always()
+ - task: PublishBuildArtifacts@1
+ displayName: Upload logs
+ condition: eq(variables['system.pullrequest.isfork'], false)
+ inputs:
+ artifactName: logs
+ artifactType: Container
+ pathtoPublish: artifacts/logs
+
+- template: .vsts-pipelines/templates/phases/default-build.yml@buildtools
+ parameters:
+ agentOs: Windows
+ phaseName: IIS_ForwardsCompat_Tests
+ buildArgs: /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISBackwardsCompatibilityTests=true
beforeBuild:
- powershell: "& ./tools/UpdateIISExpressCertificate.ps1; & ./tools/update_schema.ps1; & ./tools/SetupTestEnvironment.ps1 Setup"
displayName: Prepare repo
diff --git a/IISIntegration.NoV1.sln b/IISIntegration.NoV1.sln
index 2ee59d14bf..f7eb135f73 100644
--- a/IISIntegration.NoV1.sln
+++ b/IISIntegration.NoV1.sln
@@ -115,6 +115,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Tests", "test\Common
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.BackwardsCompatibility.FunctionalTests", "test\IIS.BackwardsCompatibility.FunctionalTests\IIS.BackwardsCompatibility.FunctionalTests.csproj", "{582B07BC-73F4-4689-8557-B039298BD82C}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.ForwardsCompatibility.FunctionalTests", "test\IIS.ForwardsCompatibility.FunctionalTests\IIS.ForwardsCompatibility.FunctionalTests.csproj", "{D1EA5D99-28FD-4197-81DE-17098846B38B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InProcessForwardsCompatWebSite", "test\WebSites\InProcessForwardsCompatWebSite\InProcessWebSite.csproj", "{BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -397,6 +401,28 @@ Global
{582B07BC-73F4-4689-8557-B039298BD82C}.Release|x64.Build.0 = Release|Any CPU
{582B07BC-73F4-4689-8557-B039298BD82C}.Release|x86.ActiveCfg = Release|Any CPU
{582B07BC-73F4-4689-8557-B039298BD82C}.Release|x86.Build.0 = Release|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|x64.Build.0 = Debug|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|x86.Build.0 = Debug|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|x64.ActiveCfg = Release|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|x64.Build.0 = Release|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|x86.ActiveCfg = Release|Any CPU
+ {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|x86.Build.0 = Release|Any CPU
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Debug|x64.ActiveCfg = Debug|x64
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Debug|x64.Build.0 = Debug|x64
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Debug|x86.ActiveCfg = Debug|x86
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Debug|x86.Build.0 = Debug|x86
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Release|Any CPU.ActiveCfg = Release|x86
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Release|x64.ActiveCfg = Release|x64
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Release|x64.Build.0 = Release|x64
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Release|x86.ActiveCfg = Release|x86
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -428,6 +454,8 @@ Global
{C0310D84-BC2F-4B2E-870E-D35044DB3E3E} = {EF30B533-D715-421A-92B7-92FEF460AC9C}
{D17B7B35-5361-4A50-B499-E03E5C3CC095} = {EF30B533-D715-421A-92B7-92FEF460AC9C}
{582B07BC-73F4-4689-8557-B039298BD82C} = {EF30B533-D715-421A-92B7-92FEF460AC9C}
+ {D1EA5D99-28FD-4197-81DE-17098846B38B} = {EF30B533-D715-421A-92B7-92FEF460AC9C}
+ {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493} = {744ACDC6-F6A0-4FF9-9421-F25C5F2DC520}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DB4F868D-E1AE-4FD7-9333-69FA15B268C5}
diff --git a/IISIntegration.sln b/IISIntegration.sln
index 6e8b394d5a..440001a8ac 100644
--- a/IISIntegration.sln
+++ b/IISIntegration.sln
@@ -123,6 +123,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Tests", "test\Common
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.BackwardsCompatibility.FunctionalTests", "test\IIS.BackwardsCompatibility.FunctionalTests\IIS.BackwardsCompatibility.FunctionalTests.csproj", "{28055B05-25D4-4F17-9F36-A1D09FDDA607}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.ForwardsCompatibility.FunctionalTests", "test\IIS.ForwardsCompatibility.FunctionalTests\IIS.ForwardsCompatibility.FunctionalTests.csproj", "{F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InProcessForwardsCompatWebSite", "test\WebSites\InProcessForwardsCompatWebSite\InProcessWebSite.csproj", "{980DAB60-6471-46EC-82EE-B457D91C3789}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -659,6 +663,42 @@ Global
{28055B05-25D4-4F17-9F36-A1D09FDDA607}.Release|x64.Build.0 = Release|Any CPU
{28055B05-25D4-4F17-9F36-A1D09FDDA607}.Release|x86.ActiveCfg = Release|Any CPU
{28055B05-25D4-4F17-9F36-A1D09FDDA607}.Release|x86.Build.0 = Release|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeDebug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeDebug|Any CPU.Build.0 = Debug|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeDebug|x64.ActiveCfg = Debug|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeDebug|x86.ActiveCfg = Debug|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeRelease|Any CPU.ActiveCfg = Release|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeRelease|Any CPU.Build.0 = Release|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeRelease|x64.ActiveCfg = Release|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeRelease|x86.ActiveCfg = Release|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|x64.ActiveCfg = Release|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|x64.Build.0 = Release|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|x86.ActiveCfg = Release|Any CPU
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|x86.Build.0 = Release|Any CPU
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.Debug|x64.ActiveCfg = Debug|x64
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.Debug|x64.Build.0 = Debug|x64
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.Debug|x86.ActiveCfg = Debug|x86
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.Debug|x86.Build.0 = Debug|x86
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeDebug|Any CPU.ActiveCfg = Release|x64
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeDebug|Any CPU.Build.0 = Release|x64
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeDebug|x64.ActiveCfg = Debug|x64
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeDebug|x86.ActiveCfg = Debug|x86
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeRelease|Any CPU.ActiveCfg = Release|x64
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeRelease|Any CPU.Build.0 = Release|x64
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeRelease|x64.ActiveCfg = Release|x64
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeRelease|x86.ActiveCfg = Release|x86
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.Release|Any CPU.ActiveCfg = Release|x86
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.Release|x64.ActiveCfg = Release|x64
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.Release|x64.Build.0 = Release|x64
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.Release|x86.ActiveCfg = Release|x86
+ {980DAB60-6471-46EC-82EE-B457D91C3789}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -693,6 +733,8 @@ Global
{A091777D-66B3-42E1-B95C-85322DE40706} = {EF30B533-D715-421A-92B7-92FEF460AC9C}
{A641A208-2974-4E48-BCFF-54E3AAFA4FB9} = {EF30B533-D715-421A-92B7-92FEF460AC9C}
{28055B05-25D4-4F17-9F36-A1D09FDDA607} = {EF30B533-D715-421A-92B7-92FEF460AC9C}
+ {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F} = {EF30B533-D715-421A-92B7-92FEF460AC9C}
+ {980DAB60-6471-46EC-82EE-B457D91C3789} = {744ACDC6-F6A0-4FF9-9421-F25C5F2DC520}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DB4F868D-E1AE-4FD7-9333-69FA15B268C5}
diff --git a/build/buildpipeline/windows.groovy b/build/buildpipeline/windows.groovy
index cc42e9ab4f..e3efa6193f 100644
--- a/build/buildpipeline/windows.groovy
+++ b/build/buildpipeline/windows.groovy
@@ -10,6 +10,6 @@ simpleNode('Windows.10.Amd64.EnterpriseRS3.ASPNET.Open') {
stage ('Build') {
def logFolder = getLogFolder()
def environment = "\$env:ASPNETCORE_TEST_LOG_DIR='${WORKSPACE}\\${logFolder}'"
- bat "powershell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command \"${environment};&.\\tools\\SetupTestEnvironment.ps1 SetupDumps;&.\\tools\\update_schema.ps1;&.\\tools\\UpdateIISExpressCertificate.ps1;&.\\run.cmd -CI default-build /p:SkipIISBackwardsCompatibilityTests=true /p:Configuration=${params.Configuration}\";"
+ bat "powershell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command \"${environment};&.\\tools\\SetupTestEnvironment.ps1 SetupDumps;&.\\tools\\update_schema.ps1;&.\\tools\\UpdateIISExpressCertificate.ps1;&.\\run.cmd -CI default-build /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISForwardsCompatibilityTests=true /p:Configuration=${params.Configuration}\";"
}
}
diff --git a/build/dependencies.props b/build/dependencies.props
index 619725a311..7e9a764869 100644
--- a/build/dependencies.props
+++ b/build/dependencies.props
@@ -1,4 +1,4 @@
-
+
$(MSBuildAllProjects);$(MSBuildThisFileFullPath)
@@ -56,8 +56,9 @@
- 2.2.0-preview3-35458
- 2.2.0-preview3-35458
+ 2.2.0-preview3-35504
+ 2.2.0-preview3-35504
+ 2.2.0-preview3-35504
2.1.0
diff --git a/build/repo.props b/build/repo.props
index 15cb7e1a13..6a94ca900f 100644
--- a/build/repo.props
+++ b/build/repo.props
@@ -24,6 +24,10 @@
+
+
+
+
Internal.AspNetCore.Universe.Lineup
diff --git a/test/Common.FunctionalTests/Inprocess/ErrorPagesTests.cs b/test/Common.FunctionalTests/Inprocess/ErrorPagesTests.cs
index 936ad852ac..bf45949491 100644
--- a/test/Common.FunctionalTests/Inprocess/ErrorPagesTests.cs
+++ b/test/Common.FunctionalTests/Inprocess/ErrorPagesTests.cs
@@ -82,6 +82,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
[ConditionalFact]
[RequiresIIS(IISCapability.PoolEnvironmentVariables)]
+ [RequiresNewHandler]
public async Task IncludesAdditionalErrorPageTextInProcessStartupFailure_CorrectString()
{
var deploymentParameters = _fixture.GetBaseDeploymentParameters(publish: true);
diff --git a/test/Common.FunctionalTests/Inprocess/StartupTests.cs b/test/Common.FunctionalTests/Inprocess/StartupTests.cs
index 5ca1733443..3bcc134cb2 100644
--- a/test/Common.FunctionalTests/Inprocess/StartupTests.cs
+++ b/test/Common.FunctionalTests/Inprocess/StartupTests.cs
@@ -233,7 +233,14 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
await AssertSiteFailsToStartWithInProcessStaticContent(deploymentResult);
- EventLogHelpers.VerifyEventLogEvent(deploymentResult, EventLogHelpers.InProcessFailedToFindRequestHandler(deploymentResult), Logger);
+ if (DeployerSelector.IsForwardsCompatibilityTest)
+ {
+ EventLogHelpers.VerifyEventLogEvent(deploymentResult, EventLogHelpers.InProcessFailedToFindNativeDependencies(deploymentResult), Logger);
+ }
+ else
+ {
+ EventLogHelpers.VerifyEventLogEvent(deploymentResult, EventLogHelpers.InProcessFailedToFindRequestHandler(deploymentResult), Logger);
+ }
}
[ConditionalFact]
diff --git a/test/IIS.FunctionalTests/RequiresNewShim.cs b/test/Common.FunctionalTests/RequiresNewHandler.cs
similarity index 57%
rename from test/IIS.FunctionalTests/RequiresNewShim.cs
rename to test/Common.FunctionalTests/RequiresNewHandler.cs
index 1765ba2d1e..cbe43ec0c7 100644
--- a/test/IIS.FunctionalTests/RequiresNewShim.cs
+++ b/test/Common.FunctionalTests/RequiresNewHandler.cs
@@ -2,16 +2,15 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
-using Microsoft.AspNetCore.Server.IntegrationTesting;
using Microsoft.AspNetCore.Testing.xunit;
namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
{
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
- public sealed class RequiresNewShimAttribute : Attribute, ITestCondition
+ public sealed class RequiresNewHandlerAttribute : Attribute, ITestCondition
{
- public bool IsMet => true;
+ public bool IsMet => !DeployerSelector.IsForwardsCompatibilityTest;
- public string SkipReason => "IIS.FunctionalTests always run against new shim.";
+ public string SkipReason => "Test verifies new behavior in the aspnetcorev2_inprocess.dll that isn't supported in earlier versions.";
}
}
diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/RequiresNewShim.cs b/test/Common.FunctionalTests/RequiresNewShim.cs
similarity index 87%
rename from test/IIS.BackwardsCompatibility.FunctionalTests/RequiresNewShim.cs
rename to test/Common.FunctionalTests/RequiresNewShim.cs
index f14085b05b..b0bc50a83b 100644
--- a/test/IIS.BackwardsCompatibility.FunctionalTests/RequiresNewShim.cs
+++ b/test/Common.FunctionalTests/RequiresNewShim.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
-using Microsoft.AspNetCore.Server.IntegrationTesting;
using Microsoft.AspNetCore.Testing.xunit;
namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
@@ -10,7 +9,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
public sealed class RequiresNewShimAttribute : Attribute, ITestCondition
{
- public bool IsMet => false;
+ public bool IsMet => !DeployerSelector.IsBackwardsCompatiblityTest;
public string SkipReason => "Test verifies new behavior in the aspnetcorev2.dll that isn't supported in earlier versions.";
}
diff --git a/test/Common.FunctionalTests/Utilities/Helpers.cs b/test/Common.FunctionalTests/Utilities/Helpers.cs
index 733030dbc8..1e31126eab 100644
--- a/test/Common.FunctionalTests/Utilities/Helpers.cs
+++ b/test/Common.FunctionalTests/Utilities/Helpers.cs
@@ -28,7 +28,10 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
return Path.Combine(TestPathUtilities.GetSolutionRootDirectory("IISIntegration"),"test", "WebSites", name);
}
- public static string GetInProcessTestSitesPath() => GetTestWebSitePath("InProcessWebSite");
+ public static string GetInProcessTestSitesPath()
+ {
+ return DeployerSelector.IsForwardsCompatibilityTest ? GetTestWebSitePath("InProcessForwardsCompatWebSite") : GetTestWebSitePath("InProcessWebSite");
+ }
public static string GetOutOfProcessTestSitesPath() => GetTestWebSitePath("OutOfProcessWebSite");
diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs b/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs
index a7243b0272..891c16c061 100644
--- a/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs
+++ b/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs
@@ -1,24 +1,20 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-using System;
using System.Diagnostics;
-using System.IO;
using System.Threading.Tasks;
-using Microsoft.AspNetCore.Server.IIS.FunctionalTests.Utilities;
-using Microsoft.AspNetCore.Server.IntegrationTesting;
using Microsoft.AspNetCore.Testing.xunit;
using Xunit;
using Xunit.Sdk;
namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
{
- [Collection(PublishedSitesCollection.Name)]
- public class BackwardsCompatibilityTests : IISFunctionalTestBase
+ [Collection(IISTestSiteCollection.Name)]
+ public class BackwardsCompatibilityTests : FixtureLoggedTest
{
- private readonly PublishedSitesFixture _fixture;
+ private readonly IISTestSiteFixture _fixture;
- public BackwardsCompatibilityTests(PublishedSitesFixture fixture)
+ public BackwardsCompatibilityTests(IISTestSiteFixture fixture) : base(fixture)
{
_fixture = fixture;
}
@@ -26,24 +22,18 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
[ConditionalFact]
public async Task CheckBackwardsCompatibilityIsUsed()
{
- var iisDeploymentParameters = _fixture.GetBaseDeploymentParameters(publish: true);
- iisDeploymentParameters.PreservePublishedApplicationForDebugging = true;
- var deploymentResult = await DeployAsync(iisDeploymentParameters);
+ var response = await _fixture.Client.GetAsync("/HelloWorld");
+ var handles = _fixture.DeploymentResult.HostProcess.Modules;
- var arch = iisDeploymentParameters.RuntimeArchitecture == RuntimeArchitecture.x64 ? $@"x64\aspnetcorev2.dll" : $@"x86\aspnetcorev2.dll";
-
- var fileInfo = FileVersionInfo.GetVersionInfo(Path.Combine(AppContext.BaseDirectory, arch));
- var response = await deploymentResult.HttpClient.GetAsync("/HelloWorld");
- var handles = deploymentResult.HostProcess.Modules;
foreach (ProcessModule handle in handles)
{
if (handle.ModuleName == "aspnetcorev2.dll")
{
- Assert.Equal("12.2.18283.0", handle.FileVersionInfo.FileVersion);
+ Assert.Equal("12.2.18289.0", handle.FileVersionInfo.FileVersion);
return;
}
}
- throw new XunitException($"Could not find aspnetcorev2.dll loaded in process {deploymentResult.HostProcess.ProcessName}");
+ throw new XunitException($"Could not find aspnetcorev2.dll loaded in process {_fixture.DeploymentResult.HostProcess.ProcessName}");
}
}
}
diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/DeployerSelector.cs b/test/IIS.BackwardsCompatibility.FunctionalTests/DeployerSelector.cs
index b6dc197e8a..5c6f3739a4 100644
--- a/test/IIS.BackwardsCompatibility.FunctionalTests/DeployerSelector.cs
+++ b/test/IIS.BackwardsCompatibility.FunctionalTests/DeployerSelector.cs
@@ -9,5 +9,6 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
{
public static ServerType ServerType => ServerType.IIS;
public static bool IsBackwardsCompatiblityTest => true;
+ public static bool IsForwardsCompatibilityTest => false;
}
}
diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj b/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj
index 58708fa85f..d3e2bbc530 100644
--- a/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj
+++ b/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj
@@ -43,14 +43,4 @@
-
-
-
-
-
-
- PreserveNewest
-
-
-
diff --git a/test/IIS.ForwardsCompatibility.FunctionalTests/DeployerSelector.cs b/test/IIS.ForwardsCompatibility.FunctionalTests/DeployerSelector.cs
new file mode 100644
index 0000000000..bd7aabbe0f
--- /dev/null
+++ b/test/IIS.ForwardsCompatibility.FunctionalTests/DeployerSelector.cs
@@ -0,0 +1,14 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using Microsoft.AspNetCore.Server.IntegrationTesting;
+
+namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
+{
+ public static class DeployerSelector
+ {
+ public static ServerType ServerType => ServerType.IIS;
+ public static bool IsBackwardsCompatiblityTest => false;
+ public static bool IsForwardsCompatibilityTest => true;
+ }
+}
diff --git a/test/IIS.ForwardsCompatibility.FunctionalTests/ForwardsCompatibilityTests.cs b/test/IIS.ForwardsCompatibility.FunctionalTests/ForwardsCompatibilityTests.cs
new file mode 100644
index 0000000000..52c7da80ad
--- /dev/null
+++ b/test/IIS.ForwardsCompatibility.FunctionalTests/ForwardsCompatibilityTests.cs
@@ -0,0 +1,38 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.Diagnostics;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Testing.xunit;
+using Xunit;
+using Xunit.Sdk;
+
+namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
+{
+ [Collection(IISTestSiteCollection.Name)]
+ public class ForwardsCompatibilityTests : FixtureLoggedTest
+ {
+ private readonly IISTestSiteFixture _fixture;
+
+ public ForwardsCompatibilityTests(IISTestSiteFixture fixture) : base(fixture)
+ {
+ _fixture = fixture;
+ }
+
+ [ConditionalFact]
+ public async Task CheckForwardsCompatibilityIsUsed()
+ {
+ var response = await _fixture.Client.GetAsync("/HelloWorld");
+ var handles = _fixture.DeploymentResult.HostProcess.Modules;
+ foreach (ProcessModule handle in handles)
+ {
+ if (handle.ModuleName == "aspnetcorev2_inprocess.dll")
+ {
+ Assert.Equal("12.2.18289.0", handle.FileVersionInfo.FileVersion);
+ return;
+ }
+ }
+ throw new XunitException($"Could not find aspnetcorev2_inprocess.dll loaded in process {_fixture.DeploymentResult.HostProcess.ProcessName}");
+ }
+ }
+}
diff --git a/test/IIS.ForwardsCompatibility.FunctionalTests/IIS.ForwardsCompatibility.FunctionalTests.csproj b/test/IIS.ForwardsCompatibility.FunctionalTests/IIS.ForwardsCompatibility.FunctionalTests.csproj
new file mode 100644
index 0000000000..929f6ec6b0
--- /dev/null
+++ b/test/IIS.ForwardsCompatibility.FunctionalTests/IIS.ForwardsCompatibility.FunctionalTests.csproj
@@ -0,0 +1,45 @@
+
+
+
+ netcoreapp2.2
+ IISForwardsCompatibility.FunctionalTests
+ True
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/IIS.FunctionalTests/DeployerSelector.cs b/test/IIS.FunctionalTests/DeployerSelector.cs
index 2359de7226..f2e1be321e 100644
--- a/test/IIS.FunctionalTests/DeployerSelector.cs
+++ b/test/IIS.FunctionalTests/DeployerSelector.cs
@@ -9,5 +9,6 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
{
public static ServerType ServerType => ServerType.IIS;
public static bool IsBackwardsCompatiblityTest => false;
+ public static bool IsForwardsCompatibilityTest => false;
}
}
diff --git a/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj b/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj
index 47c316f65a..62dec62e60 100644
--- a/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj
+++ b/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj
@@ -43,14 +43,4 @@
-
-
-
-
-
-
- PreserveNewest
-
-
-
diff --git a/test/IISExpress.FunctionalTests/DeployerSelector.cs b/test/IISExpress.FunctionalTests/DeployerSelector.cs
index c21900e0fb..ba6a1ec6e2 100644
--- a/test/IISExpress.FunctionalTests/DeployerSelector.cs
+++ b/test/IISExpress.FunctionalTests/DeployerSelector.cs
@@ -9,5 +9,6 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
{
public static ServerType ServerType => ServerType.IISExpress;
public static bool IsBackwardsCompatiblityTest => false;
+ public static bool IsForwardsCompatibilityTest => false;
}
}
diff --git a/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj b/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj
index ff8fd55afb..988c2d5943 100644
--- a/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj
+++ b/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj
@@ -35,14 +35,4 @@
-
-
-
-
-
-
- PreserveNewest
-
-
-
diff --git a/test/IISExpress.FunctionalTests/RequiresNewShim.cs b/test/IISExpress.FunctionalTests/RequiresNewShim.cs
deleted file mode 100644
index a43e9b8da7..0000000000
--- a/test/IISExpress.FunctionalTests/RequiresNewShim.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-using Microsoft.AspNetCore.Server.IntegrationTesting;
-using Microsoft.AspNetCore.Testing.xunit;
-
-namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
-{
- [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
- public sealed class RequiresNewShimAttribute : Attribute, ITestCondition
- {
- public bool IsMet => true;
-
- public string SkipReason => "IISExpress.FunctionalTests always run against new shim.";
- }
-}
diff --git a/test/WebSites/InProcessForwardsCompatWebSite/InProcessWebSite.csproj b/test/WebSites/InProcessForwardsCompatWebSite/InProcessWebSite.csproj
new file mode 100644
index 0000000000..f15a90bfd3
--- /dev/null
+++ b/test/WebSites/InProcessForwardsCompatWebSite/InProcessWebSite.csproj
@@ -0,0 +1,32 @@
+
+
+
+
+
+ netcoreapp2.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/WebSites/InProcessForwardsCompatWebSite/Properties/launchSettings.json b/test/WebSites/InProcessForwardsCompatWebSite/Properties/launchSettings.json
new file mode 100644
index 0000000000..246b7a0b47
--- /dev/null
+++ b/test/WebSites/InProcessForwardsCompatWebSite/Properties/launchSettings.json
@@ -0,0 +1,42 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": true,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:5762/",
+ "sslPort": 0
+ }
+ },
+ "profiles": {
+ "ANCM IIS Express": {
+ "commandName": "Executable",
+ "executablePath": "$(IISExpressPath)",
+ "commandLineArgs": "$(IISExpressArguments)",
+ "environmentVariables": {
+ "IIS_SITE_PATH": "$(MSBuildThisFileDirectory)",
+ "ANCM_PATH": "$(AspNetCoreModuleV1ShimDll)",
+ "ANCMV2_PATH": "$(AspNetCoreModuleV2ShimDll)",
+ "ANCM_OUTOFPROCESS_HANDLER": "$(AspNetCoreModuleV2OutOfProcessHandlerDll)",
+ "LAUNCHER_ARGS": "$(TargetPath)",
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "LAUNCHER_PATH": "$(DotNetPath)",
+ "ASPNETCORE_MODULE_DEBUG": "console"
+ }
+ },
+ "ANCM IIS": {
+ "commandName": "Executable",
+ "executablePath": "$(IISPath)",
+ "commandLineArgs": "$(IISArguments)",
+ "environmentVariables": {
+ "IIS_SITE_PATH": "$(MSBuildThisFileDirectory)",
+ "ANCM_PATH": "$(AspNetCoreModuleV1ShimDll)",
+ "ANCMV2_PATH": "$(AspNetCoreModuleV2ShimDll)",
+ "ASPNETCORE_MODULE_OUTOFPROCESS_HANDLER": "$(AspNetCoreModuleV2OutOfProcessHandlerDll)",
+ "LAUNCHER_ARGS": "$(TargetPath)",
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "LAUNCHER_PATH": "$(DotNetPath)",
+ "ASPNETCORE_MODULE_DEBUG": "console"
+ }
+ }
+ }
+}