Identity: Reenable API check

Created on 20 Apr 2017  Â·  23Comments  Â·  Source: aspnet/Identity

disabled to unblock build to get Auth 2.0 build unblocked

3 - Done Tracking task

Most helpful comment

Cool, let me just double check on why we did this, I vaguely remember there might have been a customer ask for this, I want to make sure it wasn't accidental before updating the baselines

All 23 comments

Revert 2b343726897b2cece524537d56aea4c80ac265bd and update baseline

@HaoK / @ajcvickers - needed for preview2, or revisit in 2.1.0-rc1? @ryanbrandenburg - does your work with ApiCheck cover everything here anyway?

@ryanbrandenburg already updated the baselines, so I think we just need to turn EnableApiCheck on again...I'll do that today and hopefully nothing fails :)

@ryanbrandenburg @javiercn what do we want to do about the ui package, should we wait until closer to rtm to generate baselines + enable api check for this since its new in 2.1?

I think the new packages, such as the UI ones, should get empty baselines.

(That way we know it needs to be checked, but there will be no breaking changes detected, because everything is an 'add'.)

So getting one breaking change with constants moving from protected to public...

 public class Microsoft.AspNetCore.Identity.UserManager<T0> : System.IDisposable where T0 : class
      protected const System.String ChangePhoneNumberTokenPurpose = "ChangePhoneNumber"
      protected const System.String ConfirmEmailTokenPurpose = "EmailConfirmation"
      protected const System.String ResetPasswordTokenPurpose = "ResetPassword"

Following is the list of exclusions that either need to be added to the list of breaking changes, or the breaking changes themselves need to be reverted:
[
{
"TypeId": "public class Microsoft.AspNetCore.Identity.UserManager : System.IDisposable where T0 : class",
"MemberId": "protected const System.String ChangePhoneNumberTokenPurpose = \"ChangePhoneNumber\"",
"Kind": "Removal"
},
{
"TypeId": "public class Microsoft.AspNetCore.Identity.UserManager : System.IDisposable where T0 : class",
"MemberId": "protected const System.String ConfirmEmailTokenPurpose = \"EmailConfirmation\"",
"Kind": "Removal"
},
{
"TypeId": "public class Microsoft.AspNetCore.Identity.UserManager : System.IDisposable where T0 : class",
"MemberId": "protected const System.String ResetPasswordTokenPurpose = \"ResetPassword\"",
"Kind": "Removal"
}
]

@Eilon don't we still have to do an update to add the final 2.1 shape? I mean I guess it doesn't hurt to turn it on with an empty baseline, but that's basically just having it no-op instead of waiting to turning it on when we actually want it to do something? I'll file a separate issue for tracking the 2.1 final baseline update to UI since we need that regardless

Re: The existing breaking changes. I would vote to avoid the breaking change, because it doesn't seem worthwhile. But please work with the mgr/PM to resolve it one way or another.

We will update to the final 2.1 shape after we ship 2.1. I don't think we need https://github.com/aspnet/Identity/issues/1712 to track it because it will be a bulk update of all baselines. (That's why we want the empty baselines - so we know what to update.)

Ok cool, bulk update will be nice, I'll add empty baselines as part of the PR reenabling the checks

Is making a constant public from protected really considered a breaking change? We increased the visibility here...

Ah, you know what, maybe it isn't.

https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/breaking-change-rules.md#members

Members
✓ Allowed

...

Increasing the visibility of a member that is not virtual

So these are fine - just add the breaking change exceptions and then I think log a bug in the BuildTools repo to improve ApiCheck's behavior.

Cool, let me just double check on why we did this, I vaguely remember there might have been a customer ask for this, I want to make sure it wasn't accidental before updating the baselines

Ok updating the baselines, we did this as part of https://github.com/aspnet/Identity/issues/1325

@Eilon I had an idea for this actually.
For new projects we can have a property
<ApiCheckVersionThreshold>
If the assembly we are producing has <= than the version, we don't run API check.
Once the Version goes higher, we run it and fail/produce warnings because there's no baseline.

I don't like having empty baselines because it silently disables the tool.

I thought empty baselines are fine because the tool will run, but will always pass. Then when we finish 2.1.0 and start on 2.2.0 we will update all the existing baselines (even if empty) to 2.1.0-RTM.

I thought empty baselines are fine because the tool will run, but will always pass

That's why it silently disables the tool. If we update the baselines when we release 2.1 then sure, but we need to do that.

Yes we have to do that anyway for every repo.

Empty baselines seems like the way to go to me as well. If we don't update baselines after releases we will have more problems than just this.

c7711c2515c22be25f615eca60ab3348c9ffbd47

Was this page helpful?
0 / 5 - 0 ratings