Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add interface pin, split IConfiguration to be non-breaking #919

Merged
merged 1 commit into from
Feb 4, 2025

Conversation

DaveTryon
Copy link
Contributor

@DaveTryon DaveTryon commented Feb 4, 2025

This PR started by adding the InterfaceConcretionTests class, which includes concrete versions of all of the interfaces that I was able to identify as being exposed in the 3.0.1 version of the API. Ideally, these should also cover the data types that are in the API interface, but that's for another PR. These interface versions were based on the commit that shipped in release 3.0.1, then added to the current bits in main--the PinnedIConfiguration class broke, which is what flagged the fact that we had accidentally broken the IConfiguration class in #773, which added the LicenseInformationTimeoutInSeconds property to the IConfiguration interface.

The proposed fix is to move the new LicenseInformationTimeoutInSeconds property into the IConfiguration2 interface, which derives from IConfiguration. It then makes the InputConfiguration class derive from IConfiguration2 and updates the usages of LicenseInformationTimeoutInSeconds so that we get there via the IConfiguration2 interface.

@DaveTryon DaveTryon requested a review from a team as a code owner February 4, 2025 07:31
Copy link

github-actions bot commented Feb 4, 2025

This PR changes files in the API project. Does it change any of the API interfaces in any way? Please note that this includes the following types of changes:

  • Changing the signature of an existing interface method
  • Adding a new method to an existing interface
  • Adding a required data member to a class that an existing interface method consumes

Because any of these changes can potentially break a downstream consumer with customized interface implementations, these changes need to be treated as breaking changes. Please do one of the following:

Option 1 - Publish this as a breaking change

  1. Update the documentation to show the new functionality
  2. Bump the major version in the next release
  3. Be sure to highlight the breaking changes in the release notes

Option 2 - Refactor the changes to be non-breaking

  1. Review this commit, which adds a new interface in a backward-compatible way
  2. Refactor the change to follow this pattern so that existing interfaces are left completely intact
  3. Bump the minor version in the next release

@DaveTryon
Copy link
Contributor Author

/azp run

@sfoslund sfoslund merged commit c6c54df into main Feb 4, 2025
5 checks passed
@sfoslund sfoslund deleted the DaveTryon/add-interface-pins branch February 4, 2025 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants