Add temporary workarounds for aspnet/External#50 and aspnet/Mvc#3587

This commit is contained in:
Doug Bunting 2015-11-19 14:19:20 -08:00
parent d6bda0ec11
commit 79d74127b9
9 changed files with 180 additions and 10 deletions

View File

@ -7,6 +7,7 @@ using Microsoft.AspNet.Http.Internal;
using Microsoft.AspNet.Mvc.Abstractions;
using Microsoft.AspNet.Mvc.Filters;
using Microsoft.AspNet.Routing;
using Microsoft.AspNet.Testing;
using Xunit;
namespace Microsoft.AspNet.Mvc
@ -44,8 +45,13 @@ namespace Microsoft.AspNet.Mvc
data.Add("localhost", "/pathbase", "/path", "?foo=bar", "https://localhost/pathbase/path?foo=bar");
// Encode some special characters on the url.
data.Add("localhost", "/path?base", null, null, "https://localhost/path%3Fbase");
data.Add("localhost", null, "/pa?th", null, "https://localhost/pa%3Fth");
// Two paths hit aspnet/External#50 with Mono on Mac.
if (!TestPlatformHelper.IsMac || !TestPlatformHelper.IsMono)
{
data.Add("localhost", "/path?base", null, null, "https://localhost/path%3Fbase");
data.Add("localhost", null, "/pa?th", null, "https://localhost/pa%3Fth");
}
data.Add("localhost", "/", null, "?foo=bar%2Fbaz", "https://localhost/?foo=bar%2Fbaz");
// Urls with punycode

View File

@ -5,6 +5,9 @@ using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
#if !DNXCORE50
using Microsoft.AspNet.Testing.xunit;
#endif
using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
@ -21,7 +24,12 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
public HttpClient Client { get; }
#if DNXCORE50
[Theory]
#else
[ConditionalTheory]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/Mvc#3587")]
#endif
[InlineData("CompilationFailure", "Cannot implicitly convert type 'int' to 'string'")]
[InlineData("ParserError", "The code block is missing a closing "}" character. Make sure you " +
"have a matching "}" character for all the "{" characters " +

View File

@ -8,6 +8,7 @@ using System.Net.Http;
using System.Net.Http.Headers;
using System.Reflection;
using System.Threading.Tasks;
using Microsoft.AspNet.Testing;
using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
@ -34,7 +35,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
{
get
{
return new TheoryData<string, string>
var data = new TheoryData<string, string>
{
{ "Customer", "/Customer/HtmlGeneration_Customer" },
{ "Index", null },
@ -62,9 +63,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
{ "OrderUsingHtmlHelpers", "/HtmlGeneration_Order/Submit" },
// Testing InputTagHelpers invoked in the partial views
{ "ProductList", null },
// Testing the ScriptTagHelper
{ "Script", null },
};
// One path hits aspnet/External#50 with Mono on Mac.
if (!TestPlatformHelper.IsMac || !TestPlatformHelper.IsMono)
{
// Testing the ScriptTagHelper
data.Add("Script", null);
}
return data;
}
}

View File

@ -4,6 +4,7 @@
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNet.Testing;
using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
@ -21,10 +22,8 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
{
get
{
return new TheoryData<string>
var data = new TheoryData<string>
{
string.Empty,
"/",
"/Home/Create",
"/Home/Create?Name=Billy&Blurb=hello&DateOfBirth=2000-11-30&YearsEmployeed=0",
"/Home/Create",
@ -35,8 +34,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
"/Home/Edit/1?Name=Jack&Blurb=goodbye&DateOfBirth=1979-10-20&YearsEmployeed=4",
"/Home/Edit/0",
"/Home/Edit/0?Name=Bobby&Blurb=howdy&DateOfBirth=1999-11-30&YearsEmployeed=2",
"/Home/Index",
};
// Three paths hit aspnet/External#50 with Mono on Mac.
if (!TestPlatformHelper.IsMac || !TestPlatformHelper.IsMono)
{
data.Add(string.Empty);
data.Add("/");
data.Add("/Home/Index");
}
return data;
}
}

View File

@ -8,6 +8,9 @@ using System.Threading.Tasks;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc.Abstractions;
using Microsoft.AspNet.Mvc.ModelBinding;
#if !DNXCORE50
using Microsoft.AspNet.Testing.xunit;
#endif
using Xunit;
namespace Microsoft.AspNet.Mvc.IntegrationTests
@ -29,7 +32,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public List<Address> Address { get; }
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task ActionParameter_NonSettableCollectionModel_EmptyPrefix_GetsBound()
{
// Arrange
@ -76,7 +84,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public CustomReadOnlyCollection<Address> Address { get; set; }
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task ActionParameter_ReadOnlyCollectionModel_EmptyPrefix_DoesNotGetBound()
{
// Arrange
@ -123,7 +136,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public Address[] Address { get; set; }
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task ActionParameter_SettableArrayModel_EmptyPrefix_GetsBound()
{
// Arrange
@ -170,7 +188,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public Address[] Address { get; } = new Address[] { };
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task ActionParameter_NonSettableArrayModel_EmptyPrefix_DoesNotGetBound()
{
// Arrange
@ -206,7 +229,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Empty(modelState.Keys);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task ActionParameter_NonSettableCollectionModel_WithPrefix_GetsBound()
{
// Arrange
@ -251,7 +279,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal(ModelValidationState.Valid, modelState[key].ValidationState);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task ActionParameter_ReadOnlyCollectionModel_WithPrefix_DoesNotGetBound()
{
// Arrange
@ -297,7 +330,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal("SomeStreet", state.RawValue);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task ActionParameter_SettableArrayModel_WithPrefix_GetsBound()
{
// Arrange
@ -342,7 +380,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal(ModelValidationState.Valid, modelState[key].ValidationState);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task ActionParameter_NonSettableArrayModel_WithPrefix_DoesNotGetBound()
{
// Arrange
@ -366,7 +409,7 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
// Act
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, modelState, operationContext);
// Assert
Assert.True(modelBindingResult.IsModelSet);

View File

@ -6,6 +6,9 @@ using System.Threading.Tasks;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc.Abstractions;
using Microsoft.AspNet.Mvc.ModelBinding;
#if !DNXCORE50
using Microsoft.AspNet.Testing.xunit;
#endif
using Xunit;
namespace Microsoft.AspNet.Mvc.IntegrationTests
@ -17,7 +20,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public byte[] Token { get; set; }
}
#if DNXCORE50
[Theory]
#else
[ConditionalTheory]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
[InlineData(true)]
[InlineData(false)]
public async Task BindProperty_WithData_GetsBound(bool fallBackScenario)

View File

@ -11,6 +11,9 @@ using Microsoft.AspNet.Http.Internal;
using Microsoft.AspNet.Mvc.Abstractions;
using Microsoft.AspNet.Mvc.Controllers;
using Microsoft.AspNet.Mvc.ModelBinding;
#if !DNXCORE50
using Microsoft.AspNet.Testing.xunit;
#endif
using Microsoft.Extensions.Primitives;
using Xunit;
@ -247,7 +250,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal("The value 'abcd' is not valid for Int32.", error.ErrorMessage);
}
#if DNXCORE50
[Theory]
#else
[ConditionalTheory]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
[InlineData(typeof(int))]
[InlineData(typeof(bool))]
public async Task BindParameter_WithEmptyData_DoesNotBind(Type parameterType)

View File

@ -6,6 +6,9 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc.ModelBinding;
#if !DNXCORE50
using Microsoft.AspNet.Testing.xunit;
#endif
using Xunit;
namespace Microsoft.AspNet.Mvc.IntegrationTests
@ -100,7 +103,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public Address Address { get; set; }
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_TopLevelCollection_EmptyPrefix_BindsAfterClearing()
{
// Arrange
@ -208,7 +216,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public List<Address> Address { get; set; }
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_SettableCollectionModel_EmptyPrefix_CreatesCollection()
{
// Arrange
@ -244,7 +257,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal(ModelValidationState.Valid, state.ValidationState);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_SettableCollectionModel_EmptyPrefix_MaintainsCollectionIfNonNull()
{
// Arrange
@ -295,7 +313,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public List<Address> Address { get; }
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_NonSettableCollectionModel_EmptyPrefix_GetsBound()
{
// Arrange
@ -389,7 +412,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public Address[] Address { get; set; }
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_SettableArrayModel_EmptyPrefix_CreatesArray()
{
// Arrange
@ -425,7 +453,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal(ModelValidationState.Valid, state.ValidationState);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_SettableArrayModel_EmptyPrefix_OverwritesArray()
{
// Arrange
@ -478,7 +511,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public Address[] Address { get; } = new Address[] { };
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_NonSettableArrayModel_EmptyPrefix_GetsBound()
{
// Arrange
@ -582,7 +620,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal(ModelValidationState.Valid, state.ValidationState);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_TopLevelCollection_WithPrefix_BindsAfterClearing()
{
// Arrange
@ -685,7 +728,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal(ModelValidationState.Valid, state.ValidationState);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_SettableCollectionModel_WithPrefix_CreatesCollection()
{
// Arrange
@ -721,7 +769,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal(ModelValidationState.Valid, state.ValidationState);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_SettableCollectionModel_WithPrefix_MaintainsCollectionIfNonNull()
{
// Arrange
@ -762,7 +815,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal(ModelValidationState.Valid, state.ValidationState);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_NonSettableCollectionModel_WithPrefix_GetsBound()
{
// Arrange
@ -846,7 +904,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal("SomeStreet", state.RawValue);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_SettableArrayModel_WithPrefix_CreatesArray()
{
// Arrange
@ -882,7 +945,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal(ModelValidationState.Valid, state.ValidationState);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_SettableArrayModel_WithPrefix_OverwritesArray()
{
// Arrange
@ -930,7 +998,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
Assert.Equal(ModelValidationState.Valid, state.ValidationState);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public async Task TryUpdateModel_NonSettableArrayModel_WithPrefix_GetsBound()
{
// Arrange

View File

@ -5,6 +5,9 @@ using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewComponents;
using Microsoft.AspNet.Mvc.ViewFeatures;
#if !DNXCORE50
using Microsoft.AspNet.Testing.xunit;
#endif
using Xunit;
namespace Microsoft.AspNet.Mvc
@ -43,7 +46,12 @@ namespace Microsoft.AspNet.Mvc
Assert.Equal("Bob", viewComponent.ViewBag.B);
}
#if DNXCORE50
[Fact]
#else
[ConditionalFact]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "aspnet/External#50")]
#endif
public void ViewComponent_Content_SetsResultContentAndEncodedContent()
{
// Arrange