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

v4: Only permit integration through API methods exposed through nunit.engine.api #886

Open
ChrisMaddock opened this issue Jan 30, 2021 · 3 comments
Assignees
Labels
Breaking Change V4 All issues related to V4 - use -label:V4 to get non-V4 issues
Milestone

Comments

@ChrisMaddock
Copy link
Member

We've faced various issues in v3 with it being unclear which public exposed methods are intended to be supported as interfaces. This leads to unexpected breaking changes for runners maintainers, and also lost time in trying to support interactivity with the engine through a range of unsupported methods.

For v4, I suggest we make only the methods in nunit.engine.api.dll publicly accessible. To do this, we would make methods internal in the other assemblies, and use InternalsVisibleTo to allow interaction between different assemblies.

@CharliePoole
Copy link
Member

Minor thing: I'd add "or any other API assemblies we decide we need."

@CharliePoole
Copy link
Member

We've made the basic decision: only API methods are guaranteed to remain stable. It remains to make current public methods internal or otherwise inaccessible to the greatest extent possible.

@CharliePoole CharliePoole modified the milestones: 4.0, 4.0.0-beta.1 Dec 29, 2024
@CharliePoole CharliePoole added the V4 All issues related to V4 - use -label:V4 to get non-V4 issues label Feb 1, 2025
@CharliePoole CharliePoole self-assigned this Feb 5, 2025
@CharliePoole
Copy link
Member

@nunit/engine-team

Excluding test and testdata assemblies, The following projects need to be reviewed and fixed as necessary. They are listed in top-down order, which is probably the easiest way to deal with them.

I also excluded the agent projects, since they are about to disappear, becoming separately maintained pluggable agent extensions. For that reason, anything needed by the agents from nunit.agent.core should remain public.

  • nunit4-console
  • nunit4-netcore-console
  • nunit.engine
  • nunit.agent.core
  • nunit.extensibility
  • nunit.common

If you have time to do one of these tasks, please edit to put your name or GitHub id on the same line, like this (@CharliePoole) or this (Charlie).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Breaking Change V4 All issues related to V4 - use -label:V4 to get non-V4 issues
Projects
None yet
Development

No branches or pull requests

2 participants